计算机网络-网络层篇-IP协议

时间:2022-10-02 09:52:18

目录

虚拟互连网络

IP地址

回顾一下

IP协议的转发流程


  • 虚拟互连网络

  • 实际的计算机网络是错综复杂的
  • 物理设备通过使用IP协议,屏蔽了物理网络之间的差异
  • 当网络中的主机使用IP协议连接时,则无需关注网络细节
  • IP协议使得复杂的实际网络变为一个虚拟互连的网络
  • IP协议使得网络层可以屏蔽底层细节而专注网络层的数据转发
  • IP协议解决了在虚拟网络中数据报传输路径的问题
  • IP地址

  • MAC地址是唯一的,不可改变的
  • IP地址是可变的,受网络环境影响
  • IP地址长度为32位,常分成4个8位
  • IP地址常使用点分十进制来表示(0~255.0~255.0~255.0~255)
  • 之前说过,在物理层传输的是01的比特流
  • 数据链路层传输着数据帧
  • 对于数据帧来说,它分为帧首部,帧的数据,帧尾部
  • 帧的数据主要是IP数据报的内容
  • 分为IP首部与IP数据报的数据
  • IP首部
  • 其中每一行有32比特位,4字节
  • 必有5行,另有可选行
  • 所以至少有20字节长度
  • 细说:
  • 第1行:
  • 版本:
  • 占4位,指的是IP协议的版本,通信双方的版本必须一致,当前主流版本是4,即IPv4,也有IPv6
  • 版本不一不能通信
  • 首部位长度
  • 占4位,最大数值为15,表示的是IP首部长度
  • 单位是“32位字” (4个字节),也即是IP首部最大长度为60字节
  • 8位服务类型(TOS)一般不用关心
  • 总长度
  • 总长度:占16位,最大数值为65535
  • 表示的是IP数据报总长度(IP首部+IP数据)
  • 讲到长度,回顾下MTU
  • IP协议它最大长度比MTU大
  • 在实际中确实更大时,数据链路层将会把IP协议进行分片,即把IP数据报拆分为多个IP数据帧来传输
  • 第2行:
  • 标识一般为协议内部所使用的,不用关心,占16位
  • 标志占3位,标记IP报文是否可以分片
  • 片偏移
  • 拆分为多个IP数据帧时,需要通过片偏移记录当前数据帧保存的是第几个偏移的IP数据
  • 第3行:
  • 8位生存时间(TTL)
  • 占8位,表明IP数据报文在网络中的寿命,每经过一个设备,TTL减1,当TTL=0时,网络设备必须丢弃该报文
  • 是为了当IP报文在网络中找不到终点时,避免IP数据在网络中无限进行传输,消耗带宽
  • 协议
  • 占8位,表明IP数据所携带的具体数据是什么协议的(如:TCP、UDP等)
  • 首部校验和
  • 占16位,校验IP首部是否有出错
  • 第4行:
  • 32位源IP地址
  • 指示着发送IP数据报的IP地址
  • 32位目的IP地址
  • 指示着IP数据报要到达哪个IP的IP地址
  • 回顾一下

  • 逐跳(hop-by-hop):
  • 报文从计算机A传输到计算机B,经过“网络一”、“路由器甲”、“网络二”、“路由器乙”等,是“一跳一跳”的
  • MAC地址表
  • MAC地址表主要由MAC地址与硬件接口组成
  • 作用:数据链路层转发(交换机根据数据帧的目的MAC地址查看MAC表,根据表项由相应接口转发出去)
  • 存在设备
  • 二层交换机
  • 路由表
  • 路由表主要由目的IP地址和下一跳IP地址组成,计算机和路由器都拥有路由表
  • 作用:网络层转发(路由器根据目的IP地址,查询IP路由表找到下一跳地址,转发到下一跳路由器)
  • 存在设备
  • PC机、路由器
  • IP协议的转发流程

  • MAC表(仅从数据链路层看)
  • A通过网卡发出数据帧
  • 数据帧到达路由器,路由器取出前6字节
  • 路由器匹配MAC地址表,找到对应的网络接口
  • 路由器往该网络接口发送数据帧
  • 路由表(仅从网络层看)
  • A发出目的地为C的IP数据报,查询路由表发现下一跳为E
  • A将数据报发送给E
  • E查询路由表发现下一跳为F,将数据报发送给F
  • F查询路由表发现目的地C直接连接,将数据报发送给C
  • 2者结合(从网络层与数据链路层看)
  • A发出目的地为C的IP数据报,查询路由表发现下一跳为E
  • A将IP数据报交给数据链路层,并告知目的MAC地址是E
  • 数据链路层填充源MAC地址A和目的MAC地址E
  • 数据链路层通过物理层将数据发送给E
  • E的数据链路层接收到数据帧,把帧数据交给网络层
  • E查询路由表,发现下一跳为F
  • E把数据报交给数据链路层,并告知目的MAC地址为F
  • E的数据链路层封装数据帧并发送
  • F的数据链路层接收到数据帧,把帧数据交给网络层
  • F查询路由表,发现下一跳为C
  • F把数据报交给数据链路层,并告知目的MAC地址为C
  • F的数据链路层封装数据帧并发送
  • 数据帧每一跳的MAC地址都在变化
  • IP数据报每一跳的IP地址始终不变