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

  • 7
  • 0
  • 约 10页
  • 2015-08-23 发布于河南
  • 举报
第2章传输层:TCP、UDP和SCTP 2.1概述 本章提供本书例子所用TCP/IP协议的概貌。我们的目的是从网络编程角度提供足够的细节以 理解如何使用这些协议,同时提供有关这些协议的实际设计、实现及历史的具体描述的参考点。 本章的焦点是传输层,即TCP、UDP和SCTP(Stream Control Transmission Protocol)。绝大多数的客户/服务器网络应用使用TCP或UDP。SCTP是一个较新的协议,最初设计 用于跨因特网传输电话信令。这些协议都转而使用网络层协议IP:IP版本4(IPv4)或IP版本6(IPv6)。 尽管可以绕过传输层直接使用IPv4或IPv6,但这种技术(称为原始套接字)较少使用。因此, 我们把IPv4和IPv6以及ICMPv4和ICMPv6的详细描述安排在附录A。 UDP是一种简单的、不可靠的数据报协议,而TCP是一种精致的、可靠的字节流协议。SCTP与 TCP一样也是一种可靠的传输协议,不过它还提供消息边界、传输级别多宿(multihoming)支 持以及将头端阻塞(headofline blocking)减少到最小的一种方法。我们必须了解由这些 传输层提供给应用进程的服务,这样才能弄清这些协议处理什么,我们的应用进程又需要处 理什么。 一旦理解TCP的某些特性,我们就能更容易地编写健壮的客户和服务器程序,更容易地使用 诸如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(BSD分组过滤器)或DLPI(数据链路提供者接口)同 数据链路层进行通信。右边9个网络应用的下面用虚线标记出API,它通常是套接字或XTI。使用BPF或DLPI的接口不用套接字或XTI。 这种情况的一种例外将在第28章详细描述:Linux使用一种称为SOCK_PACKET的特殊套接字 类型提供数据链路层的访问。 图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(Internet 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)。TCP是一种面向连接的协议。它给用户进程提供可靠的全双工的字节流。TCP套接字是流套接字(stream socket)的一种。 TCP关心诸如确认、超时和重传等具体细节。大多数因特网应用程序使用TCP。注意,TCP既 可以使用IPv4,也可以使用IPv6。 UDP,用户数据报协议(User Datagram Protocol)。UDP是一种无连接协议。UDP套接字 是数据报套接字(datagram socket)的一种。UDP数据报不能保证最终到达它们的目的地。与 TCP一样,UDP既可以使用IPv4,也可以使用IPv6。 SCTP,流控制传输协议(Stream Control Transmission Protocol)。SCTP是一个面向连接的提供可靠全双工关联(association)的协议。“关联”一词用于指称SCTP中的连接,因 为SCTP是多宿的,每个关联涉及的源宿两端各有一组IP地址和单个端口号。SCTP提供消息服 务,也就是维护来自应用层的记录边界。与TCP和UDP一

文档评论(0)

1亿VIP精品文档

相关文档