Section 4 网络层:数据平面
中科大郑烇、杨坚老师《计算机网络》笔记
4.3 Internet Protocol (IP) 协议
- IP数据报格式
- TTL: Time to Leave
- IP分片和重组(Fragmentation & Reassembly)
- 网络链路有MTU (最大传输单元)
- 大的IP数据报在网络上被分片fragment
- 在最终的目标主机重组:定时器,只要定时器到了,任何一片没有到,整个包都丢掉
- IP头部的信息被用于标识,排序相关分片,fragflag是否是最后一片
- IP编址
- IP地址
- 32位,对主机或者路由器的接口编址
- 包括子网部分(高位)和主机部分(地位)
- 子网
- IP地址的高位部分相同
- 无需路由器介入
- IP地址分类
- A: 0开头,1.0.0.0-127.255.255.255 网络2^7-2 主机2^24-2
- B: 10开头,128.0.0.0-191.255.255.255 网络2^14-2 主机2^16-2
- C:110开头,192.0.0.0-223.255.255.255 网络200多万 主机2^8-2
- D: multicast
- E: reserved for future
- IP编址: CIDR
- CIDR: Classless InterDomain Routing(无类 域间路由)
- 子网部分可以在任意的位置
- 地址格式: a.b.c.d/x,其中 x是 地址中子网号的长度
- 子网掩码:32位 网络号1 主机号0
- 查找网络号:子网掩码 and IP地址(与操作);因为在路由中只有网络号有意义,主机号没有意义
- 路由转发表,按照表项中的网络号转发;如果都没有找到,则使用默认表项转发数据报
- CIDR: Classless InterDomain Routing(无类 域间路由)
- 获得一个IP地址
- 系统管理员配置
- DHCP: Dynamic Host Configuration Protocol
- 从DHCP服务器中动态获得一个IP地址
- plug-and-play
- 配置IP地址、子网掩码、默认网关、默认出口
- 获得一个网络的一小块子网
- 从ISP获得地址块中分配一个小地址块(在子网的网络号中,拿出几位作为子网号)
- 层次编址:路由聚集(route aggregation)
- 减少路由通告的数量
- E.g.
- Org0: 200.23.16.0/23(16=0001|000|0)
- Org1: 200.23.18.0/23(18=0001|001|0)
- …
- Org7: 200.23.30.0/23(30=0001|111|0)
- 路由器发现Org0-Org7可以聚集(more specific routes):200.23.16.0/20
- 聚集有时不是精确的,比如路由器拿到了Org0-Org7中的7个,也可以“吹牛”说自己可以转发200.23.16.0/20,(允许聚集有空洞);这样会导致多个路由表项与之匹配,此时采用“最长前缀匹配”,匹配最精确的路由表项进行转发
- 一个ISP如何获得一个地址块
- ICANN: Internet Corporation for Assigned Names and Numbers
- 分配地址、管理DNS、分配域名,解决冲突
- IP地址
- NAT: Network Address Translation
- 本地网络只有一个有效IP地址,映射内网所有地址
- 作用
- 省钱
- 内网地址改变不需要通知外网
- 外网地址改变不需要修改内网地址
- 安全:局域网内部的设备没有明确的地址,对外不可见
- 支持NAT的路由器
- 外出数据包:替换源地址和端口号为NAT IP地址和新的端口号,目标IP和端口不变
- 记住每个转换替换对
- 进入数据包:替换目标IP地址和端口号,采用存储在NAT映射表mapping表项 【源IP,端口】
- NAT穿越问题:如果客户端需要连接在NAT后面的服务器
- 静态配置NAT
- Universal Plug and Play (UPnP) ;Internet Gateway Device (IGD)协议:允许服务器查询/增加/删除NAT中的mapping表项
- 中继 (used in Skype):NAT后面的服务器主动建立和中继的连接,外部的客户端链接到中继
- IPV6
- 数据报
- 固定的40字节头部
- 数据报传输过程中,不允许分片
- Priority:流中数据报的优先级
- Next header:上层协议
- IPv4 -> IPv6
- 隧道Tunneling:在IPv4路由器之间传输的IPv4数据报中携带IPv6数据报
- IPv4/IPv6双栈服务器,将IPv6数据完整的封装在IPv4分组中
- 数据报