第2章 传输层:TCP、UDP和SCTP

上传人:re****.1 文档编号:562383511 上传时间:2024-01-16 格式:DOCX 页数:10 大小:208.30KB
返回 下载 相关 举报
第2章 传输层:TCP、UDP和SCTP_第1页
第1页 / 共10页
第2章 传输层:TCP、UDP和SCTP_第2页
第2页 / 共10页
第2章 传输层:TCP、UDP和SCTP_第3页
第3页 / 共10页
第2章 传输层:TCP、UDP和SCTP_第4页
第4页 / 共10页
第2章 传输层:TCP、UDP和SCTP_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《第2章 传输层:TCP、UDP和SCTP》由会员分享,可在线阅读,更多相关《第2章 传输层:TCP、UDP和SCTP(10页珍藏版)》请在金锄头文库上搜索。

1、第2章传输层:TCP、UDP和SCTP本章提供本书例子所用TCP/IP协议的概貌。我们的目的是从网络编程角度提供足够的细节 以 理解如何使用这些协议,同时提供有关这些协议的实际设计、实现及历史的具体描述的 参考点。本章的焦点是传输层,即TCP、UDP 和 SCTP(Stream Control Transmission Protocol)。绝大 多数的客户/服务器网络应用使用TCP或UDP。SCTP是一个较新的协议,最初设计用于跨 因特网传输电话信令。这些协议都转而使用网络层协议IP: IP版本4 (IPv4)或IP版本6 (IPv6)。尽管可以绕过传输层直接使用IPv4或IPv6,但这种技术

