目录
-
虚拟互连网络
- 实际的计算机网络是错综复杂的
- 物理设备通过使用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地址始终不变