网络原理(⽹络层)-> IP协议解

前言:
大家好我是小帅,今天我们来了解网络层IP协议格式


文章目录

  • 1. ⽹络层
    • 1.1 IP协议解
    • 1.2 地址管理
      • 1.2.1IP地址的分类:
      • 1.2.2子网掩码(CIDR)
      • 1.2.3 子网的划分
      • 1.2.3特殊的IP地址
      • 1.2.4 IP地址的数量限制
      • 1.2.5私有IP地址和公⽹IP地址
    • 1.3 路由选择


1. ⽹络层

主要功能:地址管理,路由选择
在复杂的⽹络环境中确定⼀个合适的路径.

1.1 IP协议解

在这里插入图片描述

IP协议格式:
在这里插入图片描述
解释:

  1. 4位版本号

指定IP协议的版本, 对于IPv4来说, 就是4.

  1. 4位首部⻓度(header length)

IP头部的⻓度是多少个32bit, 也就是 length * 4 的字节数. 4bit表⽰最
⼤的数字是15
, 因此IP头部最⼤⻓度是60字节

  1. 8位服务类型(Type Of Service)

3位优先权字段(已经弃⽤), 4位TOS字段, 和1位保留字段(必须置为
0). 4位TOS分别表⽰: 最⼩延时, 最⼤吞吐量, 最⾼可靠性, 最⼩成本. 这四者相互冲突, 只能选择⼀个.
对于ssh/telnet这样的应⽤程序, 最⼩延时⽐较重要; 对于ftp这样的程序, 最⼤吞吐量⽐较重要.

  1. 16位总⻓度(total length)

IP数据报整体占多少个字节.
在这里插入图片描述

  1. • 16位标识(id)

唯⼀的标识主机发送的报⽂. 如果IP报⽂在数据链路层被分⽚了, 那么每⼀个⽚⾥⾯的
这个id都是相同的.

  1. 3位标志字段

第⼀位保留(保留的意思是现在不⽤, 但是还没想好说不定以后要⽤到). 第⼆位置为1表⽰禁⽌分⽚, 这时候如果报⽂⻓度超过MTU, IP模块就会丢弃报⽂. 第三位表⽰"更多分⽚", 如果数据包被分片了, 最后⼀个分⽚置为1, 其他分片是0. 类似于⼀个结束标记,利用来组装数据包。
在这里插入图片描述

  1. 13位分⽚偏移(framegament offset)

是分⽚相对于原始IP报⽂开始处的偏移. 其实就是在表⽰当前分⽚在原报⽂中处在哪个位置(用来数据分片的拼装). 实际偏移的字节数是这个值 * 8 得到的. 因此, 除了最后⼀个报⽂之外, 其他报⽂的⻓度必须是8的整数倍(否则报⽂就不连续了).

  1. 8位⽣存时间(Time To Live, TTL)

: 数据报到达⽬的地的最⼤报⽂跳数. ⼀般是64. 每次经过⼀个路
由器, TTL -= 1, ⼀直减到0还没到达, 那么就丢弃了. 这个字段主要是⽤来防⽌出现路由循环在这里插入图片描述
在这里插入图片描述

  1. 8位协议

表⽰上层协议的类型IP数据包中,携带的载荷,是那种传输协议的数据报;

  1. 16位头部校验和

使⽤CRC进⾏校验, 来鉴别头部是否损坏.只针对IP协议头部,IP报头,载荷部分都有自己的校验和了

  1. • 32位源地址和32位⽬标地址

数据从哪里来,从哪里去。

  1. 选项字段

不定⻓, 最多40字节,内容暂时不了解。


1.2 地址管理

IP地址分为两个部分, ⽹络号和主机号

⽹络号: 保证相互连接的两个⽹段具有不同的标识;

主机号: 同⼀⽹段内, 主机之间具有相同的⽹络号, 但是必须有不同的主机号;
计算机网络中规定:

1. 同一个局域网中的设备,网络号必须相同,主机号必须不同。
2. 相邻局域网的网络号必须不同,主机号可以相同。
相邻局域网:由路由器相连的不同子网。

在这里插入图片描述


1.2.1IP地址的分类:

在这里插入图片描述

  1. A类 0.0.0.0到127.255.255.255
  2. B类 128.0.0.0到191.255.255.255
  3. C类 192.0.0.0到223.255.255.255
  4. D类 224.0.0.0到239.255.255.255
  5. E类 240.0.0.0到247.255.255.255

随着Internet的⻜速发展,这种划分⽅案的局限性很快显现出来,⼤多数组织都申请B类⽹络地址, 导致B类地址很快就分配完了, ⽽A类却浪费了⼤量地址;

