reference:
https://www.jianshu.com/p/1183208dd5e3(简书IP)
https://www.bilibili.com/read/cv8702424(bilibili)

IP

介绍

IP协议负责将数据包发送给最终目标计算机,能够让世界上任何两台计算机进行通信。
文章介绍IP的主要功能及其协议具体内容的知识点。

OSI:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。

定义

IP(Internet Protocol)即网络之间互连的协议。
IP相当于OSI参考模型的第三层——网络层。网络层的功能是基于IP地址进行不同网络系统间的路径选择。
IP作用:对不同数据链路的相异特性进行抽象化,在复杂的网络环境中将数据包发给最终的目标地址。
数据链路层提供直连同一网络下的两个设备之间的通信功能。网络层的IP则负责在两个不同网络网络之间进行通信传输。

IP基础知识

三大模块:IP寻址、路由、IP分包与组包。

IP的两大功能

  1. 路由控制

含义:指分组数据发送到最终目标地址的功能。
作用:即使网络非常复杂,通过路由控制就可以确定到达目标地址的通路。
路由控制表:所有主机都维护着一张路由控制表(Routing Table),记录了IP数据在下一步应该发给 哪个路由器。IP包根据这个路由表在各个数据链路上传输。
各跳之间无计划传输。(个人理解)数据链路是载具,IP数据包是载体,路由器是分配端;

  1. 数据链路的抽象化

IP对不同数据链路进行了抽象。那么不同数据链路之间最大的区别是:他们各自的最大传输单位(MTU, Maximum Transmission Unit)不同。
IP会进行分片处理(IP Fragmentation),将较大的IP包分成多个较小的IP包。
从网络层上看,可以忽略数据包在各个数据链路上的MTU,只需要按照原地址发送的长度接收数据包。

IP属于面向无连接型

无连接型含义:发包之前,不需要建立与对端目标地址之间的连接。?保证顺序的方法
缺点:产生冗余的通信。
优点,简化,提速

IP地址的基础知识

IP地址(IPV4)

定义:用32位二进制数来表示。以每8位为一组,分成4组,每组用“.”隔开,再将每组数转成十进制数。
规则:

  1. 最多允许43亿台(2^32)计算机连接到网络。
  2. 每一块网卡(NIC)都得设置IP地址。
  3. IP地址由网络和主机两部分标识而成。
  • 网络标识在数据链路的每个段配置不同的值,同段内的主机的网络地址是相同的。
  • 主机标识不允许在同一网段内重复出现。
  • 通过设置网络地址和主机地址,保证了整个互联网中主机的IP地址都是唯一的。

    IP地址分类

    • A类地址
      定义:首位0开头,后24位是主机标识
      网络地址范围:0.0.0.0~127.0.0.0
      一个网段内可以容纳的主机上限是2^24-2个
    • B类地址
      定义:前两位是10的地址,后16位是主机标识
      网络地址范围:128.0.0.1~191.255.0.0
      一个网段可以容纳的主机上限是2^16-2个
    • C类地址
      定义:前三位是110的地址,前24位是网络标识,后8位是主机标识。
      网络地址范围:192.0.0.0~239.255.255.0
      一个网段内可容纳的主机地址上限是2^8-2个(254个)
    • D类地址
      定义:前四位是1110的地址,前32位是网络标识
      网络地址范围:224.0.0.0~239.255.255.255
      D类地址没有主机标识,常被用于多播
    • 关于分配IP主机地址的注意事项:
      主机地址不可以全部为0或全部为1。
      全部为0标识对应的网络地址或IP地址不可获知。
      全部为1的主机地址通常作为广播地址。
      所以以上每个网段的主机数量上限是2^n-2个。

广播地址

广播地址定义:IP地址的主机标识全部设置为1.
广播定义:向某个网段的广播地址发送IP包,这个网段的所有主机都能收到这个包,由主机IP之上的一层去判断是否接收数据。
缺点:给毫无关系的网络或主机带来影响,造成不必要的流量。

子网掩码

子网掩码用二进制方式表示,也是32位二进制数字。
直接使用A\B\C类地址,有点浪费资源,人们开始采用一种新的组合方式减少地址空间的浪费。
子网掩码可以通过子网网络地址细分出比A\B\C类更小粒度的网络。
规则:1表示IP地址的网络地址对应位。0表示IP地址的主机地址对应位。
使用子网掩码划分子网后,子网内可以通信,跨子网不能通信,子网间通信应该使用路由器,并正确配置静态路由信息。划分子网,就应遵循子网划分结构的规则。

