TCP三次握手及常见问题

TCP的三次握手过程确保了连接的可靠性,避免了失效请求报文引起的错误。客户端和服务端在握手过程中,SYN报文会消耗序列号。如果只有两次握手,可能会导致服务器资源浪费。三次握手能有效防止这种‘旧连接请求’的误解。
摘要由CSDN通过智能技术生成

TCP三次握手图解

图解
 三次握手过程网上都很详细,然而第三次握手客户端发送给服务器的seq = x+1,自己画图的时候画成了seq = x+2,于是查了下问题所在。

 原因是 TCP 协议规定SYN报文虽然不携带数据,但是也要消耗1个序列号,所以前两次握手客户端和服务端都需要向对方回复 x+1 或 y+1 。
SYN消耗一个序列号

常见问题

TCP 为什么三次握手而不是两次、四次?

 在《计算机网络》中,三次握手的目的是“为了防止已经失效的连接请求报文段突然又传到服务端,因而产生错误。”

 通俗的说就是client发送了一个报文段,由于网络原因导致延误了,若此时连接已经释放并断开,那么这个晚来的失效报文段被server接收,server以为是client再次发出的一个新的连接请求,就向client发出确认报文段,同意建立连接。(其实这时client已经断开连接了)。

 假设不采用“三次握手”,例如两次握手。那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据,但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。好比:

	A:喂,听到吗?
	B:能听到,你呢?
	A:...
	B:...

详情可参考https://www.cnblogs.com/xiaolincoding/p/12638546.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值