计算机网络——25Internet-Protocol

时间:2024-03-25 07:14:20

Internet Protocol

互联网中的网络层

主机、路由器中的网络层功能

在这里插入图片描述

IP数据报格式

在这里插入图片描述

项目 说明
ver 版本号,如Ipv4就是0100
head len 头部的长度,一般头部是20个字节(也就是上图中的5行),但是也有可选项,也就是头部是变长的,因此可以使用head len来计算可选项
type of service 数据段的类型,本来为输出队列的调度机制提供参考的,但后来废弃了
length 数据报总厂
16-bit的id,flags fragment offset 后面的分片/重组
time to live(TTL) 可用以ICMP协议
upper layer 将负载交给的上层协议,比如说TCP,还是UDP,还是ICMP,实际上是根据端口号区分的
Internet checksum 校验头部的

IP分片和重组

  • 网络链路有MTU (最大传输单元) –链路层帧所携带的最大数据长度
    • 不同的链路类型
    • 不同的MTU
  • 大的IP数据报在网络上被分片 (“fragmented”)
    • 一个数据报被分割成若干个小 的数据报
      • 相同的ID
      • 不同的偏移量
      • 最后一个分片标记为0
    • “重组”只在最终的目标主机进行:减少路由器的负担,要是每个路由器都重组再分片压力太大
    • IP头部的信息被用于标识,排序相关分片

在这里插入图片描述

例子:

在这里插入图片描述

  • (接受到了)4000 字节数据报:
    • 20字节头部
    • 3980字节数据
  • MTU = 1500 bytes
    • 第一片:20字节头部+1480字节数据;偏移量:0
    • 第二片:20字节头部+1480字节数据(1480字节应用数据);偏移量:1480/8=185
    • 第三片:20字节头部+1020字节数据(应用数据);偏移量:2960/8=370

IP编址:引论

  • IP地址: 32位标示,对主机或者路由器的接口编址
  • 接口: 主机/路由器和物 理链路的连接处
    • 路由器通常拥有多个接口
    • 主机也有可能有多个接口
    • IP地址和每一个接口关联
  • 一个IP地址和一个接口相关联

在这里插入图片描述

在这里插入图片描述

子网

  • IP地址:
    • 子网部分(高位bits)
    • 主机部分(低位bits)
  • 什么是子网?
    • 一个子网内的节点(主 机或者路由器)它们的IP地址的高位部分相同 ,这些节点构成的网络的一部分叫做子网
    • 子网内节点的分组的收发无需路由器介入(借助交换机即可),子网内各主机可以在物理上相互直接到达 ——只需要交换机即可,一跳可达

在这里插入图片描述

划分子网方法

  • 要判断一个子网, 将每一个接口从主机或者路由 器上分开,构成了一个个网络的孤岛
  • 每一个孤岛(网络)都 是一个都可以被称之为 subnet.

在这里插入图片描述

IP地址类型

IP地址分类

在这里插入图片描述

特殊IP地址

  • 一些约定:
    • 子网(网络)部分全为0,表示本网络
    • 主机部分全为0,表示本主机
    • 主机部分全为1表示,广播地址,这个网络的所有主机
    • 除了前面的类号 全为1——在本地网络广播

在这里插入图片描述

内网(专用)IP地址

  • 专用地址:地址空间的一部份供专用地址使用
  • 永远不会被当做公用地址来分配, 不会与公用地址重复
  • 只在局部网络中有意义,区分不同的设备
  • 路由器不对目标地址是专用地址的分组进行转发
  • 专用地址范围
IP类型 专用地址范围 MASK
A类 10.0.0.0-10.255.255.255 255.0.0.0
B类 172.16.0.0-172.31.255.255 255.255.0.0
C类 192.168.0.0-192.168.255.255 255.255.255.0

CIDR(无类域间路由)

  • 子网部分可以在任意的位置(而不必是固定的位置)
  • 地址格式: a.b.c.d/x, 其中 x 是 地址中子网号的长度

实例:

在这里插入图片描述

转发表和转发算法

Destination Subnet Num Mask Next hop Interface
202.38.73.0 255.255.255.192 IPx Lan1
202.38.64.0 255.255.255.192 IPy Lan2
Default IPz Lan0
  • 获得IP数据报的目标地址IP Des addr
  • 遍历转发表中的每一个表项
    • 如 (IP Des addr) & (mask) == destination, 则按照表项 对应的接口转发该数据报
    • 如果都没有找到,则使用默认表项转发数据报,一般是整个网络的出口 default Gateway

如何获得一个IP地址

  • 系统管理员将地址配置在一个文件中
    • Wintel: control-panel->network- >configuration->tcp/ip->properties
    • UNIX: /etc/rc.config
  • DHCP:从服务器中动态获取一个IP地址
    • “plug-and-play”

DHCP: Dynamic Host Configuration Protocol

目标:

  • 允许主机在加入网络的时候,动态地从服务器那里获得IP地址
    • 可以更新对主机在用IP地址的租用期-租期快到了
    • 重新启动时,允许重新使用以前用过的IP地址
    • 支持移动用户加入到该网络(短期在网)

在这里插入图片描述

DHCP工作概况:

