您的位置:首页 > 理论基础 > 计算机网络

TCP为什么是3次握手而不是2次或者4次或者更多次?

2016-07-23 16:06 423 查看
TCP建立连接过程如图:



客户端发出段1,SYN位表示连接请求。序号是1000,之后每发一个数据字节,这个序号要加1,这样在接收端可以根据序号排出数据包的正确顺序,防止丢包的现象。mass表示最大尺寸,若一个段太大,封装成帧后超过了链路层的最大帧长度,就必须在IP层分片,为了避免这种情况,客户端声明自己的最大段尺寸,建议服务器端发来的段不要超过这个长度。

服务器发出段2,也带有SYN位,同行置ACK位表示确认,确认序号为1001,表示“接收到序号1000以及之前所有的段,请下次发送序号为1001的段”,也就是答应了客户端的连接请求,同时给客户端发出一个连接请求,同时声明最大尺寸为1024.

客户端发出段3,对服务器的连接请求进行应答,确认序号为8001.
以上过程称为“三次握手”

为什么不能建立两次握手、四次或者多次呢?
如果是两次握手,首先client给server发送了一个连接请求,server收到了这个请求并且发送了一个确认应答的请求,站在server的角度,它认为连接已经建立成功了,开始发送数据。但是此时client并没有得到响应,它会认为连接还没有建立成功,将忽略server发送的数据,这样server在发出的数据超时后,会重复的发送数据,就形成了死锁的情况。所以两次握手显然不行。
超过三次以上其实都可以,但是三次刚好可以完全建立连接,四次或者多次效率会低点。所以TCP建立连接采用“三次握手”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  TCP 为什么 更多