IP 协议-CIDR 与路由聚合
CIDR
无类域间路由(CIDR: Classless InterDomain Routing)
- 消除传统的 A 类、B 类和 C 类地址界限
- NetID+SubID→Network Prefix (Prefix)可以任意长度
- 融合子网地址与子网掩码,方便子网划分
- 无类地址格式:a.b.c.d/x,其中x为前缀长度
CIDR 与路由聚合
无类域间路由(CIDR: Classless InterDomain Routing)
- 提高IPv4 地址空间分配效率
- 提高路由效率
- 将多个子网聚合为一个较大的子网
- 构造超网(supernetting)
- 路由聚合(route aggregation)
层级编址使得路由信息通告更高效:
DHCP 协议
如何获得IP 地址?
动态主机配置协议(DHCP)
- 主机广播 “DHCP discover”(发现报文)
- DHCP服务器利用 “DHCP offer” (提供报文) 进行响应
- 主机请求IP地址: “DHCP request” (请求报文)
- DHCP服务器分配IP地址: “DHCP ack” (确认报文)
-
DHCP协议在应用层实现
- 请求报文封装到UDP数据报中
- IP广播
- 链路层广播(e.g. 以太网广播)
-
DHCP服务器构造ACK报文
- 包括分配给客户的IP地址、子网掩码、默认网关、DNS服务器地址
- 包括分配给客户的IP地址、子网掩码、默认网关、DNS服务器地址
网络地址 转换 换(NAT)
动机:
- 只需/能从ISP申请一个IP地址
- IPv4地址耗尽
- 本地网络设备IP地址的变更,无需通告外界网络
- 变更ISP时,无需修改内部网络设备IP地址
- 内部网络设备对外界网络不可见,即不可直接寻址(安全)
实现:
- 替换
- 利用(NAT IP 地址, 新端口号)替换每个外出IP数据报的( 源IP 地址, 源端口号)
- 记录
- 将每对(NAT IP 地址, 新端口号) 与( 源IP 地址, 源端口号)的替换信息存储到NAT转换表中
- 替换
- 根据NAT转换表,利用( 源IP 地址, 源 源 端口号)替换每个进入内网IP数据报的( 目的IP 地址, 目的端口号),即(NAT IP地址, 新端口号)
- 根据NAT转换表,利用( 源IP 地址, 源 源 端口号)替换每个进入内网IP数据报的( 目的IP 地址, 目的端口号),即(NAT IP地址, 新端口号)
- 16-bit端口号字段:
- 可以同时支持60,000多并行连接!
- NAT主要争议:
- 路由器应该只处理第3层功能
- 违背端到端通信原则
- 应用开发者必须考虑到NAT的存在,e.g., P2P应用
- 地址短缺问题应该由IPv6来解决
NAT 穿透问题
-
客户期望连接内网地址为10.0.0.1的服务器
- 客户不能直接利用地址10.0.0.1直接访问服务器
- 对外唯一可见的地址是NAT地址: 138.76.29.7
-
解决方案1: 静态配置NAT,将特定端口的连接请求转发给服务器
- e.g., (138.76.29.7, 2500) 总是转发给(10.0.0.1, 25000)
- e.g., (138.76.29.7, 2500) 总是转发给(10.0.0.1, 25000)
-
解决方案2: 利用UPnP(Universal Plug and Play)互联网网关设备协议 (IGD-Internet Gateway Device )自动配置:
- 学习到NAT公共IP地址(138.76.29.7)
- 在NAT转换表中,增删端口映射
-
解决方案3: 中继(如Skype)
- NAT内部的客户与中继服务器建立连接
- 外部客户也与中继服务器建立连接
- 中继服务器桥接两个连接的分组
互联网控制报文协议(ICMP)
+互联网控制报文协议 ICMP (Internet Control MessageProtocol)支持主机或路由器:
- 差错(或异常)报告
- 网络探询
- 两类ICMP 报文:
- 差错报告报文(5种)
- 目的不可达
- 源抑制(Source Quench)
- 超时/超期
- 参数问题
- 重定向 (Redirect)
- 网络探询报文(2组)
- 回声(Echo)请求与应答报文(Reply)
- 时间戳请求与应答报文
、
- 差错报告报文(5种)
ICMP报文
例外情况
- 几种不发送 ICMP差错报告报文的特殊情况:
- 对ICMP差错报告报文不再发送 ICMP差错报告报文
- 除第1个IP数据报分片外,对所有后续分片均不发送ICMP差错报告报文
- 对所有多播IP数据报均不发送 ICMP差错报告报文
- 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的IP数据报不发送ICMP 差错报告报文
- 几种 ICMP 报文已不再使用
- 信息请求与应答报文
- 子网掩码请求和应答报文
- 路由器询问和通告报文
- 几种 ICMP 报文已不再使用
- 信息请求与应答报文
- 子网掩码请求和应答报文
- 路由器询问和通告报文
ICMP 报文式
ICMP 差错 报告
ICMP 的应用: 举例:Traceroute
IPv6 简介
-
最初动机: 32位IPv4地址空间已分配殆尽
-
其他动机: 改进首部格式
- 快速处理/转发数据报
- 支持QoS
I+ Pv6数据报格式: - 固定长度的40字节基本首部
- 不允许分片
-
优先级(priority): 标识数据报的优先级
-
流标签(flow Label): 标识同一“流”中的数据报
-
下一个首部(next header): 标识下一个选项首部或上层协议首部(如TCP首部)
其他变 改变 vs IPv4
- 校验和(checksum): 彻底移除,以减少每跳处理时间
- 选项(options): 允许,但是从基本首部移出,定义多个选项首部,通过“下一个首部”字段指示
- ICMPv6: 新版ICMP
- 附加报文类型,e.g. “Packet Too Big”
- 多播组管理功能
IPv6 地址表示形式
IPv6 基本地址类型
IPv4 向IPv6过渡
- 不可能在某个时刻所有路由器同时被更新为IPv6
- 不会有 “标志性的日期”
- IPv4和IPv6路由器共存的网络如何运行?
- 隧道(tunneling): IPv6数据报作为IPv4数据报的载荷进行封装,穿越IPv4网络
隧道(tunneling