标签:font mamicode bsp 三次握手 ima 实现 自己 四次挥手 idt
传输层实现可靠会话的协议TCP协议
Q:如何建立连接?为什么要这样 建立连接?
A:通过发送TCP报文的方式实现建立连接,其中共需要三次“握手”
为什么需要三次握手来建立连接:这和TCP报文的设计有关
每个报文只能包含一个ACK一个SYN和一个FIN标志位,
(1)A给B发送 {SYN=1(我想建立连接),seq=x(用以标识A的请求)},
(2)B收到后回复A {SYN=1(我也想建立连接),ACK=1(我刚确认了一个请求),ack=x+1(我确认的是A的请求),seq=y(同样用于标识B此次的请求)},
(3)A再次给B发送 {ACK=1(我刚才也确认了一个请求),seq=x+1(我是A),ack=y+1(我确认的是B的请求)}
Q:如何断开连接?为什么采用这种方式断开连接?
A:同样是通过发送TCP报文的方式断开连接,但是断开连接需要四次“挥手”
为什么需要四次“挥手”呢?从两部分说,A、B都需要告诉对方此次会话可以结束了并且都需要告诉对方自己已经结束了:
(1)A发送给B {FIN=1(你可以断开连接了),seq=u(用于标识A的请求)}
(2)B回复A {ACK=1(那我就断开了),seq=v,ack=u+1(我断开的是A的请求)}--------此时是半断开状态
(3)B发送给A {FIN=1(你也可以断开连接了),ACK=1(我刚才已经断开了一个连接),ack=u+1(我断开的是A的连接),seq=w(用于表示B的请求)}
(4)A回复B {ACK=1(我刚才也断开了连接),ack=w+1(我断开的是B的链接),seq=u+1(我是A)}
最终双方都断开了链接并且告诉对方自己已经断开了连接。
标签:font mamicode bsp 三次握手 ima 实现 自己 四次挥手 idt
原文地址:https://www.cnblogs.com/mitoohi/p/12274821.html