TCP协议的三次握手和四次挥手
tcp协议都不陌生,但是真正能说清楚的人并不多。建立连接的时候三次握手都在干什么呢?为什么是三次握手,不是两次,四次呢?断开连接的时候为什么需要四次挥手,比建立时多一次交互呢?
三次握手过程的简单描述
三次握手也就是TCP连接建立的过程。众所周知,计算机网络中是没有真正的物理上的连接的,tcp协议点对点通信,需要建立一个逻辑上的连接。也就是client和server保存对方的一些信息,包括ip地址,序列码,存储策略,缓冲区大小等,来建立一个虚拟的连接。三次握手也就是虚拟连接建立的过程。
三次握手的动作分别是:
- 第一次握手,由client发起,向server发送一个SYN标志为1的包,标明想要连接的端口号,以及初始序号 X,保存在包头的序列号(Sequence Number)字段里。发送完毕后,客户端进入SYN_END状态。此过程不能携带数据,但是仍要消耗一个序列号。
- 第二次握手,server收到请求包以后,返回一个应答包(ACK, Acknowledgement),将客户端传过来的序列号X值+1放到返回包里。同时在返回包里放入服务端的序列号Y。
- 第三次握手,client应答server的ACK+SYN包,发送一个ACK包,将server的序列号Y+1带上传给server。此次请求可以带实际数据,也可以不带。
server收到第三次握手的包以后,连接正式建立。
以上就是TCP协议三次握手的过程的简单描述。大体上来说,