余利区

 找回密码
 立即注册
查看: 89|回复: 0

计算机网络--TCP 的特点

[复制链接]

4

主题

7

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2022-12-30 17:56:33 | 显示全部楼层 |阅读模式
上节介绍了UDP 的首部格式
这节介绍TCP 的特点
(1)TCP 是面向连接的运输层协议。这就是说,应用程序在使用 TCP 协议之前,必须先建立 TCP 连接。在传送数据完毕后,必须释放已经建立的 TCP 连接。也就是说,应用进程之间的通信好像在“打电话”:通话前要先拨号建立连接,通话结束后要挂机释放连接。
(2)每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一)。
(3)TCP 提供可靠交付的服务。通过 TCP 连接传送的数据,无差错、不丢失、不重复,并且按序到达。
(4)TCP 提供全双工通信。 TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP 连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。在发送时,应用程序在把数据传送给 TCP 的缓存后,就可以做自己的事,而 TCP 在合适的时候把数据发送出去。在接收时, TCP 把收到的数据放入缓存,上层的应用进程在合适的时候读取缓存中的数据。
(5)面向字节流。 TCP 中的“流” (stream)指的是流入到进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次一个数据块(大小不等),但TCP 把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。 TCP 并不知道所传送的字节流的含义。 TCP 不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系(例如,发送方应用程序交给发送方的 TCP 共 10 个数据块,但接收方的 TCP 可能只用了 4 个数据块就把收到的字节流交付上层的应用程序)。但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。当然,接收方的应用程序必须有能力识别收到的字节流,把它还原成有意义的应用层数据。下图是上述概念的示意图。



TCP 面向字节流的概念

为了突出示意图的要点,我们只画出了一个方向的数据流。但请注意,在实际的网络中,一个 TCP 报文段包含上千个字节是很常见的,而图中的各部分都只画出了几个字节,这仅仅是为了更方便地说明“面向字节流”的概念。另一点很重要的是:上图中的 TCP连接是一条虚连接(也就是逻辑连接), 而不是一条真正的物理连接。 TCP 报文段先要传送到 IP 层,加上 IP 首部后,再传送到数据链路层。再加上数据链路层的首部和尾部后,才离开主机发送到物理链路。
上图指出, TCP 和 UDP 在发送报文时所采用的方式完全不同。 TCP 并不关心应用进程一次把多长的报文发送到 TCP 的缓存中,而是根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。如果应用进程传送到 TCP 缓存的数据块太长, TCP 就可以把它划分短一些再传送。如果应用进程一次只发来一个字节, TCP 也可以等待积累有足够多的字节后再构成报文段发送出去。

来自:《计算机网络》--谢希仁
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

云顶设计嘉兴有限公司模板设计.

免责声明:本站上数据均为演示站数据,如购买模板可以上DISCUZ应用中心购买,欢迎惠顾.

云顶官方站点:云顶设计 模板原创设计:云顶模板   Powered by Discuz! X3.4© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表