第二章 TCP协议和UDP协议.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TCP协议和UDP协议 2.1 概述 本章从网络程序设计角度提供足够的细节以理解如何使用TCP协议和UDP协议。同时提供这些协议的实际设计、具体实现和相关的注意事项。 本章的焦点是计算机网络传输层服务,即面向连接服务和面向无连接服务,它们所使用的相关协议分别是TCP协议和UDP协议。目前绝大多数的客户服务器应用程序都使用TCP协议或UDP协议。这两个协议使用网络层协议IP:IPv4或IPv6。尽管应用程序可以绕过传输层直接使用IPv4或IPv6,但这种方法(称为原始套接口)使用较少。 UDP是一个简单的传输层协议,应用程序写一个数据报到UDP套接口,由它封装成IPv4或IPv6数据报,然后发送到目的地址。但是,UDP并不能保证UDP数据报最终能够到达目的地。使用UDP进行程序设计所遇到的问题是缺乏可靠性。如果要确保一个数据报能够到达目的地,必须在应用程序中建立相应的特性,主要包括:来自另一端的确认、超时、重传等等。 每个UDP数据报都有一定的长度,可以把一个数据报看作一个记录。如果数据报最终正确地到达目的地(即分组到达目的地且校验和正确),那么该数据报的长度将传递给接收方的应用进程。而TCP是一个字节流协议,无记录边界。 向应用程序提供的TCP服务与UDP服务不同。首先,TCP提供客户与服务器的连接;其次,TCP提供可靠性;第三,TCP通过给所发送数据的每一个字节关联一个序列号进行排序;第四,TCP提供流量控制。 总之,UDP协议是一种简单的、不可靠的数据报协议,而TCP协议是一种复杂的、可靠的字节流协议。只有正确理解这两个协议提供给应用程序的服务,才能清楚这些协议能够处理什么,应用程序又需要处理什么。 只有深入理解TCP协议和UDP协议的某些特征,才能更容易编写健壮的、高效的客户服务器程序。 2.2 UDP:用户数据报协议 UDP是一个简单的面向数据报的传输层协议:进程的每个输出操作刚好产生一个UDP数据报,该数据报导致一个IP数据报的发送。 图2-1显示了作为IP数据报的UDP数据报的封装。 IP数据报 UDP数据报 IP报头 UDP报头 UDP数据 20字节 8字节 图2-1 UDP封装 RFC 768[Postel 1980]是UDP的官方描述。 UDP不提供可靠性:它发送应用程序数据到IP层的数据报,但不保证这些数据报到达其目的地。鉴于这种不可靠性,我们或许认为应避免UDP而总使用一个可靠的协议。 应用程序应注意所产生IP数据报的大小。若超出网络的MTU,该IP报会被分段。 这适用于数据报从源到目的所跨越的每个网络,不只是适用于发送主机的第一个网络。 2.2.1 UDP 报头 图2-2列出了UDP报头的各个域。 0 15 16 31 0 15 16 31 16位目的端口号16位源端口号 16位目的端口号 16位源端口号 8字节 8字节 16位UDP检查和 16位UDP检查和 16位UDP长度 数据(如果有) 数据 (如果有) 图2-2 UDP报头 端口号标识出发送进程和接收进程。由于IP已将到来的IP数据报分解复用为TCP和UDP,这意味着TCP端口号由TCP查看,UDP端口号由 UDP查看。TCP端口号与UCP端口号无关。尽管二者无关,但若一个众所周和的服务TCP和UDP都提供,端口号通常取同一个值。 UDP长度域是以字节为单位的UDP数据和UDP报头之长,其最小值为8。该UDP长度是冗余的,IP报含有其总长度,故UDP报长为该总长度减去IP报头长度。 2.2.2 UDP校验和 UDP校验和覆盖UDP和UDP数据。而IP报头中的校验和仅覆盖该IP报头,它不涉及IP数据报中的任何数据。UDP和TCP均在其报头中有覆盖其报头和数据的校验和。对UDP而言,校验和是可选的,而TCP则是必需的。 首先,UDP数据报的长度可以是奇数个字节,而校验和算法是加16位字。解决办法是在尾部追加0的填充字节, 而这填充字节仅为计算校验和所需。 另外,UDP和TCP均在UDP报中包含一个12字节的伪报头以计算校验和。该伪报头包含IP报头的某些域,目的是让UDP 检测数据确已到达正确的目的端。 如果发送者的确计算了校验和并且接收者检测出校验和错误,则该UDP数据报会被简单地扔弃,不产生错误信息。 UDP校验和是

文档评论(0)

zzqky + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档