[关闭]
@wyjgd 2019-09-08T14:47:01.000000Z 字数 1092 阅读 805

TCP连接


TCP三次握手四次挥手

有限状态机

  1. CLOSED:没有任何连接状态
  2. LISTEN:侦听状态,等待来自TCP端口的连接请求
  3. SYN-SENT:在发送连接请求后,等待对方确认
  4. SYN-RECEIVED:在收到和发送一个连接请求后,等待对方确认
  5. ESTABLISHED:代表传输连接建立,双方进入数据传送状态
  6. FIN-WAIT-1:主动关闭,主机已发送关闭连接请求,等待对方确认
  7. FIN-WAIT-2:主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
  8. TIME-WAIT:完成双向传输连接关闭,等待所有分组消失
  9. CLOSE-WAIT:被动关闭,收到对方发来的关闭连接请求,并已确认
  10. LAST-ACK:被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
  11. CLOSING:双方同时尝试关闭传输连接,等待对方确认

TCP连接的建立是一个三次握手的过程,目的是为了通信双方确认开始序号,利于后续通信有序进行
image.png-204.7kB

  1. 连接开始时,客户端发送SYN包,并包含了自己的初始序号x
  2. 服务端收到SYN包以后,会回复一个SYN包,其中包含了对上一个x包的回应信息ACK,回应的序号为下一个希望收到包的序号,即x+1,并且还包含了自己的初始序号y
  3. 客户端收到回应的SYN包后,回复一个ACK包做响应,其中包含了下一个希望收到包的序号即y+1
  4. 第三次握手原因:避免已经失效的连接请求报文段占用服务器端的连接资源,第三次握手能保证服务器连接资源不会被闲置

TCP断开连接四次握手过程,断开——确认——断开——确认

  1. 主动方执行主动关闭时,向被动方发送一个结束报文段,同时连接进入FIN_WAIT_1状态。
  2. 被动方接收到FIN后,发送一个ACK给客户端,确认序号为收到的序号+1,被动方进入CLOSE_WAIT状态。主动方收到后进入FIN_WAIT_2状态。
  3. 当被动方没有数据要发送时,发送一个FIN报文,此时服务器进入LAST_ACK状态,等待主动方的确认
  4. 主动方收到服务器的FIN报文后,给被动方发送一个ACK报文,确认序列号为收到的序号+1。此时主动方进入TIME_WAIT状态,等待2MSLMSL:报文段最大生存时间),然后关闭连接。
  5. 半关闭状态下,主动方没有数据要发送,被动方发送数据,主动方仍旧要接收

image.png-292.2kB

TCP与UDP区别

TCP特性

1、工作在传输层
2、面向连接
3、全双工协议
4、半关闭
5、错误检查
6、数据打包成段,排序
7、确认机制
8、数据恢复重传
9、流量控制,滑动窗口
10、拥塞控制,慢启动和拥塞避免算法

UDP特性

1、工作在传输层
2、提供不可靠的网络访问
3、非面向连接
4、有限的错误检查
5、传输性能高
6、无法数据恢复
7、无序
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注