网络Android开发经验谈Android开发

TCP 三次握手和四次挥手

2017-07-09  本文已影响72人  麦兜叮叮当

对tcp三次握手和四次挥手做个笔记。

先来张配图(图片来自于网络)

0_131271823564Rx.gif.jpeg

TCP三次握手

所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。


100327002629.png

1.第一次握手客户端主动,发送SYN标志报文,相当于通知服务器:我想连接你,不知可否。
2.第二次握手服务器主动,返回确认包ACK标志报文。相当于服务器反馈客户端:可以,你连接吧。
3.第三次握手客户端主动,再次发送报文 - ACK标志报文,告诉服务器:好嘞,我这就开始连接。

三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。

TCP四次挥手

TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。


100327022731.jpg

关闭TCP连接,任意一方均可主动。
假设客户端主动:
1.第一次挥手,客户端发送FIN标志+ACK标志报文,通知服务器如果没有数据了我想关闭连接。
2.第二次挥手,服务器发送ACK标志报文,客户端收到报文之后等待服务器的关闭通知,相当于服务器告诉客户端:稍等一下,容我检查检查。
3.第三次挥手,服务器发送关闭通知 - FIN标志+ACK标志报文,告诉客户端:OK,关闭吧没啥事了。
4.第四次挥手,客户端收到关闭通知,给服务器发送反馈ACK标志报文,告诉服务器:OK,我关了哈,下次再见。

结束。

笔者能力有限,不足之处欢迎指出!

上一篇 下一篇

猜你喜欢

热点阅读