总图
图中同时展示了 IPv4 和 IPv6。从右向左查看该图,最右边的的 5 个网络应用在使用 IPv6,最左边的 6 个网络应用在使用 IPv4。
最左边名为 tcpdump 的网络应用或使用 BSD分组过滤器 (BPF) ,或使用数据链路提供者接口 (DLPI) 直接与数据链路层进行通信。处于其右所有 9 个应用下面的虚线标记 API,它通常是套接字或 XTI。访问 BPF 和 DLPI 的接口不使用套接字或 XTI。
注意:Linux使用一种称为 SOCK_PACKET 的特殊套接字提供对数据链路层的访问。
下面讲解图中的每一个协议框:
-
IPv4
网际协议版本 4 。IPv4 自 20 世纪 80 年代早期以来一直是网际协议族的主力协议。它使用 32 位地址。IPv4 给 TCP、UDP、SCTP、ICMP、IGMP 提供分组递送服务。
-
IPv6
网际协议版本 6 。IPv6 是在 20 世纪 90 年代中期作为 IPv4 的一个替代品设计的。其主要变化是使用 128 位更大地址以应对 20 世纪 90 年代因特网的爆发式增长。IPv6 给 TCP、UDP、SCTP、ICMP、IGMP 提供分组递送服务。
-
TCP
传输控制协议。TCP 是一个面向连接的协议,为用户进程提供可靠的全双工字节流。 TCP套接字是一种流套接字 (stream socket) 。TCP 关心确认、超时和重传之类的细节。大多数因特网应用程序使用 TCP。注意,TCP 既可以使用 IPv4 ,也可以使用