计算机网络(7)-网络层(part2)
CIDR(无类域间路由,Classless InterDomain Routing)
消除传统A类、B类等地址界限
NetId+SubID -> Network Prefix 可以任意长度
融合子网地址与子网掩码
a.b.c.d/x,其中x为前缀长度
好处:
- 提高地址空间分配效率
- 提高路由效率,将很多子网聚合成一个较大的子网,构造超网(前缀长度小于原规定的网络号),路由聚合
如果出现子网不连续分配,导致超网出现不合法的域,路由器应该把超网和不属于的子网都记录到路由表中,实际工作时匹配长的(地址更具体的)
DHCP协议
获得IP地址的方法:
- 硬编码,静态配置
- 动态配置,DHCP协议,Dynamic Host Configuration Protocol,从服务器动态获取IP地址、子网掩码、默认网关地址、DNS服务器,DHCP协议允许地址重用,支持移动用户加入网络
主机广播DHCP discover报文
DHCP服务器用DHCP offer报文响应
主机用DHCP request报文请求IP地址
DHCP服务器用DHCP ack确认分配IP地址
DHCP协议在应用层实现,请求报文封装到UDP数据段中
NAT(网络地址转换)
本地网络中使用私有地址的主机向公网通信时,需要进行地址替换
动机:
- 一个网络只能从ISP申请一个地址
- 本地网络设备IP地址的变更不需要通告外界网络
- 变更ISP时,无需修改内部网络设备IP地址
- 内部网络设备对外界网络不可见,无法直接寻址,提高安全性
实现:
- 替换。替换源IP地址和源端口号
- 记录。记录替换关系
使用16bit的端口号字段,可以同时支持65536个并行连接
主要争议:
- 路由器应该只处理第三层功能(端口号为传输层段的内容,路由器对其进行了修改)
- 违背端到端原则,如P2P应用必须考虑NAT的存在
ICMP协议(互联网报文控制)
功能:
- 差错报告
- 网络探寻
两类ICMP报文:
- 差错报告报文:目的不可达、源抑制(拥塞控制,希望源主机降低速度)、超时(TTL超时)、参数问题、重定向
- 网络探寻:回声请求与应答报文(探测网络是否可达,ping)、时间戳请求与应答报文
不发生ICMP差错报告报文的特殊情况:
- ICMP差错报文发生错误
- IP数据报分片时只发送第一个片
- 多播IP数据报
- 特殊地址(127.0.0.0 或 0.0.0.0)
ICMP报文封装到IP数据报中传输
IPv6
动机:
- IPv4地址空间分配殆尽
- 改进首部格式
数据报格式:
- 固定长度40字节的基本首部,可以有多个扩展首部(扩展首部和数据统称载荷)
- 不允许分片

版本:兼容IPv4
流标签:标识数据报流
载荷长度:扩展首部加数据
下一个首部:指向下一个扩展首部或上一层协议的首部(如TCP首部)
跳步限制:TTL
源地址、目的地址:128位
改变:
- 校验和移除,减少每跳处理时间
- 允许选项,但从基本首部移除
- 新版ICMP协议,增加报文类型,如分组过大(不支持分片),多播组管理功能
地址表现形式:
按16比特分割,用冒号分开,16进制表示,连续的0用连续两个冒号压缩

基本地址类型:
- 单播
- 多播,广播被定义为特殊的多播
- 任意播,一对一组中之一
v4向v6过渡:
隧道:v6数据报作为v4的载荷
Original author: 马旭
Original link: https://bhmaxu.github.io/2020/02/10/计算机网络(7)-网络层(part2)/
Copyright Notice: Please indicate the source of the reprint (must retain the author's signature and link)