您现在的位置是:首页 >学无止境 >网络原理(五):IP 协议网站首页学无止境

网络原理(五):IP 协议

我可是ikun啊 2024-06-14 17:20:26
简介网络原理(五):IP 协议

目录

认识IP 地址

子网掩码

作用

动态分配IP 地址

NAT 机制

认识MAC地址

MAC地址如何工作

网络设备和相关技术

集线器:转发所有端口

交换机:MAC地址转换表+转发

主机&路由器:ARP缓存表+ARP寻址

路由器:路由+NAPT

数据链路层重点协议

以太网

认识以太网

认识MTU

ARP协议


认识IP 地址

概念:

IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。

作用:

IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

格式:

IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如:
01100100.00000100.00000101.00000110
通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:    100.4.5.6。

 IP 有两个版本,IPV4 和 IPV6 ;IPV4 是四个字节表示,IPV6 并不是六个字节,而是16 个字节2^128 ,地球上每一粒沙子都可以被完全覆盖。

随着时代的发展,目前的 IPV4 有点不够用了,4个字节毕竟太小;那为啥当初设计的时候不直接多给几个字节?  这主要就是时代的局限性,放在当时,每一个字节都很珍贵,其次就是当时使用设备的人太少了,42亿9千万 足够他们使用了。

而 IPV6 就完美的解决了这个问题,2 ^128 也不知道啥时候能用完。

组成:

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

  1. 网络号:标识网段,保证相互连接的两个网段具有不同的标识;
  2. 主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;

通过合理设置网络号和主机号,就可以保证在相互连接的网络中,每台主机的IP地址都是唯一的。

那么,如何划分网络号和主机号呢?

分类:

过去曾经提出一种划分网络号和主机号的方案,把所有IP 地址分为五类,如下图所示

