李成石

导航

 

下班回家路上,说起TCP,简直汗颜。虽然好久前,看过TCP,但是原生的还是觉得一来一回算是一次握手,真是汗颜。

三次握手

 

 使用wireshark分析如下:

三次握手,主要为了客户端和服务端都要对传输报文确认。

 第一次握手:客户端发送 SYN包 (syn=1, seq=x )到服务端

 第二次握手:服务端接收SYN 包并确认ack=x+1,并同时发送一个 SYN(y=k)包到客户端, 即SYN+ACK包

 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1), 并建立连接

为什么不两次握手?

防止失效的连接请求报文段突然又传送到服务端,建立打量无效的连接,使服务端崩溃。

四次挥手

 

四次挥手:

    第一次挥手: 客户端发送 FIN包(seq=x) 到服务端

    第二次挥手: 服务端接收到FIN包,发送ACK(seq=x=1), 客户端等待服务端终止

    第三次挥手:服务端终止后,发送FIN(seq=y)给客户端

    第四次挥手:客户端接收到FIN后,发送确认ACK(seq=y+1)

为什么不是三次挥手(和握手一样,第二次和第三次一起发送) ?

   主要是等待服务器停止,可能还在处理某些请求

posted on 2020-03-12 22:35  李成石  阅读(122)  评论(0编辑  收藏  举报