关于三次握手,四次挥手

TCP建立连接的过程-----------三次握手

建立一个双向链接的过程(建立一个A----->B的会话,再建立一个B----->A的会话)

关于三次握手,四次挥手_第1张图片

A先给B发信息,请求建立连接(SYN--请求标记位  置1) ----B收到A的“请求建立连接”包,给A回消息,ACK确认标记位  置1。---------A----->B的会话建立。

B先给A发消息,请求建立连接(SYN---请求标记位  置1)----A收到B的“请求建立连接”包,给B回消息,ACK确认标记位  置1.----------B----->A的会话建立。

三次握手---B给A回消息的同时(ACK置1)SYN置1

关于三次握手,四次挥手_第2张图片

完成TCP建立连接的过程 

加序号

关于三次握手,四次挥手_第3张图片

 A先给B发信息,初始序号是随机值----Seq=x

B收到A的“请求建立连接”包,1.给A回消息(ACK=1)--------ACK No.=x+1

                                              2.请求建立连接(SYN=1)------Seq =y

A收到B的“请求建立连接”包,1.给B回消息(ACK=1)----------ACK No. =y+1       

B希望A将x+1的数据包发回去-----------Seq=x+1

TCP断开连接的过程--------四次挥手(考虑到两边是否扔完数据)

关于三次握手,四次挥手_第4张图片

A想跟B结束会话,FIN(结束标记位)置1

B收到A的请求,ACK置1

B想跟A结束会话,FIN=1

A收到B的请求,ACK=1

(该过程需要4个数据包--------四次挥手)

至此,TCP连接过程断开

PS:三次握手中,ACK和SYN合并到一个包中--------没有牵扯到任何数据(连接未建立之前)

                        但是连接一旦建立,会牵扯到收发数据

                        A和B的数据不同,假设A少B多,A先将数据传完-------可断开连接

                        A断开连接后,B的数据没传完------B不能断开与A的连接

                        B确认自己的数据发完后才会发FIN包

                        A回一个ACK包--------彻底断开连接

特例(真实情况下):1.若AB数据相同,那么四次挥手可能看到三次挥手,将ACK与FIN合到一  起发包

                                    2.两次挥手-------A给B发消息并断开,看不到B给A发消息并断开------B的数据一直没发完

                                        3.一次挥手------A给B发消息,B不回消息--------超时,自动断开

你可能感兴趣的:(linux,运维,服务器)