计算机网络-5-3-TCP协议主要特点
传输控制层TCP协议
TCP协议最主要的特点
-
TCP是面向连接的运输层协议。这就是说,应用程序在使用TCP协议之前,必须要建立TCP连接,且在传输完毕后,还要断开连接。
-
每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点(一对一),并且按序到达。
-
TCP提供全双工通信。TCP允许通信双方的应用进程可以在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。在发送的时候,应用进程把数据传送给TCP缓存后,就可以做自己的事情,而TCP会在合适的时候把数据发送出去。在接收时,TCP把接收到的数据放入接收缓存中,上层的应用进程会在合适的时候读取缓存中的数据。
-
面向字节流,TCP中的”流“指的是流入到进程或者从进程流出的字节序列。”面向字节流“的含义是:虽然应用进程和TCP交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅仅看成一连串的无结构的字节流“。TCP并不知道所传送的字节流的含义。
如图5-8 TCP连接是一条虚连接(逻辑连接):并不是真正的物理连接。TCP报文段先要传送到IP层,加上IP首部,再传送到数据链路层。再加上数据链路层的首部和尾部,才能离开主机发送到物理链路。
图5-8指出,TCP和UDP在发送报文的时候所采用的方式完全不同。TCP并不关心应用进程一次把多长的报文发送到TCP缓存中,而是根据对方给出的窗口值和当前网络的拥塞程度来决定一个报文段应该包含多少个字节(UDP发送的报文长度是应用进程给出的)。如果应用进程一次只发来一个字节,TCP也可以等待积累有足够多的字节后再构成报文段发送出去。关于TCP报文段的长度问题,在后面据悉讨论。
TCP的连接
TCP把连接作为最基本的抽象,TCP许多的特性都与TCP面向连接这个基本特性相关。
每一条TCP连接有两个端点,TCP连接的端点,不是主机,不是主机IP,不是应用进程,也不是运输层的协议端口,而是叫做套接字(socket)或者插口,根据RFC793规定:端口号拼接到IP地址即构成了套接字,即:套接字socket=(IP地址:port端口号)。
每一条TCP连接唯一地址通信的两端(及两个套接字所规定):
TCP连接::={socket1,socket2}={(IP1:Port1),(IP2:Port2)}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构