网络与部署 | 青训营笔记

69 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天

今天我学习了青训营内部课程的网络与部署课程,我了解了下计算机网络

对于我们后端开发来说,网络最重要的就是tcp/ip

这里我总结了下我学到的tcp的知识点

网络分层模型

OSI制定的理论的模型,7层

TCP/IP四层模型,基于OSI建立的实际实现的模型

TCP三次握手与四次挥手

握手与挥手就是建立连接与断开连接分别进行的过程

3次握手

握手就是发送3次数据,客户端向服务端发送(保证客户端的发送没有问题),然后服务端发送回客户端(服务端的接收能力没有问题,已经服务端的发送也没问题),客户端再发送(表示客户端的读取和接收能力也没问题)

三次握手来确认客户端和服务端的发送能力和接收能力都没问题

4次挥手

客户端会先发送一个finish包给服务端代表不会再写数据了,服务器接收到了告诉客户端知道要断开连接了,但是服务端还有数据要先发完,发完之后才发一个finish包表示服务端也不发送数据了

所以挥手服务端要发两次就是因为还要发送一些数据的

编辑

HTTP协议

​编辑

HTTPS

HTTP所有数据都是明文的,不能包装数据的安全性

HTTPS是运行在TLS协议上的安全的HTTP协议

​编辑

SSL是Netscape公司设计的,后面公司倒闭了,但是这个协议很好

后来由互联网标准化组织isoc替代netscape法布施ssl升级版TLS

SSL本质就是用来加解密的,这个加解密的过程就是SSL握手

三次握手为什么不能是两次

以三个方面分析三次握手的原因:

  • 三次握手才可以阻止重复历史连接的初始化(主要原因)
  • 三次握手才可以同步双方的初始序列号
  • 三次握手才可以避免资源浪费

避免历史连接

三次握手的首要原因是为了防止旧的重复连接初始化造成混乱。

我们考虑一个场景,客户端先发送了 SYN(seq = 90)报文,然后客户端宕机了,而且这个 SYN 报文还被网络阻塞了,服务端并没有收到,接着客户端重启后,又重新向服务端建立连接,发送了 SYN(seq = 100)报文(

注意!不是重传 SYN,重传的 SYN 的序列号是一样的

)。

看看三次握手是如何阻止历史连接的:

三次握手避免历史连接​编辑

  1. 一个「旧 SYN 报文」比「最新的 SYN」 报文早到达了服务端,那么此时服务端就会回一个 SYN + ACK 报文给客户端,此报文中的确认号是 91(90+1)。
  2. 客户端收到后,发现自己期望收到的确认号应该是 100 + 1,而不是 90 + 1,于是就会回 RST 报文。
  3. 服务端收到 RST 报文后,就会释放连接。
  4. 后续最新的 SYN 抵达了服务端后,客户端与服务端就可以正常的完成三次握手了。