《分布式系统:概念与设计》一3.4.6 TCP和UDP

简介: 本节书摘来华章计算机《分布式系统:概念与设计》一书中的第3章 ,第3.4节,(英) George Coulouris Jean DollimoreTim Kindberg Gordon Blair 著 金蓓弘 马应龙 等译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.4.6 TCP和UDP

TCP和UDP以一种对应用程序有用的形式提供了互联网的通信能力。应用开发者可能需要其他类型的传输服务,如提供实时保证或安全性,但这些服务需要比IPv4更多的网络层支持。TCP和UDP忠实地反映了IPv4提供的应用编程级的通信设施。IPv6必然会继续支持TCP和UDP,但它包含了通过TCP和UDP无法方便访问的功能。当IPv6的部署已足够广,从而证明了那些功能的开发是必要的,那么可引入其他类型的传输服务来挖掘这些功能。
第4章从分布式程序开发者的角度描述了TCP和UDP的特征。这里我们仅描述它们给IP加入的功能。
端口的使用 第一个要注意的特征是,尽管IP协议支持两台计算机(由IP地址标识)之间的通信,但作为传输层的协议,TCP和UDP必须提供进程间的通信。这通过使用端口来完成。端口号用于将消息寻址到特定计算机上的进程,它仅在此计算机上有效。端口号是一个16位整数。一旦一个IP数据包被发送到目的主机,TCP或UDP层的软件就通过该主机的特定端口将它分派到一个进程中。
UDP的特点 UDP基本上是IP在传输层的一个复制。UDP数据报被封装在一个IP数据包中,它具有一个包含了源端口号和目的端口号的短的头部122(相应的主机地址位于IP头部)、一个长度域和一个校验和。UDP不提供传输保证。我们已经注意到,IP数据包可能会由于拥塞或网络错误被丢弃。除了可选的校验和外,UDP未增加任何额外的可靠性机制。如果校验和域非零,则接收主机根据数据包内容计算出一个校验值,与接收到的校验和相比,若两者不匹配则数据包被丢弃。
因此,依赖IP传输,UDP提供了一种在IP上附加最小开销或传输延迟、在进程对(或者在数据报地址是IP组播地址情况下,从一个进程发送到多个进程)之间传送最长达64KB的消息的方法。它不需要任何创建开销以及管理用的确认消息,但它只适应于不需要可靠传送单个或多个消息的服务和应用。
TCP的特点 TCP提供了一个更复杂的传输服务。它通过基于流的编程抽象,提供了任意长度字节串的可靠传输。可靠性保证使得发送进程递交给TCP软件的数据传送到接收进程时,其顺序是相同的。TCP是面向连接的,在数据被传送前,发送进程和接收进程必须合作,建立一个双向的通信通道。连接只是一个执行可靠数据传输的端到端的协议,中间结点(如路由器)并没有关于TCP连接的知识,一个TCP传输中传输数据的所有IP数据包并不一定使用相同的路由。
TCP层包含额外机制(在IP之上实现)以保证可靠性。这些机制包括:
排序:TCP发送进程将流分割成数据片断序列,然后将之作为IP数据包传送。每个TCP片断均有一个序号。它在该片断的第一个字节给出流中的字节数。接收程序在将数据放入接收进程的输入流前,使用序号对收到的片断排序。只有所有编号较小的片断都已收到并且放入流中后,编号大的片断才能被放入流中,因此,未按顺序到达的片断必须保存在一个缓冲区中,直到它前面的片断到达为止。
流控制:发送方管理不能使接收方或者中间结点过载,这通过片断确认机制完成。当接收方成功地接收了一个片断后,它会记录该片断的序号。接收方会不时地向发送方发送确认信息,给出输入流中片断的最大序号以及窗口大小。如果有反向的数据流,则确认信息被包含在正常的片断中,否则被放在确认数据片中。确认片断中的窗口大小域指定了在下一个确认之前允许发送方传送的数据量。
当一个TCP连接用于与一个远程交互程序通信时,会猝发产生数据,但产生的数据量可能很小。例如,利用键盘输入可能每秒仅输入几个字符,123但字符的显示必须足够快,以便用户看到自己的打字结果。这通过在本地缓冲区中设置一个超时值T(一般是0.5s)来实现。使用这个简单的方案,只要数据片断已在输出缓冲区中停留T秒,或是缓冲区的内容到达MTU限制,就将片断发送到接收方。该缓冲区方案不会使交互式延迟再增加T秒以上。Nagle描述了另一个产生较少流量的算法,它对一些交互式应用更有效[Nagle 1984]。Nagle的算法已用于许多TCP实现中。大多数TCP实现是可以配置的,允许应用程序修改T值,或是在几个缓冲区算法中选择其一。
由于无线网络的不可靠性,会导致数据包丢失频繁发生,上面的流控制机制对于无线通信不是特别适用。这是广域移动通信使用的WAP协议族采纳另一种传输机制的原因。但对无线网络而言,实现TCP也是很重要的,为此提出了TCP机制的修改提议[Balakrishnan et al.1995,1996]。其思想是在无线基站(有线网络和无线网络之间的网关)实现一个TCP支持组件。该组件探听进出无线网络的TCP片断,重传任何未被移动接收方快速确认的外发片断,并且在注意到序列号有间隔时,请求重传接收数据。
重传:发送方记录它发送的片断的序号。当它接收到一个确认消息时,它知道片断被成功接收,并将之从外发缓冲区中清除。如果在一个指定超时时间内,片断并没有得到确认,则发送方重发该片断。
缓冲:接收方的接收缓冲区用于平衡发送方和接收方之间的流量。如果接收进程发出receive操作的速度比发送进程发出send操作的速度慢很多,那么缓冲区中的数据量就会增加。通常情况下,数据在缓冲区满之前被取出,但最终缓冲区会溢出,此时到达的片断不被记录就直接被丢弃了。因此,接收方不会给出相应的确认,而发送方将被迫重新发送片断。
校验和:每个片断包含一个对头部和片断中数据的校验和,如果接收到的片断和校验和不匹配,则片断被丢弃。

