Skip to content

ip协议详解

虚拟互联网络

  • 互联网络遇到的问题

    • 简单网络拓扑图
      简单网络拓扑图
      以上,为一个简单网络拓扑图。引申出一个问题,设备A是如何把信息传输给设备C的
    • 复杂大型网络拓扑
      复杂大型网络拓扑
      以上,为一个复杂大型网络拓扑。引申出一个问题,设备A是如何把信息传输给设备B的
      • A 到 B的链路有很多条
  • 虚拟互联网络概念

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

IP协议介绍

  • MAC地址是每个设备的唯一身份证,在数据链路层只要是拥有MAC地址就可以进行数据的传输。MAC地址是使用48位来表示的,表示的时候使用的是16进制。
  • 网络层也有一个地址的概念,这个地址就是IP地址,IP地址是每个设备在网络上的唯一身份证,IP地址长度总共为32位,一般表示的时候我们采用点分十进制的形式表示的。
  • MAC地址 与 IP地址的区别
    • MAC地址是唯一且不可改变的,网卡从一个计算机拆下来装到另外一台计算机MAC地址是不会变的。
    • IP地址对于网络层的设备来说是可变的,只要设备的网络环境发生变化,设备的IP就会发生变化。

MAC地址与IP地址图示

  • IP地址长度为32位,常分成4个8位
  • IP地址常使用点分十进制来表示(0255.0255.0255.0255)
    • 114.114.114.1141.1.1.18.8.8.8255.255.255.255111.111.111.111

IP 地址的运算

  • 使用32位一共可以表示多少个IP地址呢
    • 2^32 = 4294961296(42亿个)

IP数据报

Quote

在计算机物理层,传输的是 010101011 这样的比特流。
对于数据链路层,传输的是 [[帧首部][帧数据][帧尾部]] 为粒度的东西
对于数据链路层中的 [帧数据] 其实就是 IP数据报 的内容
IP数据报 会分成 [[IP首部][IP数据报的数据]]

IP数据报

从下往上,依次是物理层、数据链路层、网络层中,数据依次传输的衍生细节图示。
  • IP数据报中 [IP首部] 的图示

    IP数据报中 [IP首部] 的图示
    以上图示,每一行加起来都是32个比特位,也就是4个字节。因此对于ip协议的头部来说,至少应该需要有20个字节的长度。

    • 版本:占 4 位,指的是IP协议的版本,通信双方的版本必须一致,当前主流版本是4,即IPv4,也有IPv6。如果通行双方版本不一致则不能进行通信。
    • 首部位长度:占 4 位,最大数值为 15,表示的是IP首部长度,单位是“32位字”(4个字节),也即是IP首部最大长度为60字节(15 * 4)。
    • 总长度:占 16 位,最大数值为 65535,表示的是 IP 数据报总长度(IP首部 + IP数据)
      • 注意:对于数据链路层传输的最大长度称之为MTU(数据链路层的最大传输单元),且 MTU 一般为1500个字节,而在当前规格中长度最大为65535的长度,那么这个长度是比 MTU 要求的长度要高的,如果在真正传输的过程中 总长度 > MTU,那么数据链路层将会把IP协议进行分片。也就是把一个较长的数据报拆分成多个数据帧来进行传输。
    • 标识:协议内部具体所使用的,无需关心
    • 标志:只有2位在用,作用是标记这个IP报文是否需要分片
    • 片偏移:如果IP报文的长度 > MTU,那么将进行对IP报文的分片,把一个IP报文拆分成多个数据帧,然后在数据链路中进行传输。因此,如果需要拆分的话,那么这里的13位片偏移将会用来记录当前的数据帧保存的是第几个偏移的IP数据
    • TTL:占8位,表明IP数据报文在网络中的寿命,每经过一个设备TTL减一(不管是路由器还是计算机),当TTL=0时,网络设备必须丢弃该报文。TTL解决的问题是,当IP报文在网络中找不到终点的时候,避免这个IP数据在网络中无限的进行传输与消耗带宽的。
    • 协议:占8位,表明IP数据所携带的具体数据是什么协议的(如:TCP、UDP等)

      • 扩展:协议有很多,字段值会区分不同的协议
      协议名 ICMP IGMP IP TCP UDP OSPF ...
      字段值 1 2 4 6 17 89 ...
    • 首部校验和:占16位,校验IP首部是否有出错。接收方在接收了IP协议的报文之后,也会进行头部的校验,如果有出错的话直接丢弃掉。这就是首部校验和的作用。

    • 源IP地址:占32位,发送数据报的IP地址
    • 目的IP地址:占32位,数据报要到达物理设备的IP地址