计算机网络学习笔记(四)- 网络层(中)
CIDR与路由聚合
无类域间路由(CIDR: Classless InterDomain Routing)
- 消除传统的 A 类、B 类和 C 类地址界限
• NetID+SubID→Network Prefix (Prefix)可以任意长度 - 融合子网地址与子网掩码,方便子网划分
• 无类地址格式:a.b.c.d/x,其中x为前缀长度 - 特点
• 提高IPv4 地址空间分配效率
• 提高路由效率:将多个子网聚合为一个较大的子网,构造超网(supernetting)
如下图所示:虽然IP地址200.23.18.023将会匹配到两个子网,但根据最长前缀匹配原则,依然会选择下面的子网,由此可知,当出现网络黑洞,如同上面的子网一样,某一个地址不属于该子网,解决办法时在该IP地址对应的子网上加上这条IP地址,根据最长前缀匹配原则,数据报不会发送错误
DCHP协议
主机如何获取IP地址
- 硬编码:静态获取
- 动态主机配置协议-DHCP: Dynamic Host Configuration Protocol
• 从服务器动态获取:
IP地址
子网掩码
默认网关地址
DNS服务器名称与IP地址
• “即插即用”
• 允许地址重用
• 支持在用地址续租
• 支持移动用户加入网络
• DHCP协议在应用层实现
• DHCP服务器内建于路由器中
DCHP工作过程
- 主机广播 “DHCP discover”(发现报文)
- DHCP服务器利用 “DHCP offer” (提供报文) 进行响应
- 主机请求IP地址: “DHCP request” (请求报文)
- DHCP服务器分配IP地址: “DHCP ack” (确认报文)
如下图所示,主机刚入网即进行第一次广播,本机IP地址全0,根据特殊IP地址分配,全0IP地址在本网内代表本机,目的地址全1,全1对应在本网内进行广播,告知全网DHCP服务器为本机分配IP地址,yladdr作为分配IP地址位,可以看出在第二次握手,服务器返回报文的yladdr即为主机的IP地址,第三次握手原因一个是向服务器报告确定使用这个IP地址,但仍然是用的广播方式,这样是告诉本网内其余DHCP服务器,主机已经有了IP地址,不需要在分配了,第四次握手作为服务器给主机的应答信号,确定IP地址可以使用
网络地址转换(NAT)
使用NAT动机
- IPv4地址耗尽
- 本地网络设备IP地址的变更,无需通告外界网络
- 变更ISP时,无需修改内部网络设备IP地址
- 内部网络设备对外界网络不可见,即不可直接寻址(安全)
NAT实现
- 替换:利用(NAT IP地址,新端口号)替换每个外出IP数据报的(源IP地址,源端口号)
- 记录:将每对(NAT IP地址, 新端口号) 与(源IP地址, 源端口号)的替换信息存储到NAT转换表中
- 替换:根据NAT转换表,利用(源IP地址, 源端口号)替换每个进入内网IP数据报的(目的IP地址,目的端口号),即(NAT IP地址, 新端口号)
NAT内网穿透
问题:客户期望连接内网地址为10.0.0.1的服务器,客户不能直接利用地址10.0.0.1直接访问服务器,对外唯一可见的地址是NAT地址: 138.76.29.7
解决方案:
- 静态配置NAT,将特定端口的连接请求转发给服务器,e.g.,(138.76.29.7, 2500) 总是转发给(10.0.0.1, 25000)
- 利用UPnP (Universal Plug and Play) 互联网网关设备协议 (IGD-Internet Gateway Device ) 自动配置,学习到NAT公共IP地址 (138.76.29.7),在NAT转换表中,增删端口映射(与第一种方法殊途同归)
- 中继(如Skype):NAT内部的客户与中继服务器建立连接,外部客户也与中继服务器建立连接,中继服务器桥接两个连接的分组
ICMP协议
ICMP报文分类
- 差错报告报文(5种)
• 目的不可达
• 源抑制(Source Quench)
• 超时/超期
• 参数问题
• 重定向 (Redirect) - 网络探询报文(2组)
• 回声(Echo)请求与应答报文(Reply)
• 时间戳请求与应答报文
ICMP报文例外情况
- 几种不发送 ICMP差错报告报文的特殊情况:
• 对ICMP差错报告报文不再发送 ICMP差错报告报文
• 除第1个IP数据报分片外,对所有后续分片均不发送ICMP差错报告报文
• 对所有多播IP数据报均不发送 ICMP差错报告报文 - 几种 ICMP 报文已不再使用
• 信息请求与应答报文
• 子网掩码请求和应答报文
• 路由器询问和通告报文
ICMP报文格式
IPV6协议
IPV6动机
- 32位IPv4地址空间已分配殆尽
- 其他动机
• 改进首部格式
• 快速处理/转发数据报
• 支持QoS
IPV6数据报格式
- 固定长度的40字节基本首部
- 不允许分片
- 对比IPV4改变
• 优先级(priority): 标识数据报的优先级
• 流标签(flow Label): 标识同一“流”中的数据报
• 下一个首部(next header): 标识下一个选项首部或上层协议首部(如TCP首部)
• 校验和(checksum): 彻底移除,以减少每跳处理时间
• 选项(options): 允许,但是从基本首部移出,定义多个选项首部,通过“下一个首部”字段指示
• ICMPv6: 新版ICMP,附加报文类型,多播组管理功能
IPV6地址表示形式
- 一般形式: 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