全局地址与私有地址

学校、家庭、公司内部的终端设置私有IP,而在路由器(宽带路由器)或必要的服务器上设置全局IP。全局IP在整个互联网范围内保持为宜,但私有地址不需要,只要在同一个域内保证唯一即可。

全局地址由谁决定

ICANN(Internet Corporation for Assigned Names and Numbers,互联网名称与数字地址分配机构)。负责管理全世界的IP地址和域名。

路由控制

作用:仅仅有IP地址不足以将数据发向目标地址,在数据发送过程中需要“指明路由器或主机”的信息,以便真正发往目标地址。保存这种信息的就是路由控制表(Routing Table)。该表是由一个“路由协议”(有别于IP协议)制作而成的。

路由控制与IP地址

  • 默认路由
  • 主机路由
  • 环回地址
    同一台计算机的程序之间进行网络通信,使用一个特殊IP地址 127.0.0.1作为环回地址,与该地址等价的是localhost主机名。使用这个IP或主机名,数据包不会发向网络。

    路由控制表的聚合

    又称路由汇总(Aggregation)。
    作用:路由表越大,管理它需要的内存和CPU也就越大,而且查找路由表的时间就越长,导致转发IP数据包的性能下降。如果要构建大规模、高性能网络,需要尽可能削减路由表的大小。
    利用网络地址的比特分步进行分层配置。对内即使有多个子网掩码,对外呈现出的也是同一个网络地址。

IP对数据的处理

规则

按照路径中存在的所有数据链路中 最小的MTU发送,可以避免中途的路由器进行分片处理。

IPV6

8个16位,共128比特,是IPv4长度的4倍。
每16位比特为一组,用”:”隔开。出现连续的0时可以省略,用”::”表示。一个IP地址只允许出现一次“::”。
从根本上解决IPv4地址耗尽的问题。

特点

  • 依旧适应互联网分层构造,路由控制上也尽可能避免路由表膨大
  • 性能提升,简化首部,路由器不再分片,通过路径MTU只由发送端主机进行分片处理
  • 即插即用
  • 采用认证与加密功能
  • 多播、Moblie IP比IPv4更顺利使用

IP包的内容

IPV4的首部

IP首部包含着 用IP协议进行发包控制时 所有的必要信息。
首部以每32比特(8字节)为一个单位:

  • 版本号:4比特,IPv4即值为4
  • 首部长度(IHL:Internet Header Length):IP首部大小。4比特,单位是4字节。值为5时,IP首部长度为4*5=20字节。
  • 区分服务(TOS:Type Of Service):表明服务质量。8比特,现已划分为DSCP和ECN两个字段。
  • 总长度(Total Length):表示IP首部与数据部分的总字节数。该字段长16比特。因此IP包最大长度是65535字节。
  • 标识(ID:Identification):用于分片重组,该字段长16比特。同一分片的标识值相同,不同分片的标识值不同。
  • 标志(Flags):表示包被分片的相关信息,该字段长3比特。可以表示 是否使用分片、是否分片的最后一个包。
  • 片偏移(FO:Fragment Offset):标识被分片的每一个分段相对于原始数据的位置。该字段长13比特。单位是8字节,因此最大可以表示8* 2^13 =65536字节的位置。

  • 生存时间(TTL:Time To Live):指可以中转多少个路由器,没经过一个路由器,TTL会减1,该字段长度为8比特。因此一个包的中转路由次数不会超过2^8=256次。由此可以避免IP包在网络内无限传递的问题。
  • 协议(Protocol):表示IP首部的下一个首部属于哪个协议(其实就是上层协议)。该字段长度8比特。
  • 首部校验和(Header Checksum):按照一定算法校验数据报的首部,不校验数据部分,主要来确保IP数据报不被破坏。该字段长度16比特。
  • 源地址(Source Address):32比特,表示发送端IP地址。
  • 目标地址(Destination Address):32比特,表示接收端IP地址。
  1. 可选项(Options):
    长度可变,通常只用于实验或诊断时使用。包含如下几点信息:
    • 安全级别
    • 源路径
    • 路径记录
    • 时间戳
  2. 填充(Padding):再有可选项的情况下,首部长度可能不是32比特的整数倍。为此,通过向该字段填充0,调整为32比特的整数倍。