目录
1.3.1 ARPANET 参考模型
图 1-5 描绘了 ARPANET 参考模型鼓励使用的分层方案,这个方案最终被 TCP/IP 协议栈采用 这个方案的结构比 OSI 模型简单
从图 1-5 的底部向上看,低一层为 2.5 层,是一个 “ 非官方的 ” 层 这一层有多个协议,其中最重要的一个协议被称为地址解析协议(Address Resolution Protocol (ARP)),它也是最古老的协议之一 这个协议与 IPv4 一起使用,并且只能与多路访问(multi-access)链路层协议(如以太网、Wi-Fi)一起使用 专门用来转换 IP 地址与链路层地址 ARP 会在第 4 章讲到 IPv6 中的地址映射功能是 ICMPv6 的一部分,会在第 8 章讲到
图 1-5 互联网使用的,基于 ARM(ARPANET 参考模型)或 TCP/IP 协议栈的协议分层 与官方的分层模型相比,少了会话层与表示层 多了一些还无法完全对应到标准分层模型中的 “ 附属 ” 或助手协议,协助其它协议完成一些关键功能 其中一些在 IPv6 中没有使用(如:IGMP、ARP)
如图 1-5,IP 协议在第 3 层(第 5 章会详细介绍) IP 发送给链路层协议的 PDU 被称为 IP 数据报(IP datagram),大小为 64 KB(IPv6 最大为 4 GB) 在上下文清楚的情况下,可以用数据包(packet)指代 IP 数据报 链路层的 PDU 叫做帧(frame) 当一个网络层的 IP 数据报大于链路层的一个帧能携带的最大长度时,需要用分片(fragmentation)功能对 IP 数据报进行切分 IP 主机具备分片功能,如有必要,一些路由器也可以实现这个功能 分片功能将 IP 数据报切分为更小部分,这些部分称为分片(fragment) 分片到达目的地后会被重组(reassembly)为原来的数据报 第 10 章会讨论分片
每个 IP 数据报中都同时含有 3 层发送者与接收者的地址 这些地址被称为 IP 地址(IP address),IPv4 的地址为 32 位,IPv6 的地址为 128 位 每个数据报中的目的地地址用来决定数据报向哪里发送 判断往哪里发送的过程与将数据报发送至下一跳的过程被称为转发(forwarding) 路由器与主机都能执行转发,一般来说路由器执行得更频繁 有 3 种类型的 IP 地址,IP 地址类型决定了转发的方式
- 单播(unicast)(发送至单独的主机)
- 广播(broadcast)(发送至某个特定网络中的所有主机)
- 组播(multicast)(发送至属于同一个组播组的所有主机)
第 2 章会详细介绍
互联网控制报文协议(Internet Control Message Protocol (ICMP))是一个 IP 协议的附属协议,我们将其标注为 3.5 层协议 IP 层用 ICMP 协议来与其它主机或路由器上的 IP 层交换错误信息以及其它的重要信息 ICMP 有两个版本:ICMPv4 对应于 IPv4,ICMPv6 对应于 IPv6 ICMPv6 比 ICMPv4 复杂得多,包括了地址自动配置与邻居发现功能,在 IPv4 中这些功能由其它协议(如:ARP)完成 虽然 ICMP 主要是 IP 协议在使用,但应用程序也可以使用它 两个著名的诊断工具 ping 与 traceroute 就实现了 ICMP 协议 ICMP 报文被封装在 IP 数据报中,就和传输层的 PDU 一样
互联网组管理协议(Internet Group Management Protocol (IGMP))是 IPv4 的另一个附属协议 提供组播寻址与交付功能,管理哪些主机属于组播组(multicast group)的成员(接收发往某个特定组播目的地址的流量的一组接收者) 我们在第 9 章讨论广播与组播的一般属性(与 IGMP 一起) 以及组播侦听者发现(Multicast Listener Discovery)协议 (MLD, 与 IPv6 一起使用)
第 4 层上有两种最常见的互联网传输层协议,TCP 与 UDP,它们的区别很大 最广泛使用的传输控制协议(Transmission Control Protocol (TCP))用于处理包丢失、重复、重排序之类的 IP 层没有修复的问题 TCP 以面向连接的(VC)的形式工作,不保存消息边界 相对来说用户数据报协议(User Datagram Protocol (UDP))就简单很多了 它的作用是让应用程序发送可以保存消息边界的数据报,但没有速率控制与差错控制功能
TCP 提供了两个主机之间的可靠数据流量,它会做下面这些事情:
- 为网络层把应用程序传递给它的数据分成适当大小的数据块
- 确认收到了数据包
- 为了判断对方是否已经收到了发送的数据包,为对方的确认回复设置超时时间
因为传输层提供了可靠的数据流,所以应用层可以忽略这些细节 TCP 发送给 IP 的 PDU 被称为 TCP 段(TCP segment)
UDP 为应用层提供的服务要简单得多 它允许将数据报从一个主机发送至另一个主机,但不保证数据报能成功到达,可靠性只能靠应用层实现 UDP 所做的就是为多路复用与解复用提供一个端口号集合,加上一个数据完整性校验和 UDP 与 TCP 虽然在同一层,却有着根本的不同
有两个相对较新的传输层协议,因为还没有被广泛采用因此不做深入讨论,但有必要知道它们的存在
-
数据拥塞控制协议(Datagram Congestion Control Protocol (DCCP))[RFC4340] 通了一个介于 TCP 与 UDP 之间的服务:提供面向连接的不可靠数据报交换能力,能进行拥塞控制 拥塞控制包含多项技术,发送者靠这些技术来限制发送速率,避免网络超负荷 -
流控制传输协议(Stream Control Transmission Protocol (SCTP))[RFC4960] SCTP 和 TCP 一样提供可靠交付,但不会严格保持数据的顺序 与 TCP 不同的是,SCTP 允许一个连接上有多个逻辑流,并提供了一个消息抽象 设计 SCTP 是为了在 IP 网络上携带类似在电话网络中使用的信号消息
目录
|