为什么tcp要采取报文段的发送方式?

如题所述

解答:要传送的512B的数据必须划分为6个报文段传送,前5个报文段各100B,最后一个报文段传送12B.图T-5-41是双方交互的示意图。

下面进行简单的解释。

报文段#1:A发起主动打开,发送SYN报文段,处于SYN-SENT状态,并选择初始序号seq=100。

B处于LISTEN状态。报文段#2:B确认A的SYN报文段,因此ack=101(是A的初始序号加1)。

B选择初始序号seq=200。B进入到SYN-RCVD状态。报文段#3:A发送ACK报文段来确认报文段#2,ack=201(是B的初始序号加1)。A没有在这个报文段中放入数据。

因为SYN报文段#1消耗了一个序号,因此报文段#了的序号是seq=101.这样,A和B都进入了ESTABLISHED状态。报文段#4:A发送100字节的数据。

报文段#3是确认报文段,没有数据发送,报文段#3并不消耗序号,因此报文段#4的序号仍然是seq=101.A在发送数据的同时,还确认B的报文段#2,因此ack=201。报文段#S:B确认A的报文段#4。

由于收到了从序号101到200共100字节的数据,因此在报文段#5中,ack=201(所期望收到的下一个数据字节的序号)。

B发送的SYN报文段#2消耗了一个序号,因此报文段#5的序号是seq=201,比报文段#2的序号多了一个序号。

在这个报文段中,B给出了接收窗口rwnd=100.从报文段彬6到报文段#13都不需要更多的解释。到此为止,A已经传送了500字节的数据。

值得注意的是,B发送的所有确认报文段都不消耗序号,其序号都是seq=201.报文段#14:A发送最后12字节的数据,报文段#14的序号是seq=601。

扩展资料:

TCP建立连接

TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。

TCP三次握手的过程如下:

客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。

服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。

客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。

三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

参考资料来源:百度百科-TCP

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网