2、(称为原始套接字)较 少使用。因此,我们把IPv4和IPv6以及ICMPv4和ICMPv6的详细描述安排在附录A。UDP是一种简单的、不可靠的数据报协议,而TCP是一种精致的、可靠的字节流协议。SCTP 与 TCP 一样也是一种可靠的传输协议, 不过它还提供消息边界、传输级别多宿 (multihoming)支 持以及将头端阻塞(headDofDline blocking减少到最小的一种方法。我们必须了解由这些 传输层提供给应用进程的服务,这样才能弄清这些协议处理什么,我 们的应用进程又需要处 理什么。一旦理解 TCP 的某些特性,我们就能更容易地编写健壮的客户和服务器程序,更容易地使 用 诸如

3、netstat等工具来调试我们的客户和服务器程序。本章将阐述下述主题:TCP的三次 握手、TCP连接终止序列、TCP的TIME_WAIT状态;SCTP的四路握手和SCTP的连接 终止;以及套接口层的TCP、UDP和SCTP缓冲机制等等。2.2 总图虽然称为“TCP/IP”协议族,但是本协议族还有许多其他成员。图2.1展示了这些协议的概貌。 在这个图中,我们展示了 IPv4和IPv6。从右向左观察这个图,最右边的5个网络应用使用 IPv6,这涉及到第3章中的AF_INET6常值和sockaddr_in6结构。另外的6个网络程序使用 IPv4。最左边的网络应用(tcpdump)直接使用BPF(BS

4、D分组过滤器)或DLPI (数据链路提供 者接口)同数据链路层进行通信。右边9个网络应用的下面用虚线标记出API,它通常是 套接字或XTI。使用BPF或DLPI的接口不用套接字或XTI。这种情况的一种例外将在第28章详细描述:Linux使用一种称为SOCK_PACKET的特殊套 接字 类型提供数据链路层的访问。a PPlLPTCPSCTPICMP32-fe 地址data- linkARP, RARPBPF? DLPIm-KiutadQP6应用程序 AFJNEI6 soddrinfif!traoe-appl.tt-sze- pniteIF4应Hl程序Al- ENJKT $ocF;fl(klr_i

5、n ;图 2.1TCP/IP 协议概貌在图2.1中,我们还注意到traceroute程序使用两种套接字:IP套接字和ICMP套接字。在 第28章我们将开发ping和traceroute这两个网络应用的IPv4和IPv6版本。下面我们讲解图 2.1 中的每一种协议。IPv4,网际协议,版本4 (Internet Protocol version 4)。IPv4 (我们通常就称之为IP)自20 世纪80年代早期以来一直是网际协议族的主力协议。它使用32位的地址(A.4节)。IPv4给 TCP、UDP、SCTP、ICMP 和 IGMP 提供递送分组的服务。IPv6,网际协议,版本6 (Interne

6、t Protocol version 6)。IPv6设计于20世纪90年代中 期, 用以替代IPv4。主要变化是使用128位的大地址(A.5节)以应对90年代因特网爆发性的 增 长。IPv6给TCP、UDP、SCTP和ICMPv6提供递送分组的服务。口 当无需区别IPv4和IPv6时,我们经常使用IP这个形容词,如IP层、IP地址等等。TCP,传输控制协议(Transmission Control Protocol)0 TCP是一种面向连接的协议。它给用 户进程提供可靠的全双工的字节流。TCP套接字是流套接字(stream socket)的一种。TCP 关心诸如确认、超时和重传等具体细节。大多

7、数因特网应用程序使用TCP。注意,TCP既可 以使用IPv4,也可以使用IPv6。UDP,用户数据报协议(User Datagram Protocol)0 UDP是一种无连接协议。UDP套接字 是 数据报套接字(datagram socket)的一种。UDP数据报不能保证最终到达它们的目的地。与 TCP 一样,UDP既可以使用IPv4,也可以使用IPv6。SCTP,流控制传输协议(Stream Control Transmission Protocol)0 SCTP 是一个面向连接的提 供可靠全双工关联(association)的协议。“关联”一词用于指称SCTP中的连接,因为SCTP 是多宿

8、的,每个关联涉及的源宿两端各有一组IP地址和单个端口号oSCTP提供消息服务, 也就是维护来自应用层的记录边界。与TCP和UDP 一样,SCTP既可以使用IPv4,也可以 使用IPv6,而且能够在同一个关联中同时使用它们。ICMP,网际控制消息协议(Internet Control Message Protocol)。ICMP处理路由器和主机间 的错误和控制消息。这些消息一般由TCP/IP网络软件自身(而不是用户进程)产生和处理, 不过图中展示 的ping和traceroute程序也使用ICMP。有时我们称这个协议为ICMPv4,用 于区别 ICMPv6。IGMP,网际组管理协议(Intern

9、et Group Management Protocol)。IGMP 用于多播(第 21 章), 它在IPv4中是可选的。ARP,地址解析协议(Address Resolution Protocol)。ARP把IPv4地址映射到硬件地址(如 以太网地址)。ARP 一般用于广播网络,如以太网、令牌环网和FDDI,而不用于点到点网 络。RARP,反向地址解析协议(Reverse Address Resolution Protocol)。RARP把硬件地址映射到 IPv4地址。它有时用于无盘节点(如X终端)的引导。ICMPv6,网际控制消息协议,版本 6(Internet Control Messa

10、ge Protocol version 6)。ICMPv6 综合了 ICMPv4、IGMP和ARP的功能。BPF,BSD分组过滤器(BSD packet filter)0它为进程提供访问链路层数据的接口,一般在 源自Berkeley的内核中可以找到它。DLPI,数据链路提供者接口(datalink provider interface) 0该接口也提供访问数据链路层的 能力,一般由SVR4内核提供。所有网际协议由一个或多个称为RFC (Request for Comments。的文档定义,这些RFC就是 它们的正式规范。习题2.1的解答说明如何获得各个RFC。我们使用术语“IPv4/IPv6主

11、机”或“双栈主机”表示同时支持IPv4和IPv6的主机。 有关TCP/IP协议的其他细节见TCPv1。TCP/IP在4.4BSD中的实现见TCPv2。2.3UDP:用户数据报协议UDP 是一个简单的传输层协议,在 RFC 768Postel 1980中详细说明。应用进程往一个 UDP套接字写入一个消息,该消息接着被封装(encapsulating)进一个UDP数据报,该UDP 数据报 又进而被封装成一个IP数据报,然后发送到目的地。UDP不保证UDP数据报到达 其最终目的地 ,不保证各个数据报的先后顺序跨网络保持不变,也不保证每个数据报只到 达一次。我们使用UDP进行网络编程所碰到的问题是缺乏

12、可靠性。如果一个数据报尽管到达其最终 目 的地,但是校验和检测发现错误,或者就在网络传输途中被丢弃了,它就无法被投递给 宿端UDP套接字,也不会被源端自动重传。如果要确保一个数据报到达其目的地,我们必 须在应 用程序里建立一大堆的特性:来自对端的确认、本端的超时与重传,等等。每个UDP数据报都有一个长度。如果数据报正确地到达其最终目的地,那么数据报的长度 将随数据一道传递给接收端应用进程。我们已经提到过TCP是一个字节流(byteDstream) 协议,没有任何记录边界(1.2节),这与UDP不同。我们也称UDP提供无连接的(connectionless。服务,因为UDP客户与服务器不必存在长

13、期 的关系。例如,一个UDP客户可以创建一个套接字并发送一个数据报给一个服务器,然后 立即用同一个套接字发送另一个数据报给另一个服务器。同样,一个UDP服务器可以用同 一个UDP套接口从若干个不同的客户一连串接收多个数据报。2.4TCP:传输控制协议向应用进程提供的TCP服务不同于UDP服务。TCP在RFC 793 Poste1 1981c中详细说 明,然 后由 RFC 1323Jacobson, Braden, and Borman 1992、 RFC 2581Allman, Paxson, and Stevens 1999、RFC 2988Paxson and Allman 2000和 R

14、FC 3390Allman, Floyd, an d Partridge 2002加以更新。首先,TCP提供客户与服务器的连接(connection)。一个TCP客户建立 与一个给定服务器的连接,并跨该连接与那个服务器交换数据,然后终止连接。其次,TCP提供可靠性(reliability)o当TCP向另一端发送数据时,它要求对端返回一个确 认。如果确认没有收到, TCP 自动重传数据并等待更长时间。在数次重传失败后, TCP 才 放弃。重传数据所花的总时间传统上是410分钟(与实现有关0。注意,TCP并不保证数据一定会被对方端点接收,因为这是不可能做到的。如果可能的话, TCP 就把数据投递到

15、对方端点,否则就(通过放弃重传并中止连接这一手段)通知用户。 这么说来,TCP也不能被描述成是100%可靠的协议;它提供的是数据的可靠投递或故障的 可靠通知。TCP含有用于动态估算客户到服务器往返所花时间(round trip time,简称RTT)的算法, 因此它知道等待一个确认需要多少时间。举例来说, RTT 在一个局域网上大约是几毫秒, 而跨 越广域网则可能是数秒钟。另外,TCP还持续估算一个给定连接的RTT,这是因为RTT 受网络 传输拥挤程度的变化而变化。第三, TCP 通过给所发送数据的每一个字节关联一个序列号进行排序( sequencing) 。举例 来说,假设一个应用进程写20

16、48字节到一个TCP套接口,导致TCP发送2个分片:第1 个分片所含数据的序列号为11024,第2个分片所含数据的序列号为10252048 (分片是 TCP传递给IP的数据单元0。如果这些分片非顺序到达,接收端的TCP将根据它们的序列 号重新排序,再把结果数据传递给应用进程。如果TCP接收到重复的数据(譬如说对端认为 一个分片已丢失并因而重传,而它并没有真正丢失,只是刚才网络通信过于拥挤),它也可 以判定数据是重复的(根据序列号),从而把它丢弃掉。UDP提供不可靠的数据报传送。UDP本身不提供确认、序列号、RTT估算、超时及重传 等机制。如果一个UDP数据报在网上被复制,两份拷贝就可能都递送到接收端的主机。同 样,如果一个UDP客户发送两个数据报到同一个目的地,它们可能被网络重新排序,颠倒 顺序后到达目的地。UDP应用程

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号