相关文章
|
4月前
|
网络协议 安全 网络安全
什么是TCP/UDP/HTTP?它们如何影响你的内网穿透体验?
数据的传输离不开各种协议,它们就像现实世界中的交通规则,规定了数据如何打包、寻址、传输和接收。对于使用内网穿透的用户来说,理解TCP、UDP和HTTP这些基础协议的特点,能帮助你更好地理解其性能表现,并选择最适合的配置方案。
|
6月前
|
网络协议 安全 网络安全
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
521 2
|
9月前
|
网络协议 Java 开发工具
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
534 1
|
监控 网络协议 网络性能优化
不再困惑!一文搞懂TCP与UDP的所有区别
本文介绍网络基础中TCP与UDP的区别及其应用场景。TCP是面向连接、可靠传输的协议,适用于HTTP、FTP等需要保证数据完整性的场景;UDP是无连接、不可靠但速度快的协议,适合DNS、RIP等对实时性要求高的应用。文章通过对比两者在连接方式、可靠性、速度、流量控制和数据包大小等方面的差异,帮助读者理解其各自特点与适用场景。
|
网络协议 算法 网络性能优化
|
存储 网络协议 安全
用于 syslog 收集的协议:TCP、UDP、RELP
系统日志是从Linux/Unix设备及网络设备生成的日志,可通过syslog服务器集中管理。日志传输支持UDP、TCP和RELP协议。UDP无连接且不可靠,不推荐使用;TCP可靠,常用于rsyslog和syslog-ng;RELP提供可靠传输和反向确认。集中管理日志有助于故障排除和安全审计,EventLog Analyzer等工具可自动收集、解析和分析日志。
840 2
|
网络协议 网络性能优化 数据处理
深入解析:TCP与UDP的核心技术差异
在网络通信的世界里,TCP(传输控制协议)和UDP(用户数据报协议)是两种核心的传输层协议,它们在确保数据传输的可靠性、效率和实时性方面扮演着不同的角色。本文将深入探讨这两种协议的技术差异,并探讨它们在不同应用场景下的适用性。
452 4
|
监控 网络协议 网络性能优化
网络通信的核心选择:TCP与UDP协议深度解析
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种基础且截然不同的传输层协议。它们各自的特点和适用场景对于网络工程师和开发者来说至关重要。本文将深入探讨TCP和UDP的核心区别,并分析它们在实际应用中的选择依据。
444 3
|
缓存 负载均衡 网络协议
面试:TCP、UDP如何解决丢包问题
TCP、UDP如何解决丢包问题。TCP:基于数据块传输/数据分片、对失序数据包重新排序以及去重、流量控制(滑动窗口)、拥塞控制、自主重传ARQ;UDP:程序执行后马上开始监听、控制报文大小、每个分割块的长度小于MTU
|
网络协议 SEO
TCP连接管理与UDP协议IP协议与ethernet协议
TCP、UDP、IP和Ethernet协议是网络通信的基石,各自负责不同的功能和层次。TCP通过三次握手和四次挥手实现可靠的连接管理,适用于需要数据完整性的场景;UDP提供不可靠的传输服务,适用于低延迟要求的实时通信;IP协议负责数据包的寻址和路由,是网络层的重要协议;Ethernet协议定义了局域网的数据帧传输方式,广泛应用于局域网设备之间的通信。理解这些协议的工作原理和应用场景,有助于设计和维护高效可靠的网络系统。
326 4

热门文章

最新文章