IP数据报
IP编址
IP分组:源地址(SA)-从哪儿来,目的地址(DA)-到哪儿去
接口(interface): 主机/路由器与物理链路的连接
1.实现网络层功能
2.路由器通常有多个接口
3.主机通常只有一个或两个接口 (e.g.,有线的以太网接口,无线的802.11接口)
IP地址: 32比特(IPv4)编号标识主机、路由器的接口
IP地址与每个接口关联
如何为接口分配IP接口
IP地址:
网络号(NetID) – 高位比特
主机号(HostID) – 低位比特
IP子网:
IP地址具有相同网络号的设备接口
不跨越路由器(第三及以上层网络设备)可以彼此物理联通的接口
子网划分
IP地址:
网络号(NetID) – 高位比特
子网号(SubID) – 原网络主机号部分比特
主机号(HostID) – 低位比特
子网掩码
子网掩码确定是否划分了子网,利用多少位划分子网
形如IP地址: 32位, 点分十进制形式
取值:NetID、SubID位全取1,HostID位全取0
A网的默认子网掩码为:255.0.0.0
B网的默认子网掩码为:255.255.0.0
C网的默认子网掩码为:255.255.255.0
借用3比特划分子网的B网的子网掩码为:255.255.224.0
子网地址+子网掩码→准确确定子网大小
将IP分组的目的IP地址与子网掩码按位与运算,提取子网地址
目的IP地址:172.32.1.112,子网掩码:255.255.254.0
子网地址:172.32.0.0(子网掩码:255.255.254.0)
地址范围:172.32.0.0~172.32.1.255
可分配地址范围:172.32.0.1~172.32.1.254
广播地址:172.32.1.255
CIDR
无类域间路由(CIDR: Classless InterDomain Routing)
- 消除传统的 A 类、B 类和 C 类地址界限
NetID+SubID→Network Prefix (Prefix)可以任意长度 -
融合子网地址与子网掩码,方便子网划分
无类地址格式:a.b.c.d/x,其中x为前缀长度
- 提高IPv4 地址空间分配效率
- 提高路由效率
将多个子网聚合为一个较大的子网
构造超网(supernetting)
路由聚合(route aggregation)
DHCP
一个主机如何获得IP地址?
-
硬编码
静态配置
默认网关:当前子网内数据报离开该子网时转发的接口(IP),这个接口所在路由器接入该子网的IP就是默认网关
- 动态主机配置协议-DHCP: Dynamic Host Configuration Protocol
DHCP(端口号67)在应用层实现
“即插即用”
允许地址重用
支持在用地址续租
支持移动用户加入网络
从服务器动态获取:
• IP地址
• 子网掩码
• 默认网关地址
• DNS服务器名称与IP地址
四个255:受限广播地址
yiadrr:与分配给客户端地址为:223.1.2.4
第三次还是广播:可以告诉其他的DHCP服务器,收回他们所预分配的地址
DHCP协议在应用层实现
请求报文封装到UDP数据报中
IP广播
链路层广播(e.g. 以太网广播)
DHCP服务器构造ACK报文包括分配给客户的IP地址、子网掩码、默认网关、DNS服务器地址
NAT(网络地址转换)(工作在网络层涉及到了传输层)
动机:
- 只需/能从ISP申请一个IP地址( IPv4地址耗尽)
- 本地网络设备IP地址的变更,无需通告外界网络
- 变更ISP时,无需修改内部网络设备IP地址
- 内部网络设备对外界网络不可见,即不可直接寻址(安全)
实现:
- 替换:利用(NAT IP地址,新端口号)替换每个外出IP数据报的(源IP地址,源端口号)
- 记录:将每对(NAT IP地址, 新端口号) 与(源IP地址, 源端
口号)的替换信息存储到NAT转换表中 - 替换:根据NAT转换表,利用(源IP地址, 源端口号)替换每个进入内网IP数据报的(目的IP地址,目的端口号),即(NAT IP地址, 新端口号)
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)
解决方案2: 利用UPnP(Universal Plug and Play)互联网网关设备协议 (IGDInternet Gateway Device )自动配置:(自动化解决方案1)
学习到NAT公共IP地址(138.76.29.7)
在NAT转换表中,增删端口映射
解决方案3: 中继(如Skype)
NAT内部的客户与中继服务器建立连接
外部客户也与中继服务器建立连接
中继服务器桥接两个连接的分组
ICMP(互联网控制报文协议)
互联网控制报文协议 ICMP (Internet Control Message Protocol)支持主机或路由器:
1.差错(或异常)报告
2.网络探询两类ICMP 报文:
差错报告报文(5种)
1.目的不可达(无法成功交付到目的地,丢弃报文)使用ICMP向源主机报告
2.源抑制(Source Quench)路由器缓存满后可使用ICMP向源主机报告(可以适用于拥塞控制,但并未使用)
3.超时/超期(TTL超时)
4.参数问题
5.重定向 (Redirect)网络探询报文(2组)
1.回声(Echo)请求与应答报文(Reply) Ping工具
2.时间戳请求与应答报文
几种不发送 ICMP差错报告报文的特殊情况:
1.对ICMP差错报告报文不再发送 ICMP差错报告报文
2.除第1个IP数据报分片外,对所有后续分片均不发送ICMP差错报告报文
3.对所有多播IP数据报均不发送 ICMP差错报告报文
4.对具有特殊地址(如127.0.0.0 或 0.0.0.0)的IP数据报不发送ICMP 差错报告报文
几种 ICMP 报文已不再使用
1.信息请求与应答报文
2.子网掩码请求和应答报文
3.路由器询问和通告报文
IPV6
最初动机:32位IPV4地址分配殆尽
其他动机:改变首部格式
- 快速处理/转发数据报
- 支持QoS
IPv6数据报格式:
- 固定长度的40字节基本首部
- 不允许分片
校验和(checksum): 彻底移除,以减少每跳处理时间
选项(options): 允许,但是从基本首部移出,定义多个选项首部,通过“下一个首部”字段指示
ICMPv6: 新版ICMP
附加报文类型,e.g. “Packet Too Big”
多播组管理功能
一般形式: 1080:0:FF:0:8:800:200C:417A
压缩形式: FF01:0:0:0:0:0:0:43 压缩→FF01::43
IPv4-嵌入形式: 0:0:0:0:0:FFFF:13.1.68.3或 ::FFFF:13.1.68.3
地址前缀: 2002:43c:476b::/48(注: IPv6不再使用掩码!)
URLs: http://[3FFE::1:800:200C:417A]:8000
单播地址:一对一通信 1<->1
多播地址:一对多通信 1->n
任意播地址:一对一组之一 1->1/n
不可能在某个时刻所有路由器同时被更新为IPv6
不会有 “标志性的日期”
IPv4和IPv6路由器共存的网络如何运行?
隧道(tunneling): IPv6数据报作为IPv4数据报的载荷进行封装,穿越IPv4网络