阶段 含义 源地址 目标地址
主机上限时广播“DHCP discover”报文 问一下有活着的DHCP服务器吗 0.0.0.0,32全0的本机地址,因为此时还没有分配ip地址 255.255.255.255,(32位全1的广播地址,因为不知道DHCP服务在哪)
DHCP服务器用“DHCP offer”单播提供报文响应 DHCP服务器表明自己的存在;并且包含分配给主机的关于ip的配套信息(包括那四项) DHCP服务器的地址 255.255.255.255,也是全局广播,根据事务号来区分
主机单播请求IP地址:发送“DHCP request”报文 主机向DHCP服务器确定ip配置信息 0.0.0.0,也是表示自己的地址 255.255.255.255,也是广播
DHCP服务器发送地址:“DHCP ack”报文 DHCP把配置信息给主机 DHCP服务器的地址 255.255.255.255,广播

在这里插入图片描述

示例:

在这里插入图片描述

机构获取ip子网部分

假设某个学校,有八个校区,要获取ip子网

  • 首先从ISP获取大的网络,ISP’s block 11001000 00010111 00010000 00000000 200.23.16.0/20
  • 然后再划分,由于有8个校区,也就是要划分成8个部分,用原有的20位后面的3位来表示子网,从而进行划分

ISP获取地址块

Q:一个ISP如何获得一个地址块?

A:向ICANN申请

  • 分配地址
  • 管理DNS
  • 分配域名,解决冲突

IP层次编址/路由聚集

路由聚集

在这里插入图片描述

最长精确匹配

在这里插入图片描述

NAT: 网络地址转换

原理

在这里插入图片描述

特点:本地网络只有一个有效IP地址

NAT 路由器必须:

  • 外出数据包:替换源地址:端口号为 NAT的IP地址:新的端口号,目标IP和端口不变;远端的C/S将会用NAP IP地址,新端口号作为目标地址
  • 记住每个转换替换对(映射)(在NAT转换表中)源IP:端口 vs NAP IP:新端口
  • 进入数据包:替换目标IP地址和端口号,采用存储在NAT表中的mapping表项,用(源IP,端口)

流程

在这里插入图片描述

优点

省钱:不需要从ISP分配一块地址,可用一个IP地址用于所有的(局域网)设备
可以在局域网改变设备的地址情况下而无须通知外界
可以改变ISP(地址变化)而不需要改变内部的设备地址
安全:局域网内部的设备没有明确的地址,对外是不可见的

NAT的争议和问题

NAT能够篡改接受的分组的端口信息

  • 路由器只应该对第3层做信息处理,而这里对端口号(4层)作了处理
  • 违反了end-to-end 原则
    • 端到端原则:复杂性放到网络边缘
      • 无需借助中转和变换,就可以直接传送到目标主机
    • NAT可能要被一些应用设计者考虑, eg, P2P applications
    • 外网的机器无法主动连接到内网的机器上
  • 问题,NAT穿越: 如果客户端需要连接在NAT后面的服务器,如何操作

地址短缺问题可以被IPv6 解决(因为NAT一开始解决的就是地址短缺的问题)

NAT 穿越问题

在这里插入图片描述

客户端需要连接地址为 10.0.0.1的服务器

  • 服务器地址10.0.0.1 LAN本地地址 (客户端不能够使用其作为目标地址)
  • 整网只有一个外部可见地址: 138.76.29.7

静态配置NAT
方案1: 静态配置NAT:转发 进来的对服务器特定端口连接 请求

  • (123.76.29.7, port 2500) 总是转发到10.0.0.1 port 25000

IGD/UPnP
方案2: Universal Plug and Play (UPnP) Internet Gateway Device (IGD) 协议. 允许 NATted主机可以: 动态分配端口

  • 获知网络的公共 IP地址 (138.76.29.7)
  • 列举存在的端口映射
  • 增/删端口映射 (在租用时间内)

在这里插入图片描述

中继
方案3:中继(used in Skype)

在这里插入图片描述

IPV6协议

目的

  • 初始动机: 32-bit地址空间将会被很快用完,为了增加地址数量
  • 另外的动机:
    • 改变头部格式,帮助加速处理和转发
      • TTL-1(之前的ICPM协议每次都要TTL-2)
      • 头部checksum (之前都会校验头部)
      • 分片 (当MTU小于分组的时候,要分片)
    • 头部格式改变帮助QoS

IPV6数据报

IPv6 数据报格式:

  • 固定的40字节头部
  • IP地址由原先的32位改成了128位(16个字节)
  • 数据报传输过程中,不允许分片

IPV6头部

在这里插入图片描述

  • Priority: 标示流中数据报的优先级(优先级是与非技术方面结合的,比如收费等)
  • Flow Label: 标示多个数据报在一个“flow” ( “flow”的概念没有被严格的定义)
  • Next header: 标示上层协议(就是网络层以上传给哪个协议,TCP/UDP)

和IPv4的其它变化

  • Checksum: 被移除掉,降低在每一段中的处理 速度
  • Options: 允许,但是在头部之外, 被 “Next Header” 字段标示 (Next Header的格式是TLV type-length-value)
  • ICMPv6: ICMP的新版本
    • 附加了报文类型, e.g. “Packet Too Big”
    • 多播组管理功能

从IPv4到IPv6的过渡:隧道

在这里插入图片描述

隧道: 在IPv4路由器之间传输的IPv4数据报中携带IPv6数据报

在这里插入图片描述

在这里插入图片描述

IPv6的应用

  • Google: 8% 的客户通过IPv6访问谷歌服务(当然现在还在增加)
  • NIST: 全美国1/3的*域支持IPv6
  • 估计还需要很长时间进行部署 (20年)