例如, 申请了⼀个B类地址, 理论上⼀个⼦⽹内能允许6万5千多个主机. A类地址的⼦⽹内的主机数更多.

然⽽实际⽹络架设中, 不会存在⼀个⼦⽹内有这么多的情况. 因此⼤量的IP地址都被浪费掉了.

针对这种情况提出了新的划分⽅案, 称为CIDR

1.2.2子网掩码(CIDR)

  1. 引⼊⼀个额外的⼦⽹掩码(subnet mask)来区分⽹络号和主机号;
  2. ⼦⽹掩码也是⼀个32位的正整数. 通常⽤⼀串 “0” 来结尾;
    3. 将IP地址和⼦⽹掩码进⾏ “按位与” 操作, 得到的结果就是⽹络号;
    4. • ⽹络号和主机号的划分与这个IP地址是A类、B类还是C类⽆关;

1.2.3 子网的划分

子网里面还有子网(嵌套子网),那么里面的子网是通过什么来分辨来达到数据指定传输的呢?

子网里面的子网也有子网掩码
通过子网掩码来确定网络号和主机号是多少,从而大大提高IP地址的使用率。
在这里插入图片描述
可⻅,IP地址与⼦⽹掩码做与运算可以得到⽹络号, 主机号从全0到全1就是⼦⽹的地址范围;

IP地址和⼦⽹掩码还有⼀种更简洁的表⽰⽅法,例如140.252.20.68/24,表⽰IP地址为140.252.20.68, ⼦⽹掩码的⾼24位是1,也就是255.255.255.0。

我们来做一道题
在这里插入图片描述


1.2.3特殊的IP地址

1. 将IP地址中的主机地址全部设为0, 就成为了⽹络号, 代表这个局域⽹;

2. 将IP地址中的主机地址全部设为1, 就成为了⼴播地址, ⽤于给同⼀个链路中相互连接的所有主机发送数据包;

3.127.x的IP地址⽤于本机环回(loop back)测试,通常是127.0.0.1。


1.2.4 IP地址的数量限制

我们知道, IP地址(IPv4)是⼀个4字节32位的正整数. 那么⼀共只有 2的32次⽅ 个IP地址, ⼤概是43亿左右. ⽽TCP/IP协议规定, 每个主机都需要有⼀个IP地址.

这意味着, ⼀共只有43亿台主机能接⼊⽹络么?

并不是的,

由于⼀些特殊的IP地址的存在, 数量远不⾜43亿; 另外IP地址并⾮是按照主机台数来配置的, ⽽
是每⼀个⽹卡都需要配置⼀个或多个IP地址.

CIDR在⼀定程度上缓解了IP地址不够⽤的问题(提⾼了利⽤率, 减少了浪费, 但是IP地址的绝对上限并没有增加), 仍然不是很够⽤. 这时候有三种⽅式来解决:

  1. 动态分配IP地址: 只给接⼊⽹络的设备分配IP地址. 因此同⼀个MAC地址的设备, 每次接⼊互联⽹中,得到的IP地址不⼀定是相同的;

  2. NAT技术(后⾯会重点介绍);

  3. IPv6: IPv6并不是IPv4的简单升级版. 这是互不相⼲的两个协议, 彼此并不兼容; IPv6⽤16字节128位来表⽰⼀个IP地址; 但是⽬前IPv6还没有普及;


1.2.5私有IP地址和公⽹IP地址

如果⼀个组织内部组建局域⽹,IP地址只⽤于局域⽹内的通信,⽽不直接连到Internet上,理论上 使⽤任意的IP地址都可以,但是RFC 1918规定了⽤于组建局域⽹的私有IP地址。

私有IP地址:

  1. 有IP地址是指那些保留用于内部网络(如家庭、办公室或企业局域网)使用的IP地址。这些地址不会在互联网上路由,也就是说,它们不能直接从外部网络访问。

RFC 1918定义了三个范围的IPv4私有地址:

10.0.0.0 到 10.255.255.255 (10/8 前缀)
172.16.0.0 到 172.31.255.255 (172.16/12 前缀)
192.168.0.0 到 192.168.255.255 (192.168/16 前缀)

  1. 使用私有IP地址可以帮助节省公网IP地址资源,并且提供了一定程度的安全性,因为这些地址不在公共互联网上广播。

公网IP地址:

  1. 公网IP地址是可以被全球唯一识别并在互联网上路由的IP地址。每个连接到互联网的设备都需要一个公网IP地址来发送和接收数据。
  2. 公网IP地址由Internet Assigned Numbers Authority (IANA)分配给地区性互联网注册机构(RIRs),再由RIRs分配给ISP和其他组织。
  3. 在IPv4中,由于地址空间有限,很多情况下多个用户会共享一个公网IP地址,这通常是通过NAT(网络地址转换)技术实现的。而在IPv6中,地址空间非常庞大,因此通常可以为每个设备分配一个唯一的公网IP地址。
  4. 公网IP地址允许设备之间的直接通信,比如服务器需要公网IP地址才能接受来自全世界的请求。

