加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

TCP报头中的报文序号

(2015-06-29 12:13:18)
标签:

it

TCP是将应用层交给的数据分段后发送的。为了支持数据出错重发和数据段组装,TCP程序为每个数据段封装的报头中,设计了两个数据报序号字段,分别称为发送序号和确认序号。

出错重发是指一旦发现有丢失的数据段,可以重发丢失的数据,以保证数据传输的完整性。如果数据没有分段,出错后源主机就不得不重发整个数据。为了确认丢失的是哪个数据段,报文就需要安装序号。

另一方面,数据分段可以使报文在网络中的传输非常灵活。一个数据的各个分段,可以选择不同的路径到达目标主机。由于网络中个条路径在传输速度上不一致性,有可能前面发出的数据段后到达,而后发出的数据段先到达。为了使目标主机能够按照正确的次序重新装配数据,也需要在数据段的报头中安装序号。

TCP报头中的第三、四字段是两个基本点序号字段。发送序号是指本数据段是第几号报文包。接收序号是指对方该发来的下一个数据段是第几号段。确认序号实际上是已经接收到的最后一个数据段加1。(如果TCP的设计者把这个字段定义为已经接收到的最后一个数据段序号,本可以让读者更容易理解。)

左方主机发送telnet数据,目标端口号为23,源端口号为1028。发送序号Sequencing Numbers10,表明本数据是第10段。确认序号Acknowledgement Numbers1,表明左方主机收到右侧主机发来的数据段数为0,右侧主机应该发送的数据段是1

右侧主机向左方主机发送的数据报中,发送序号是1,确认序号是11。确认序号是11表明右侧主机已经接收到左方主机第10号包以前的所有数据段。

TCP协议设计在报头中安装第二个序号字段是很精彩的。这样,对对方数据的确认随着本主机的数据发送而载波过去,而不是单独发送确认包,大大节省了网络带宽和接收主机的CPU时间。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有