Transport Layer Overview
运输层解决什么问题网络层把 IP 数据报从一台主机送到另一台主机,运输层则把数据交给正确的应用进程。换句话说: 层次 通信范围 标识对象 网络层 主机到主机 IP 地址 运输层 进程到进程 端口号 进程到进程通信是逻辑通信。两端运输层看起来像是在水平通信,但数据实际仍要向下交给网络层、数据链路层和物理层,再在接收端逐层向上交付。 在 TCP/IP 体系中,运输层最重要的两个协议是 UDP 和 TCP: 协议 运输层数据单元 基本服务 UDP UDP 用户数据报 无连接、不可靠、首部小 TCP TCP 报文段 面向连接、可靠、面向字节流 端口号一台主机上可能同时运行很多网络应用。运输层用端口号区分这些应用进程。 端口号长度为 16 bit,取值范围是...
UDP Datagram
UDP 的位置UDP 是运输层协议。它在 IP 提供的主机到主机交付之上,增加了两件事: 用端口号把数据交给正确的应用进程。 用检验和检查 UDP 用户数据报是否出现误码。 UDP 不建立连接,不维护可靠传输状态。发送方把应用报文交给 UDP 后,UDP 封装成一个 UDP 用户数据报并交给 IP;接收方若检出误码就丢弃,不确认、不重传、不排序。 UDP 用户数据报UDP 用户数据报由 UDP 首部和数据载荷组成。首部固定 8 B,包含 4 个字段,每个字段 2 B。 字段 长度 含义 源端口 16 bit 发送进程使用的端口号;接收方回送响应时作为目的端口 目的端口 16 bit 接收进程使用的端口号;接收方据此分用 长度 16 bit UDP 首部和 UDP 数据载荷的总长度 检验和 16 bit 检查 UDP 首部、数据载荷和伪首部是否出错 UDP 长度字段是整个 UDP 用户数据报的长度。因为 UDP 首部固定 8 B,所以: $$\text{UDP 数据载荷长度}=\text{UDP 长度字段表示长度}-8\text{...
IP Multicast
IP 多播多播是一对多通信。发送者只发送一份数据,网络在需要分叉的地方复制分组,把数据送给多播组成员。 与单播相比,多播能减少源主机发送副本数量,也能减少链路上的重复流量。典型场景是视频直播、会议分发、组通信等。 多播组和多播地址IPv4 多播地址使用 D 类地址,即 224.0.0.0 到 239.255.255.255。多播地址只能作为目的地址,不能作为源地址。 一个 IP 多播地址标识一个多播组。使用同一个 IP 多播地址接收数据报的主机构成一个多播组。 多播组有几个特点: 主机可以动态加入或离开多播组。 一台主机可以加入多个多播组。 多播组成员数量和位置可以变化。 发送者不一定是多播组成员。 IP 多播可以发生在局域网内,也可以跨越因特网。跨网络多播需要多播路由选择;到达最后一个局域网后,通常还要依赖局域网硬件多播交付给组成员。 多播 MAC 映射以太网支持多播 MAC 地址。IPv4 多播数据报在以太网上发送时,需要把 IP 多播地址映射成以太网多播 MAC 地址。 映射规则的关键是: 以太网多播 MAC 地址前缀为 01-00-5E。 MAC 地址后 23...
IPv6
IPv6IPv6 引入的根本原因是 IPv4 地址空间不足。IPv4 地址只有 32 bit,地址总量和分配方式都无法长期支撑因特网规模增长。IPv6 把地址长度扩展到 128 bit,同时调整首部结构、扩展首部、地址类型和控制协议。 IPv6 仍提供无连接、尽最大努力交付的不可靠数据报服务。它不是把 IP 变成可靠协议,而是在地址空间和转发机制上做了新设计。 主要变化IPv6 的主要变化包括: 地址长度从 32 bit 增加到 128 bit。 基本首部固定为 40 字节。 取消 IPv4 首部中的首部长度、首部检验和、标识、标志、片偏移等字段。 使用扩展首部承载选项和分片等功能。 使用“下一个首部”字段串联扩展首部或上层协议。 引入流标号,便于标识同一类需要特殊处理的数据报序列。 不使用广播,把广播看作多播的特殊情形。 不使用 ARP,邻站发现由 ICMPv6 完成。 基本首部IPv6 基本首部固定 40 字节。 IPv6 基本首部字段如下: 字段 长度 作用 版本 4 bit IPv6 中取值为 6 通信量类 8...
Mobile IP
移动 IP普通 IP 地址同时包含两个含义:主机接口标识和所在网络位置。路由器根据地址中的网络前缀转发分组。如果主机移动到另一个网络但仍使用原地址,分组仍会被路由到原网络;如果直接换成新地址,原有通信连接又会被破坏。 移动 IP 的目标是:移动主机跨网络移动时,仍能保持原来的永久 IP 地址,并尽量不要求固定主机和普通路由器修改协议。 移动性的几种情况移动性对网络层的影响不同: 情况 是否需要移动 IP 只在同一 Wi-Fi 覆盖区内移动,网络层地址不变 不需要 换地点重新接入,地址改变,但不要求保持原连接 不需要 跨网络移动,仍要求保持原地址和通信连续性 需要移动 IP 这类机制 移动 IP...
Software Defined Networking
SDN软件定义网络 SDN 的核心是把传统网络设备中的控制层面和数据层面分离。 传统路由器内部同时有两类功能: 数据层面:根据转发表快速转发分组。 控制层面:运行路由协议,交换路由信息,计算路由表和转发表。 SDN 把控制功能从数据层设备中抽离出来,放到逻辑集中的控制器中。数据层设备变得更简单,主要按控制器下发的规则执行“匹配 + 动作”。 这里的“逻辑集中”不等于物理上只有一台控制器。实际部署中可以有多台服务器组成控制层面,但对数据层设备来说,它表现为统一的网络控制中心。 传统转发和广义转发传统 IP 转发可以概括为: $$\text{匹配目的网络前缀}\rightarrow\text{选择输出接口或下一跳}$$ 也就是说,路由器通常按目的 IP 地址做最长前缀匹配,然后转发分组。 SDN 把这种方式扩展为广义转发: $$\text{匹配多层首部字段}\rightarrow\text{执行指定动作}$$ 匹配字段不局限于目的 IP 前缀,可以包括: 入端口。 源 MAC 地址、目的 MAC 地址。 源 IP 地址、目的 IP...
Router Architecture
路由器路由器是网络层互联设备。它连接多个网络,根据 IP 数据报的目的地址和转发表,把分组从一个接口转发到另一个接口。 路由器的两项核心功能是: 分组转发:对每个到来的分组查表并转发,这是高速、逐分组的动作。 路由选择:运行路由协议,交换路由信息,计算路由表,这是控制和维护路径的动作。 这两件事分别对应数据层面和控制层面。 典型结构典型路由器由输入端口、交换结构、输出端口和路由选择处理机组成。 部件 主要作用 输入端口 接收信号,完成物理层和数据链路层处理,并进行查表相关处理 交换结构 把分组从输入端口转移到选定输出端口 输出端口 对要发送的分组排队,重新封装成链路层帧并发送 路由选择处理机 运行路由协议,生成路由表,并向数据层面提供转发表 路由器不是简单地把输入线和输出线接起来。它必须先理解收到的帧中承载的 IP 数据报,再根据网络层信息决定下一步。 输入端口信号从输入端口进入路由器后,先经过物理层和数据链路层处理: 物理层把线路上的信号还原成比特流。 数据链路层从比特流中识别帧。 数据链路层检查帧并去掉帧首部和帧尾部。 IP...
Routing Algorithms
路由选择网络层的核心工作可以分成两件事: 分组转发:路由器收到一个分组后,按分组首部和转发表,把它从合适的接口送出去。 路由选择:路由器通过算法或协议决定到各目的网络应走哪条路径,并据此形成路由表。 路由选择生成的是路由表,它关心目的网络、下一跳和路径代价;转发表通常由路由表派生而来,结构更适合高速查找。讨论算法时常把二者都称为路由表,但真正转发时用的是面向查找优化的转发表。 静态路由和动态路由路由选择按配置方式可分为静态路由和动态路由。 类型 做法 优点 局限 静态路由 人工配置网络路由、默认路由、特定主机路由等条目 简单,开销小,可控性强 拓扑变化后不能自动适应 动态路由 路由器通过路由选择协议自动交换和更新路由信息 能适应网络变化,适合大规模网络 协议复杂,有通信和计算开销 小型、稳定、边界清晰的网络常用静态路由。大规模网络会使用动态路由,因为拓扑、链路状态和策略都可能变化,靠人工维护不现实。 因特网为什么要分层路由因特网规模太大,不可能让每台路由器都知道整个因特网的完整拓扑。实际做法是把因特网划分为许多自治系统 AS。一个 AS...
Routing Protocols
路由协议路由协议运行在路由器之间,用来交换路由信息、维护路由表。它们服务于网络层的路径选择,但具体报文可能封装在不同下层协议中。例如 RIP 报文使用 UDP,BGP 使用 TCP,但它们的核心功能仍是路由选择。 三种协议对比: 比较点 RIP OSPF BGP 使用范围 AS 内部 AS 内部 AS 之间 协议类别 IGP IGP EGP 基础思想 距离-向量 链路状态 路径向量与策略 主要度量 跳数 链路代价 AS 路径和策略 交换对象 相邻路由器 区域内洪泛链路状态 BGP 对等站 传输封装 UDP 520端口 直接封装在 IP 中 TCP 179端口 适用特点 小规模、简单网络 较大 AS,收敛较快 AS 间可达性和策略控制 RIP 和 OSPF 解决的是一个 AS 内部如何选路;BGP 解决的是 AS 之间如何互相通告可达网络,并根据策略选择可接受的路径。 RIPRIP 是内部网关协议,基于距离-向量思想。RIP 用跳数表示距离: 从一个路由器到直连网络的距离为 1。 每经过一个路由器,距离加 1。 最大有效距离为...