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
2024-10-17 广告