@wyjgd
2019-09-08T14:47:01.000000Z
字数 1092
阅读 805
有限状态机
CLOSED:没有任何连接状态
LISTEN:侦听状态,等待来自TCP端口的连接请求
SYN-SENT:在发送连接请求后,等待对方确认
SYN-RECEIVED:在收到和发送一个连接请求后,等待对方确认
ESTABLISHED:代表传输连接建立,双方进入数据传送状态
FIN-WAIT-1:主动关闭,主机已发送关闭连接请求,等待对方确认
FIN-WAIT-2:主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
TIME-WAIT:完成双向传输连接关闭,等待所有分组消失
CLOSE-WAIT:被动关闭,收到对方发来的关闭连接请求,并已确认
LAST-ACK:被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
CLOSING:双方同时尝试关闭传输连接,等待对方确认
TCP连接的建立是一个三次握手的过程,目的是为了通信双方确认开始序号,利于后续通信有序进行
连接开始时,客户端发送SYN包,并包含了自己的初始序号x
服务端收到SYN包以后,会回复一个SYN包,其中包含了对上一个x包的回应信息ACK,回应的序号为下一个希望收到包的序号,即x+1,并且还包含了自己的初始序号y
客户端收到回应的SYN包后,回复一个ACK包做响应,其中包含了下一个希望收到包的序号即y+1
第三次握手原因:避免已经失效的连接请求报文段占用服务器端的连接资源,第三次握手能保证服务器连接资源不会被闲置
TCP断开连接四次握手过程,断开——确认——断开——确认
主动方执行主动关闭时,向被动方发送一个结束报文段,同时连接进入FIN_WAIT_1状态。
被动方接收到FIN后,发送一个ACK给客户端,确认序号为收到的序号+1,被动方进入CLOSE_WAIT状态。主动方收到后进入FIN_WAIT_2状态。
当被动方没有数据要发送时,发送一个FIN报文,此时服务器进入LAST_ACK状态,等待主动方的确认
主动方收到服务器的FIN报文后,给被动方发送一个ACK报文,确认序列号为收到的序号+1。此时主动方进入TIME_WAIT状态,等待2MSL(MSL:报文段最大生存时间),然后关闭连接。
半关闭状态下,主动方没有数据要发送,被动方发送数据,主动方仍旧要接收
1、工作在传输层
2、面向连接
3、全双工协议
4、半关闭
5、错误检查
6、数据打包成段,排序
7、确认机制
8、数据恢复重传
9、流量控制,滑动窗口
10、拥塞控制,慢启动和拥塞避免算法
1、工作在传输层
2、提供不可靠的网络访问
3、非面向连接
4、有限的错误检查
5、传输性能高
6、无法数据恢复
7、无序