《UNIX网络编程 卷1:套接字联网API(第3版)》——2.2 总图

本节书摘来自异步社区《UNIX网络编程 卷1:套接字联网API(第3版)》一书中的第2章,第2.2节,作者:【美】W. Richard Stevens , Bill Fenner , Andrew M. Rudoff著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.2 总图

虽然协议族被称为“TCP/IP”,但除了TCP和IP这两个主要协议外,还有许多其他成员。图2-1展示了这些协议的概况。

screenshot

图2-1中同时展示了IPv4和IPv6。从右向左查看该图,最右边的5个网络应用在使用IPv6;我们将在第3章中随sockaddr_in6结构讲解AF_INET6常值。随后的6个网络应用使用IPv4。

最左边名为tcpdump的网络应用或者使用BSD分组过滤器(BSD packet filter,BPF),或者使用数据链路提供者接口(datalink provider interface,DLPI)直接与数据链路进行通信。处于其右边所有9个应用下面的虚线标记为API,它通常是套接字或XTI。访问BPF或DLPI的接口不使用套接字或XTI。

这种情况存在一个例外:Linux使用一种称为SOCK_PACKET的特殊套接字类型提供对于数据链路的访问。我们将在第28章中详细讲述这个例外。

图2-1中还标明traceroute程序使用两种套接字:IP套接字用于访问IP,ICMP套接字用于访问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提供分组递送服务。

Pv6 网际协议版本 6(Internet Protocol version 6)。IPv6是在20世纪90年代中期作为IPv4的一个替代品设计的。其主要变化是使用128位更大地址(见A.5节)以应对20世纪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是一个提供可靠全双工关联的面向连接的协议,我们使用“关联”一词来指称SCTP中的连接,因为SCTP是多宿的,从而每个关联的两端均涉及一组IP地址和一个端口号。SCTP提供消息服务,也就是维护来自应用层的记录边界。与TCP和UDP一样,SCTP既可以使用IPv4,也可以使用IPv6,而且能够在同一个关联中同时使用它们。

ICMP 网际控制消息协议(Internet Control Message Protocol)。ICMP处理在路由器和主机之间流通的错误和控制消息。这些消息通常由TCP/IP网络支持软件本身(而不是用户进程)产生和处理,不过图中展示的ping和traceroute程序同样使用ICMP。有时我们称这个协议为ICMPv4,以便与ICMPv6相区别。

IGMP 网际组管理协议(Internet Group Management Protocol)。IGMP用于多播(见第21章),它在IPv4中是可选的。

ARP 地址解析协议(Address Resolution Protocol)。ARP把一个IPv4地址映射成一个硬件地址(如以太网地址)。ARP通常用于诸如以太网、令牌环网和FDDI等广播网络,在点到点网络上并不需要。

RARP 反向地址解析协议(Reverse Address Resolution Protocol)。RARP把一个硬件地址映射成一个IPv4地址。它有时用于无盘节点的引导。

ICMPv6 网际控制消息协议版本6(Internet Control Message Protocol version 6)。ICMPv6综合了ICMPv4、IGMP和ARP的功能。

BPF BSD分组过滤器(BSD packet filter)。该接口提供对于数据链路层的访问能力,通常可以在源自Berkeley的内核中找到。

DLPI 数据链路提供者接口(datalink provider interface)。该接口也提供对于数据链路层的访问能力,通常随SVR4内核提供。

所有网际协议由一个或多个称为请求评注(Request for Comments,RFC)的文档定义,这些RFC就是它们的正式规范。习题2.1的答案说明如何获得这些RFC。

我们使用术语“IPv4/IPv6主机”或“双栈主机”表示同时支持IPv4和IPv6的主机。

TCP/IP协议的其他细节参见TCPv1。TCP/IP在4.4BSD上的实现参见TCPv2。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UNIX网络编程:卷1 套联网API》是一本由W. Richard Stevens所著的经典书。该书系统地介绍了UNIX操作系统上的套编程技术。 套UNIX网络编程中的核心概念之一,它提供了一种通信机制,使得不同主机间的进程可以进行数据的传输和交换。本书的主要内容包括网络编程基础知识、套编程的基本操作、传输层协议(TCP、UDP)的使用以及网络编程的高级主题,如进程间通信、多线程编程等。 本书共分为24个章节,每个章节都深入浅出地解释了UNIX编程的各个方面。作者通过丰富的示例代码、清晰的解和详细的解释帮助读者理解并掌握套编程的技巧和实践。 《UNIX网络编程:卷1 套联网API》具有以下特点: 1. 详尽全面:书中对UNIX网络编程的各个方面进行了详细的介绍,从基础知识到高级主题,都有所涉及,对读者来说是一本全面系统的参考书。 2. 实用性强:书中的示例代码贴近实际应用场景,读者可以通过实践演练快速掌握套编程的技能,并了解如何解决实际网络编程中的常见问题。 3. 经典权威:作者W. Richard Stevens是UNIX网络编程领域的权威专家,他在书中融入了自己多年的经验和理论研究成果,使得本书成为了套编程领域的经典之作。 《UNIX网络编程:卷1 套联网API》是一本经典可贵的学习资料,它对UNIX编程提供了系统而丰富的介绍,既适用于初学者入门学习,也适合有经验的开发人员作为参考手册使用。无论是从事网络编程开发的工程师,还是对UNIX网络编程感兴趣的技术爱好者,都会从该书中获得丰厚的知识收益。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值