TCP协议建立连接为什么要三次握手

TCP协议建立连接三次握手主要是为了解决连接的可靠性,TCP协议发送数据的时候如果数据包很大的话就会将数据包分割为一段一段的数据段进行发送,每个数据段都要带一个序号,这个序号是用来确认数据的可靠性的一个保障,第一次传数据的序号是怎么来的呢?其实就是TCP三次握手来的,三次握手的目的其实是为了交换双方的初始序号,这个初始序号叫做ISN。每个数据段是否是同一个路线,是否先发先到呢?这个就不一定了,有可能发生后发现到的情况,这个时候如果拼装成原始发送数据切要保证拼接顺序是对的并且数据没有丢,就要根据序号来判断了,两端在收到对方发送数据之前先将片段数据逐次发送到一个缓冲区,发送完成之后在缓冲区按照序号排好序之后拼接成完整的数据,最后将完整的数据发送到应用层。如果只是两次握手只能保证客户端确认了初始序列号,服务端只能发送给客户端但是无法确认初始序列号,这样服务端发送的数据就有可能出现错乱。因为TCP协议是全双工的,客户端和服务端能同时给对方发送数据也能同时接收数据,所以两端都要确认初始序列号。如果是四次的话第二次和第三次是可以合并的。这个解释是正确的权威的解释,不要相信其他的解释,其他解释全是瞎扯的,在《TCP/IP详解》第十三章中讲的TCP连接管理把这个问题讲的就很清楚了。还要看一本书叫《UNIX网络编程》,如果把这两本书都啃下来了基本做网络编程这一块什么调优什么的对你来说都是小菜一碟了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值