A、B、C三类及特殊D、E。全0和全1的都保留

  1. A:(1.0.0.0-126.0.0.0)(默认子网掩码:255.0.0.0        
    1. 网络号取值于1~126
    2. 大型网络。
  2. B:(128.0.0.0-191.255.0.0)(默认子网掩码:255.255.0.0
    1. 该类IP地址的最前面为“10”,
    2. 网络号取值于128~191
    3. 中等规模
  3. C:(192.0.0.0-223.255.255.0)(子网掩码:255.255.255.0
    1. 该类IP地址的最前面为“110”,
    2. 网络号取值于192~223
    3. 小型网络。
  4. D:是多播地址。
    1. 该类IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。
    2. 用于多路广播用户
  5. E:是保留地址。
    1. 该类IP地址的最前面为“1111”,
    2. 网络号取值240~255

 这种划分只会出现在课本上(AB类主机号太长了,很少有这么大的局域网),现实中根本不会这么来表示,而是使用子网掩码等方式来表示 IP 地址。

目前为止,已经出现了 IP 地址不够用的情况,在此基础上有好几个缓解方法,后面会提到。

我们来看看子网掩码:

子网掩码

格式

子网掩码格式和IP地址一样,也是一个32位的二进制数。其中左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。
子网掩码也可以使用二进制所有高位1相加的数值来表示,如以上子网掩码也可以表示为24。

作用

其作用是:减少网络上的通信量;节省IP地址;便于管理;解决物理网络本身的某些问题。使用子网掩码划分子网后,子网内可以通信,跨子网不能通信,子网间通信应该使用路由器,并正确配置静态路由信息。划分子网,就应遵循子网划分结构的规则。

Classless Inter-Domain Routing(CIDR):

  CIDR 叫做无类域间路由,ISP 常用这样的方法给客户分配地址,ISP 提供给客户1 个块(block size),类似这样:192.168.10.32/28,这排数字告诉你你的子网掩码是多少,/28 代表多少位为1,最大/32.但是你必须知道的一点是:不管是A类还是B类还是其他类地址,最大可用的只能为/30,即保留2 位给主机位。

CIDR 值:

  • 掩码255.0.0.0:/8(A 类地址默认掩码)
  • 掩码255.255.0.0:/16(B 类地址默认掩码)
  • .掩码255.255.255.0:/24(C 类地址默认掩码)

计算方式:

将 IP 地址和子网掩码进行“按位与”操作(二进制相同位,与操作,两个都是1结果为1,否则为0),得到的结果就是网络号。
将子网掩码二进制按位取反,再与 IP 地址位与计算,得到的就是主机号。
举例:

二进制二进制
IP地址180.210.242.13110110100.11010010.11110010.10000011
子网掩码255.255.248.011111111.11111111.11111000.00000000
网络号180.210.240.010110100.11010010.11110000.00000000
主机号0.0.2.13100000000.00000000.00000010.100000

聊到这里还是没有能解决IP地址不够的问题,那么究竟该如何解决IP 地址不够用的问题?

动态分配IP 地址

东半球的黑夜就是西半球的白天,那么对方的很多设备也就不在线,这样就空出了很多IP 地址了。

那么在此基础上,提出了:只有上网才会分配地址,不上网就不分配。    那么这样就可以省下一大批地址。但是这样还无法解决问题。

NAT 机制

我们既然无法解决问题,我们就退而求其次

我们将所有网络分为两部分:外网和内网

  1. 内网IP:192.168.*   ; 10.*    ; 172.16.* - 172.31.*
  2. 其余的都属于外网。

那么什么叫外网,什么叫内网呢?

外网的ip 都是唯一的,而内网的ip 是可以重复的(通常局域网都属于内网)。

如果内网想要访问外网,那么就会给他分配一个 ip ,但是这个 ip 不是这个设备独占的,这整个局域网内的所有设备共享一个 ip 。

那好问题来了,如果我两个设备同时想要访问外网,那么该怎么办呢?

举例:

我们假设有两个主机,内网ip 分别是:192.168.0.1 和 192.168.0.2;目的 ip 都是 1.2.3.4

我们想要出这个局域网,得先经过 路由器吧(这个路由器也是个 NAT 设备);两个主机在路由器上做一个记录(具体内部干了啥我也不知道,反正交给路由器解决), 这个路由器有一个外网ip (假设为 4.3.2.1);那么此时就转换为: 4.3.2.1 的 ip 访问 1.2.3.4 的 ip 。

两个主机可能是不同的 端口号发送出去的数据,也或者是其他的。

我们上面说的只是内外网之间的访问,内网之间的访问,内网的ip 地址还是很有用的。

这样一个外网ip 就可以代表一大批内网设备了。

我们现实世界目前是使用 动态分配IP 地址 和 NAT 机制两种方式来提高 ip地址的利用率;然而这并不能完全解决问题(地址不够用);解决问题的唯一方法就是 IPv6。

认识MAC地址

MAC地址,即 Media Access Control Address,用于标识网络设备的硬件物理地址。

  1. 主机具有一个或多个网卡,路由器具有两个或两个以上网卡;其中每个网卡都有唯一的一个MAC地址。
  2. 网络通信,即网络数据传输,本质上是网络硬件设备,将数据发送到网卡上,或从网卡接收数据。
  3. 硬件层面,只能基于MAC地址识别网络设备的网络物理地址。

它们是 12 位字母数字,格式非常独特。一个例子是 A1:2B:C3:4D:E5:6F。从一开始就是这样,因为有 2 48 个(或 281,474,976,710,656)个可能的地址,我们很快就不需要其他方法了。

由于 MAC 地址是在工厂永久分配的,因此人们通常将其称为烧录地址或硬件地址。您甚至可以在直接贴在某些设备上的贴纸上找到 MAC 地址。

MAC地址如何工作

MAC 地址通过帮助网络上的事物将数据发送到正确的设备来发挥作用。您的手机或计算机在 Internet 上发送请求。当您的路由器收到该数据时,它会使用您的 MAC 地址来了解将数据发送到哪里。

但是,有一些细微差别。MAC 地址专门用于将同一网络中的设备标识为另一设备。当你通过蓝牙连接到某个东西时,唯一能获得你的 MAC 地址的就是你连接的那个东西。同样,当您连接到家庭 Wi-Fi 时,只有连接到家庭 Wi-Fi 的设备才能看到您设备的 MAC 地址。

总的来说,除了少数例外,互联网上的网站和其他设备看不到您的 MAC 地址。这些实体会获取您的 IP 地址。与 MAC 地址不同,IP 地址不是永久的,而是在您上网时分配的。因此,很少有设备真正有机会看到您设备的 MAC 地址。

上述来自:什么是 MAC 地址?你需要知道的一切 (baidu.com)

ok,目前为止我们所学的内功心法就到这里,目前都是为了做网站打下基础,接下来就要学外功招式(前端和后端了);前端主要是为了扫盲,而不是真正吃透。

网络设备和相关技术

集线器:转发所有端口

集线器是工作在物理层的网络设备,发送到集线器的任何数据,都只是简单的将数据复制并转发到其他所有端口。(端口指集线器后边的物理端口)

交换机:MAC地址转换表+转发

交换机(Switch)是一种用于信号转发的。与集线器广播的方式不同,它维持一张MAC地址表,可以为接入交换机的任意两个网络节点提供独享的电信号通路.主要有二重交换机和三重交换机,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,三重交换机带路由功能,工作于网络层。网络中的交换机一般默认是二重交换机。

交换机也有一张MAC—PORT对应表,和网桥不一样的是,网桥的表是一对多的(一个端口号对多个MAC地址),但交换机的表却是一对一的,根据对应关系进行数据转发,工作原理如下图所示.

主机&路由器:ARP缓存表+ARP寻址

首先,ARP是一个介于数据链路层和网络层之间的协议;ARP协议建立了IP地址与MAC地址的映射关系。
在数据链路层,寻找下一跳设备MAC地址的过程,称为ARP寻址:

  1. 主机和路由器中都保存了一张ARP缓存表:通过IP地址可以找到对应的MAC地址。
  2. 根据下一跳设备的IP地址,在ARP缓存表中能找到对应的MAC地址,则可以设置目的MAC并发送数据报。
  3. 如果找不到,则发送ARP广播数据报:目的MAC为广播地址,询问下一跳设备的MAC地址

路由器:路由+NAPT

路由器主要有两个作用:

  • 网关:
    • 路由器作为网关,可以划分公网和局域网,某些路由器还可以将局域网划分为多个子网(不同网段)
    • 公网端口即WAN口,为单独的网卡,具有公网IP地址和公网MAC地址。
      • 划分的多个子网,是由局域网端口即LAN口划分,每个端口都有单独的网卡,具有该网段IP地址和MAC地址
    • 路由器作为网关:
      • 1. 划分局域网多个子网时,可以直接通过ARP寻址找到局域网任意主机。(这里的局域网就是路由器下的多个子网组成的局域网)。
      • 2. 划分公网和局域网时,局域网内主机发送数据报到公网主机时,需要基于NAPT协议,将局域网主机的IP地址和端口号,转换为路由器公网IP和端口号(指路由器中运行的程序的端口)。
         
  • 路由
    • 所谓路由,即在复杂的网络结构中,找出一条通往终点的路线;
      网络通信(网络数据传输),路由器中的路由功能,就类似于规划路线,往哪个方向行进能更快到达目的地。

IP 协议是网络层中的重点协议,那么聊完了网络层就再来看看数据链路层

数据链路层重点协议

我们在数据链路层需要了解三个重要的协议:以太网 , 认识 MTU , ARP协议

以太网

认识以太网

以太网不是一种具体的网络,而是一种技术标准,既包含了数据链路层又包含了物理层。

以太网中的网线必须使用双绞线;传输速率有10M,100M,1000M等;

以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网,无线LAN等;

源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固
化的;
帧协议类型字段有三种值,分别对应IP、ARP、RARP;
帧末尾是CRC校验码。

认识MTU

MTU相当于发快递时对包裹尺寸的限制。这个限制是不同的数据链路对应的物理层,产生的限制。
以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要
在后面补填充位;
最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对
数据包进行分片(fragmentation);
不同的数据链路层标准的MTU是不同的;

ARP协议

虽然我们在这里介绍ARP协议,但是需要强调,ARP不是一个单纯的数据链路层的协议,而是一个介于数据链路层和网络层之间的协议;

ARP协议的作用

ARP协议建立了主机 IP地址 和 MAC地址 的映射关系。

  1. 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;
  2. 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;
  3. 因此在通讯前必须获得目的主机的硬件地址
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。