TCP数据包中的序列号(Sequence Number)不是以报文段来进行编号的,而是将连接生存周期内传输的所有数据当作一个字节流,序列号就是整个字节流中每个字节的编号。一个TCP数据包中包含多个字节流的数据(即数据段),而且每个TCP数据包中的数据大小不一定相同。在建立TCP连接的三次握手过程中,通信双方各自已确定了初始的序号x和y,TCP每次传送的报文段中的序号字段值表示所要传送本报文中的第一个字节的序号。
TCP的报文到达确认(ACK),是对接收到的数据的最高序列号的确认,表示这前面的数据已经接收到,并向发送端返回一个下次接收时期望的TCP数据包的序列号(Ack Number)。例如,主机A发送的当前数据序号是400,数据长度是100,则接收端收到后会返回一个确认号是500的确认号给主机A。
TCP提供的确认机制,可以在通信过程中可以不对每一个TCP数据包发出单独的确认包(Delayed ACK机制),而是在传送数据时,顺便把确认信息传出,这样可以大大提高网络的利用率和传输效率。同时,TCP的确认机制,也可以一次确认多个数据报,例如,接收方收到了201,301,40
Wireshark TCP报文到达ACK确认机制
于 2017-07-01 10:24:46 首次发布
TCP使用序列号对整个字节流进行编号,并通过ACK确认机制确认已接收的数据。接收端通过返回期望序列号确认接收,采用Delayed ACK提高效率。若超时未收到确认,发送方会重传数据,丢包重传策略取决于操作系统配置。未按序到达的报文通常存于缓冲区,待按序接收后再交给应用进程。
订阅专栏 解锁全文
686

被折叠的 条评论
为什么被折叠?



