一次性说清楚 TCP(二)

导读:本篇文章讲解 一次性说清楚 TCP(二),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

/   TCP协议首部   /

        TCP协议,表现在报文上,就是会在应用层传输下来的数据前附加上一个TCP首部,这个首部附加了TCP信息,先来整体看一下这个首部的结构:

一次性说清楚 TCP(二)

        这张图是来自一位大学老师的课件, 非常好用,所以一直拿来学习。最下面部分表示了报文之间的关系,TCP数据部分就是应用层传下来的数据。

        TCP首部固定长度是20字节,下面还有4字节是可选的。内容很多,但其中有一些我们比较熟悉的:源端口,目标端口。嗯?socket不是还需要IP进行定位吗?IP地址在网络层被附加了。其他的内容后面都会慢慢讲解,作为一篇总结文章,这里放出查阅表,方便复习:

一次性说清楚 TCP(二)

一次性说清楚 TCP(二)

选项字段中包含以下其他选项:

一次性说清楚 TCP(二)

讲完下面内容,再回来看这些字段就熟悉了。

/   TCP面向字节流特性   /

        TCP并不是把应用层传输过来的数据直接加上首部然后发送给目标,而是把数据看成一个字节 流,给他们标上序号之后分部分发送。这就是TCP的 面向字节流 特性:

一次性说清楚 TCP(二)

  • TCP会以流的形式从应用层读取数据并存放在自己的发送缓存区中,同时为这些字节标上序号

  • TCP会从发送方缓冲区选择适量的字节组成TCP报文,通过网络层发送给目标

  • 目标会读取字节并存放在自己的接收方缓冲区中,并在合适的时候交付给应用层

        面向字节流的好处是无需一次存储过大的数据占用太多内存,坏处是无法知道这些字节代表的意义,例如应用层发送一个音频文件和一个文本文件,对于TCP来说就是一串字节流,没有意义可言,这会导致粘包以及拆包问题,后面讲

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74661.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!