在这里插入图片描述
rtttr

  1. ⼀个路由器可以配置两个IP地址, ⼀个是WAN⼝IP, ⼀个是LAN⼝IP(⼦⽹IP).
  2. 路由器LAN⼝连接的主机, 都从属于当前这个路由器的⼦⽹中.
  3. 不同的路由器, ⼦⽹IP其实都是⼀样的(通常都是192.168.1.1). ⼦⽹内的主机IP地址不能重复. 但是⼦⽹之间的IP地址就可以重复了.
  4. 每⼀个家⽤路由器, 其实⼜作为运营商路由器的⼦⽹中的⼀个节点. 这样的运营商路由器可能会有很多级, 最外层的运营商路由器, WAN⼝IP就是⼀个公⽹IP了.
  5. ⼦⽹内的主机需要和外⽹进⾏通信时, 路由器将IP⾸部中的IP地址进⾏替换(替换成WAN⼝IP), 这样逐级替换, 最终数据包中的IP地址成为⼀个公⽹IP. 这种技术称为NAT⽹络地址转换).
  6. 如果希望我们⾃⼰实现的服务器程序, 能够在公⽹上被访问到, 就需要把程序部署在⼀台具有外⽹IP的服务器上. 这样的服务器可以在阿⾥云/腾讯云上进⾏购买.

1.3 路由选择

在复杂的⽹络结构中, 找出⼀条通往终点的路线;

路由的过程, 是⼀跳⼀跳(Hop by Hop) “问路” 的过程

所谓 “⼀跳” 就是数据链路层中的⼀个区间. 具体在以太⽹中指从源MAC地址到⽬的MAC地址之间的帧传输区间.
在这里插入图片描述
IP数据包的传输过程也和问路⼀样.
过程:

  1. 当IP数据包, 到达路由器时, 路由器会先查看⽬的IP;
  2. 路由器决定这个数据包是能直接发送给⽬标主机, 还是需要发送给下⼀个路由器;
  3. 依次反复, ⼀直到达⽬标IP地址;

那么如何判定当前这个数据包该发送到哪⾥呢?
这个就依靠每个节点内部维护⼀个路由表;

在这里插入图片描述
1. 路由表可以使⽤route命令查看
在这里插入图片描述
这里我们暂时不讲它的使用。

2. 如果⽬的IP命中了路由表, 就直接转发即可;

3. 路由表中的最后⼀⾏,主要由下⼀跳地址和发送接⼝两部分组成,当⽬的地址与路由表中其它⾏都不匹配时,就按缺省路由条⽬规定的接⼝发送到下⼀跳地址。

我们看看一个案例分析:

假设某主机上的⽹络接⼝配置和路由表如下:
在这里插入图片描述

  1. 这台主机有两个⽹络接⼝,⼀个⽹络接⼝连到192.168.10.0/24⽹络,另⼀个⽹络接⼝连到192.168.56.0/24⽹络;
  2. 路由表的Destination是⽬的⽹络地址,Genmask是⼦⽹掩码,Gateway是下⼀跳地址,Iface是发送接⼝,Flags中的U标志表⽰此条⽬有效(可以禁⽤某些 条⽬),G标志表⽰此条⽬的下⼀跳地址是某个路由器的地址,没有G标志的条⽬表⽰⽬的⽹络地址是与本机接⼝直接相连的⽹络,不必经路由器转发;

转发过程例1: 如果要发送的数据包的⽬的地址是192.168.56.3

  1. 跟第⼀⾏的⼦⽹掩码做与运算得 到192.168.56.0,与第⼀⾏的⽬的⽹络地址不符。
  2. 再跟第⼆⾏的⼦⽹掩码做与运算得 到192.168.56.0,正是第⼆⾏的⽬的⽹络地址,因此从eth1接⼝发送出去;
  3. 由于192.168.56.0/24正 是与eth1 接⼝直接相连的⽹络,因此可以直接发到⽬的主机,不需要经路由器转发;

转发过程例2: 如果要发送的数据包的⽬的地址是202.10.1.2

  1. 依次和路由表前⼏项进⾏对⽐, 发现都不匹配;
  2. 按缺省路(上图:default 192.186.10.1)由条⽬, 从eth0接⼝发出去, 发往192.168.10.1路由器;
  3. 由192.168.10.1路由器根据它的路由表决定下⼀跳地址;

好了今天就到这里了,感谢观看。

上一篇:传统机器学习总结


下一篇:虚拟dom-是什么