传输层 TCP首部-序号和确认号

TCP报文的首部格式


源端口和目的端口各占2个字节,分别写入源端口号和目的端口号。和UDP一样,使用端口号标识不同的应用层协议

TCP的首部是变长的,其中有20个字节是固定的,一行有4个字节,源端口和目标端口分别占用2个字节,全部为1的话,那么取值是65535,也就是端口号最大是65535。

序号占4字节。序号范围是[0,232-1],共232(即4 294 967 296)个序号,首部中的序号字段值则指的是本报文段所发送的数据的第一个字节的序号。

A计算机向B计算机传文件,传文件那么文件就写到缓存里面,在缓存里面的字节就开始分段,比如1-100个字节分为一段,101-200又是一段,每段里面都有100个字节,然后就会将TCP首部的序号指明这个段里面的第一个数据是整个文件第多少个字节。

如果是整个文件第一个字节那么就是1,第二段是整个文件第101个字节,你们可以看到序号是101,也就是使用tcp的序号来标识里面字节的顺序。

接收端收到之后,这样这两个段就会按照顺序排列好。

建立了TCP连接之后,B计算机也可以向A计算机发送数据,B收到了两个包之后发确认的话,他就发送只有TCP首部的数据包,这个数据包没有数据,这个确认号是201,当A确认收到201之后,A计算机就知道该发201之后的字节,可以看到确认号是告诉A计算机该发第多少个字节了。

确认号是接收端告诉发送端该发多少字节了。

 如果序号都是1的话,那么是4G,也就是计算机传文件的时候,文件超出4G了,那么这个序号可能又要从0又开始。

如果A和B同时传文件,这个时候发确认号的时候,就不需要单独发确认号了,而是B给A传数据的时候顺便就告诉A计算机了该发第多少个,不用单独产生数据包。

猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/125372598