网络学习:9个计算机的“网络层”知识点

目录

一、IP 地址

1.1 分类表示法:

1.1.1 分类表示地址的其他说明

1.2 无分类编址 CIDR

二、IP 数据报文格式

Q: IP 报文里有什么?可以不按顺序或者字节来讲一讲

三、 路由概念

3.1 路由表

3.2 路由网络匹配

3.3 ARP 解析

3.4 RARP 逆地址解析协议

四、ICMP 协议

五、DHCP 协议

六、路由表的最优下一跳地址如何计算?

6.1 RIP 协议

6.2 OSPF 协议

6.3 BGP 协议

Q: RIP 协议下路由表什么时候更新?

Q: 路由中毒是什么?

Q: 收到中毒路由的路由器会怎么做?

七、多播

7.1 IGMP 协议

7.2 MOSPF 多播路由选择协议

八、其他网络层概念

8.1 VPN

8.2 NAT

8.3 移动 IP

九、常见网络层命令


一、IP 地址

1.1 分类表示法:

分类表示法已经不常用了。

  • A 类地址:
    格式为
    1 [7 位网络号][24 位主机号]
    网络号全 0 指本网络
    网络号全 1 用于环回地址(127.0.0.1)
    主机号全 0 时指本住机所在网络
    全 1 时指本网络所有主机(广播地址)
    因此 A 类地址实际可选范围为 1.x.x.x ~ 126.x.x.x

  • B 类地址
    格式为
    10 [14 位网络号][16 位主机号]
    网络号不可全 0,但可以全 1
    范围为 128.x.x.x~191.x.x.x

  • C 类地址
    格式为
    110 [21 位网络号][8 位主机号]
    网络号不可全 0
    范围为 192.x.x.x~223.x.x.x

  • D 类地址(多播地址)
    格式为
    1110 [28 位多播地址]
    范围为 224.x.x.x~239.x.x.x
    因此看到 224 以上的 ip 要注意

  • E 类地址
    格式为 11110 [保留]
    用于实验用,因此看到 240 以上的认定不是正常节点 ip

1.1.1 分类表示地址的其他说明

  • 网络号全 0,但主机号非全 0 的某个 ip 就是指本网络的某个主机

  • 网络号不为全 1,但主机号为 1 的 ip,则指某个网络的广播地址

  • 全 0,指本网络的本主机

  • 全 1,指本网络的广播地址

  • 环回地址,指 127.0.0.1,在同一台主机上进行网络传输

  • 私有地址,指不会参与路由器转发的地址,, 只会参与本局域网,发给本局域网的交换机:
    A 类: 10.0.0.0-10.25.255.255
    B 类: 172.16.0.0-172.31.0.0
    C 类: 192.168.0.0-192.168.255.255

1.2 无分类编址 CIDR

Classless Inter-Domain Routing 无类型域间选路

  • CIDR 将路由集中起来,使一个 IP 地址代表主要骨干提供商服务的几千个 IP 地址,从而减轻 Internet 路由器的负担。

  • 该编址用于子网划分,子网号和上面提到的网络号是不同的。

  • IP 地址 ::= {<网络号>, < 子网号 >, < 主机号 >}

CIDR 有三种编址方式:

  • 128.14.35.7/20 , 完整 ip 加子网位数

  • 10.0.0.0/10 -> 10/10, 可省略末尾的 0

  • 00010100*, 即用星号代替子网后的主机号

对于 CIDR 编址:
子网号的全 0 和全 1 没有特殊含义,但不可设置成全 0 或者全 1。
主机号的全 0 指本网络, 全 1 指广播。(网络号仍然遵从 ABCD 地址的规则)

  • 子网掩码:
    值 1 的位置指该 ip 中该位置是网络号和子网号区域
    值 0 的位置指该 ip 中该位置是主机号区域。
    例子:111111100000000…, 那么前面 8 个 1 就是网络号 + 子网号,后面都代表了主机号

  • 路由寻址时,一般先比较网络号,再比较子网号,再比较主机。
    子网掩码可以简化先比网络再比子网的过程。

二、IP 数据报文格式

IP 报文的首部至少有 20 个字节(160 位),首部如下:

image.png

上面可以看到 IP 报文的以下限制:

  1. 首部长度字段可以看出首部长度最多可以位 60 字节,所以任选项最多 40 字节

  2. 报文总长度最大为 65535, 但是由于 MTU 的限制(链路层防冲突机制导致的),一般都要做分片, 分片后就会用上分片标识和片偏移了。

Q: IP 报文里有什么?可以不按顺序或者字节来讲一讲

  • 首先要知道报文多长, 首部长度 + 报文长度

  • 为了校验首部,还需要校验首部和

  • 很重要的源 ip 目的 ip
    那么如何确定 ip 类型?这就需要 ipv 版本,来确认是 ip4 还是 ip6。

  • ip 支持分片,那么就需要
    分片 id、是否是最后分片标记、分片偏移

  • 协议类型(icmp、igmp)

  • TTL 生存

  • 其他任选项(40 字节)

三、 路由概念

  • 路由器可分隔广播域,指的是不同网络号的地址,路由器不会转发广播报文

Hub 集线器在同一个冲突域通信无法分割;交换机在同一个广播域通信,可分割冲突域;路由器实现不同广播域间通信,可分隔广播域。

  • IP 报文在传输中不会被改变,但是链路层报文的 mac 地址会不断变化。

  • 当 2 个主机在不同的子网时,必须要借助路由才能通信

3.1 路由表

假设某个路由器在 N1 网络,他的路由表如下:

image.png

  • 特定 IP 地址的子网掩码为全 1,所以一般都是 x.x.x.x/32

  • DNS 服务器一般会配置在路由表中的特定 IP 地址

  • 未知网络在路由表里的目的网络被写为 0.0.0.0, 如果么有,则就是未设置默认路由

  • 路由器不会转发私有地址。

  • 距离指的是跨越路由器的数量,而不是实际长度单位

3.2 路由网络匹配

如果路由表中的目的网络由很多,怎么确定 IP 和路由表中的目的网络是匹配的?

  1. 使用最长前缀匹配, 即前缀匹配得最多的就是目的网络。
  2. 优化算法可用二叉线索树来确认最长前缀。

3.3 ARP 解析

全称 Address Resolution Protocol,地址解析协议。

从主机发给路由, 或者路由发给路由时,底层还是得封装一层 mac 地址然后往下交给交换机。
那么 ip 和 mac 地址的对应关系, 是怎么得知的?

答案就是 ARP 协议

本质就是当 mac 缓存表里没有 ip 和 mac 的对应关系时, 主机或者路由会广播 ARP 报文, 对应 ip 方向的交换机会把报文发送回来,这时候就直到 mac 地址和 ip 的对饮关系了。

  • arp -a 可以检查 ARP 告诉缓存

  • ARP 缓存有超时时间

  • 目的主机不存在时,会反复发送,有个超期期限的存在。

  • 主机发送 ARP 查找自己的 Mac 地址称为 “免费 ARP"

  • 发送给某 1 主机的 arp 请求被中间路由器接收了,则称为 “ARP 代理”, 发送者不管不管你是中间路由还是目的 ip 主机,只知道这个 ip 需要发给这个 mac。

3.4 RARP 逆地址解析协议

由 mac 地址反取 ip,因为 ip 不存在,无法直接转给给路由。所以会比 ARP 难。

过程:

  1. 将源设备和目标设备的 MAC 地址字段都设为发送者的 MAC 地址和 IP 地址,发送主机发送一个本地的 RARP 广播,能够到达网络上的所有设备,在此广播包中,声明自己的 MAC 地址并且请求任何收到此请求的 RARP 服务器分配一个 IP 地址;
  2. 本地网段上的 RARP 服务器收到此请求后,检查其 RARP 列表,查找该 MAC 地址对应的 IP 地址;
  3. 如果存在,RARP 服务器就给源主机发送一个响应数据包并将此 IP 地址提供给对方主机使用;如果不存在,RARP 服务器对此不做任何的响应;
  4.  源主机收到从 RARP 服务器的响应信息,就利用得到的 IP 地址进行通讯;如果一直没有收到 RARP 服务器的响应信息,表示初始化失败。

四、ICMP 协议

全称 Internet control message protocl,网络控制报文协议
他会包装在 IP 的数据报文中,并把首部的协议类型改成 ICMP 那个数字。

首部总共 8 个字节,分别为

  • 2 字节的 ICMP 类型
  • 2 字节的 ICMP 报文代码(类似错误码)
  • 4 字节的校验和

后面就是数据部分了。

常见的 2 种用途:

1、发送网络层之间的差错报告,例如:

    • 源点抑制 —— 发送网络拥塞

    • 终点不可达 —— 无法找到对应 ip 交付地点

    • 时间超时 —— 报文种的 TTL 降为 0,或者分片一直没收集完

    • 参数错误 —— 首部中字段有错

    • 路由改变(重定向)—— 主机把数据发给了路由器 R2,但是路由器 R2 发现主机自己本来就可以直达了,于是发给主机该消息,告诉他你要更新路由表了。

差错报告有以下其他特点:

  • ICMP 自身出错时,不会再发 ICMP 差错报文

    • 如果是报文分配后发生错误,则只会发 1 次,而不会每个分片发一次

    • 不针对多播,不针对 127.0.0.1、0.0.0.0 等特殊的地址发送差错报文,不可广播(避免广播风暴)

2、发送一些询问报文,例如:

    • 回送请求和应答 —— 例如 ping 命令就是借助 ICMP

    • 超时报文 ——traceroute 就是用这个,把 TTL 从 1 慢慢增加,发好多份,通过 TTL 为 0 时的差错报告,定位跟踪路上有哪些路由

    • 时间戳请求 —— 同步时间

五、DHCP 协议

全称 Dynamic Host Configuration Protocol, 动态主机配置协议

当某个局域网内新增了一台主机,这个主机的 ip 是怎么生成的呢?

这就会用到 DHCP 协议

主机所在网内会有一台 DCHP 服务器。
当新主机加入时,发生如下之事:

  1. 主机先 “广播” 自己,告诉大家 “我来了,谁给我一个 IP 地址”(他一开始不知道 DHCP 在哪)

  2. DCHP 服务器收到后,会分配一个 IP 地址,但因为不知道发给谁,所以也只能 “广播”,告诉大家 “我这有个 ip,刚才谁要的,自己来领一下”

  3. 主机收到 DHCP 广播的报文后,就能知道自己的 ip 和 dhcp 服务器位置了。于是给 DCHP 服务器发送请求,告诉他 “我收到了你发来的 ip 了”

  4. DCHP 收到后,确认了他的信息,并加入到 DHCP 本地的数据库中,后面分配新 ip 时就会排除掉这个 ip 了。

有以下几个注意点:

  1. 如果有多个主机同时应答了 DHCP 的广播, 则会选择最先到达的做分配。

  2. 分配的 ip 是临时的

DCHP 可以认为是基于 UDP 的应用层协议,但本质是为了寻求新主机的动态 ip 地址。

六、路由表的最优下一跳地址如何计算?

可以理解为 在一个复杂的拓扑图下, 怎么选择最优的一个路由做目的地址的下一跳。

有 2 种方式:

6.1 RIP 协议

全称 Routing Information Protocol, 路由信息协议
是一种动态路由信息协议。

  • 路由只会和相邻的其他路由交换信息。

  • 交换的是路由表的信息,关键在于目的网络和距离

  • 之前路由表里知道了表里会存储 到目的网络的距离即跨越路由数量,那么只要拿到周边所有路由的距离表, 看下哪个方向最小, 然后把下一跳地址选为最小的那个路由方向即可。

  • 使用 UDP 广播,把自己的路由报文发给周边的其他路由。

  • 当路径不可达时,会导致 2 个路由之间不断叠加该目的地址的距离,直到 16 时,会被设置成不可达。

所以 RIP 本质也是基于 UDP 的应用层协议,但是目的是为了网络层的最优路由选取。

6.2 OSPF 协议

open shortest path first,开放最短路径优先协议

指路由器里有全网的拓扑结构,使用最短路算法计算最优路由,因此路由会把自己的连接情况通过 OSPF 协议发给所有其他路由,以建立拓扑图。这个是属于 IP 层的协议,不借助 UDP。

RIP 和 OSPF 是自治网络系统 AS 里的选路措施。

AS 里的选路措施被称作 IGP(内部网关协议)

1 个 AS 里只会有一种选路措施。

而跨自治系统的协议叫 EGP(外部网关协议),通常使用 BGP 协议。

6.3 BGP 协议

Border Gateway Protocol 边界网关协议

  • 每个 AS 都知道自己为了到达网络 N,需要经过哪些 AS(相当于知道以 AS 为节点的拓扑图)

  • 每个 AS 都有一个 BGP 发言人,会与其他 BGP 网络之间交换自身的 AS 拓扑信息,从而构建全局连通图

  • 使用 TCP 179 端口工作

Q: RIP 协议下路由表什么时候更新?

  • 正常情况下,路由器会基于更新计时器每 30s 将路由表发送给邻居路由器,而触发更新是立刻发送路由更新信息

  • 触发更新就是当检测到网络拓扑发生变动时,路由器会立即发送一个更新信息给邻居路由器,并依次产生触发更新通知它们的邻居路由器,此过程就叫触发更新

Q: 路由中毒是什么?

A: 路由中毒是指在路由信息在路由表中失效时,先将度量值变为无穷大的数,而不是马上从路由表中删掉这条路由信息。 然后再将中毒路由信息发布出去,当相邻的路由器收到该中毒路由就可以通过其度量值是 16,说明该路由是无效的。

因为 RIP 协议中的度量值其实就是跳数,而 RIP 协议的跳数最大是 15,大于 15 的目的地被认为是不可达,所以当其度量值为 16,就表示这是一个无效路由,这就是所谓的路由中毒,这个数字在限制了网络大小的同时也防止了一个叫做 “记数到无穷大” 的问题。

Q: 收到中毒路由的路由器会怎么做?

A: 收到中毒路由信息的相邻的路由器会发送一个毒性逆转的信息,表示已经收到中毒路由信息。

那么为什么收到中毒路由的路由器为什么要回复一个毒性逆转的信息?这是因为如果不回复的话,那么发送中毒路由的路由器就会一直以广播的形式发送中毒路由,直到相邻的路由器收到并回复一个毒性逆转的信息。

七、多播

UDP 的时候会用到多播

7.1 IGMP 协议

internet group message protol, 网络组管理协议

负责收集和解释一个网络中的组成员信息

IGMP 协议应用于路由器

  • 某主机加入新的多播组时,发送报文,并转发多播的关系给其他相邻主机或者路由

  • 会周期性探寻,确认自身这个主机是否还在多播组内

  • 无法直到总成员数

  • IGMP 属于网络层的协议

7.2 MOSPF 多播路由选择协议

多播开放最短通路优先(Multicast Open Shortest PathFirst,MOSPF)协议是 OSPF 协议的扩展,使用多播链路状态路由选择来创建源点基准树。
这个协议需要一个新的链路状态更新分组,把主机的单播地址和组地址或主机负责的地址联系起来,这个分组就称为组成员关系 LSA。
此外,这个数可以保存在高速缓存中,以便以后有同样源点 / 组地址对的分组可以使用它。

多播的其他更详细概念见链接

八、其他网络层概念

8.1 VPN

需要建立专用通道
当专用 A 试图向专用 B 通信时,会先加密,再通过加密隧道发到对方内网,具体报文内容不会和互联网直接接触。

8.2 NAT

内外网转换用的一个东西, 公网 ip 和内网 ip 互转。

8.3 移动 IP

ip 从子网 A 变道子网 B。

  • 在本网时,按 TCP 通信
  • 要漫游到外网时, 注册一个转交地址
  • 本地代理接收地址,开启隧道
  • 数据发送到外网
  • 在外网时,使用代理 ip 发送数据
  • 回到本地时,会注册并转交之前的地址

九、常见网络层命令

  • ifconfig 可显示本机的 IP 地址

  • netstat -r可显示路由表

  • tcpdump 可显示硬件地址

  • ping 测试另一个主机是否可达

  • traceroute 利用 ICMP 跟踪途径的所有路由

  • route 命令可查看和修改路由表

  • gated 可查看 IGP(内部网关协议)和 EGP(外部网关协)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/741948.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

考试题库:华为HCIA-Datacom易错题⑦(含答案解析)

华为认证HCIA-Datacom易错题举例和答案分析。 1、现有一台交换机通过某端口与一个指定端口相连&#xff0c;但是该端口不转发任何报文&#xff0c;却可以通过接收BPDU来监听网络变化&#xff0c;那么该端口的角色应该是&#xff08; &#xff09;。 A、Designated端口 B、Al…

分布式搜索elasticsearch(1)

1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海量数据中快速找到需要的内容 例如&#xff1a; 在GitHub搜索代码 在电商网站搜索商品 在百度搜索答案…

c++函数SetConsoleTextAttribute

前言 正文 1.作用&#xff1a; 2.函数格式(重点)&#xff1a; 3.参数(重点)&#xff1a; 前言 实用(真的) 正文 1.作用&#xff1a; 更改cmd的背景色与字体颜色 2.函数格式(重点)&#xff1a; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10进制参数); …

第14届环境与农业工程国际会议(ICEAE 2024)即将召开!

2024年第14届环境与农业工程国际会议&#xff08;ICEAE 2024&#xff09;将于6月7日至9日在泰国曼谷召开。本次会议旨在促进环境与农业工程的研究和开发活动&#xff0c;共同探讨领域内最新以及具有根本性的进展突破。热忱欢迎从事相关领域研究的专家&#xff0c;学者和专业技术…

iStoreOS系统内安装HomeAssistant服务

iStoreOS系统内安装HomeAssistant服务 1. HomeAssistant服务 HomeAssistant是一款基于Python的开源智能家居系统&#xff0c;简称HA。 HomeAssistant可以方便地连接各种外部设备&#xff0c;如智能设备、摄像头、邮件、短消息和云服务等&#xff0c;其成熟的可连接组件有近千…

【Twinmotion】Twinmotion导入UE5

步骤 1. 在虚幻商城中安装“Datasmith Twinmotion导入器插件” 安装“面向虚幻引擎的Twinmotion内容” 2. 打开虚幻引擎&#xff0c;在插件中搜索“twinmotion”&#xff0c;勾选如下两个插件&#xff0c;然后重启虚幻引擎 3. 打开Twinmotion&#xff0c;随便添加一个物体 导出…

【阿里云系列】-ACK的Java应用POD无法访问云数据库Redis

问题介绍 如下图所示&#xff0c;是ACK集群的POD访问阿里云的云数据库Redis&#xff0c;如何实现访问呢 配置步骤 要实现ACK集群内的所有POD都可以访问云数据库Redis&#xff0c;则需要在Redsi的白名单里增加源IP或网段&#xff0c;如下图所示 注意&#xff1a; 以上添加…

网络套接字-UDP服务器

一 预备知识 1 端口号和进程id 主机间的数据传输本质是两个进程在通信&#xff0c;就像是我们打开抖音刷视频&#xff0c;视频不是都保存在手机上的&#xff0c;而是服务器发送给你的&#xff0c;这里就是用到了网络。 那如何保证把数据给指定进程呢? 就是用端口号去标识主机中…

Pytorch学习 day13(完整的模型训练步骤)

步骤一&#xff1a;定义神经网络结构 注意&#xff1a;由于一次batch_size的大小为64&#xff0c;表示一次放入64张图片&#xff0c;且Flatten()只会对单张图片的全部通道做拉直操作&#xff0c;也就是不会将batch_size合并&#xff0c;但是一张图片有3个通道&#xff0c;在Ma…

YOLOv9改进项目|关于本周更新计划的说明24/3/12

目前售价售价59.9&#xff0c;改进点30个 专栏地址&#xff1a; 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 日期&#xff1a;24/3/12 本周更新计划说明&#xff1a; 1. 更新华为Gold YOLO中的…

读西游记第一回:西游记世界格局

天地之数&#xff1a; 元&#xff1a;十二万九千六百岁&#xff08;129600年&#xff09; 1元12会&#xff1a;子、丑、寅、卯、巳、午、未、申、酉、戌、亥。每会18000年。与12地支对应。 亥会期&#xff1a;前5400年混沌期&#xff0c;后5400年&#xff0c;盘古开天辟地&am…

论文阅读——Vision Transformer with Deformable Attention

Vision Transformer with Deformable Attention 多头自注意力公式化为&#xff1a; 第l层transformer模块公式化为&#xff1a; 在Transformer模型中简单地实现DCN是一个non-trivial的问题。在DCN中&#xff0c;特征图上的每个元素都单独学习其偏移&#xff0c;其中HWC特征图上…

Mysql数据库学习笔记——第二篇

DML 添加数据 INSERT INTO 表名(字段1,字段2,……) VALUES(值1,值2,……); # 给指定字段添加数据INSERT INTO 表名 VALUES(值1,值2,……); # 给全部字段添加数据INSERT INTO 表名(字段1,字段2,……) VALUES(值1,值2,……),(值1,值2,……),(值1,值2,……); …

【开发】微服务整合Sentinel

目录 前言 1W&#xff1a;什么是Sentinel&#xff1f; 2W&#xff1a;为什么使用Sentinel&#xff1f; 3W&#xff1a;如何使用Sentinel&#xff1f; 1. 在pom.xml中导入Sentinel依赖坐标 2. 配置控制台 3. 访问API接口的任意端点 流量控制 1. 簇点链路 2. 快速入门…

某医院系统未授权访问

开局还是先测一下登录框&#xff0c;弱密码走一波&#xff0c;无果 通过指纹识别出该站是springboot开发&#xff0c;扫描目录查看是否存在泄露 存在泄露&#xff0c;访问地址 很多接口&#xff0c;不可能一个一个手动测试吧&#xff0c;上工具 工具扫描完会生成文档&#xff0…

算法(结合算法图解)

算法简介简单查找二分查找法 选择排序内存的工作原理数组和链表数组选择排序小结 递归小梗 要想学会递归&#xff0c;首先要学会递归。 递归的基线条件和递归条件递归和栈小结 快速排序分而治之快速排序合并排序时间复杂度的平均情况和最糟情况小结 散列表散列函数缓冲小结性能…

Ubuntu系统下查看安装的CUDA和CUDNN的版本

一、查看 CUDA 版本&#xff1a; #查看cuda版本和显存使用情况nvidia-smi 二、查看 CUDNN 版本&#xff1a; 安装链接&#xff1a;cuDNN Archive | NVIDIA Developer #回到系统主目录 cd ~ #查看cudnn版本 cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJO…

华为机考:HJ43 迷宫问题

华为机考&#xff1a;HJ43 迷宫问题 描述 DFS 从迷宫入口开始进行dfs搜索&#xff0c;每次进入一个点&#xff0c;将其加入临时路径数组中&#xff0c;把该位改成0表示不能进入&#xff0c;然后依次搜索该位下、右、上、左四个方向的点&#xff0c;如果搜索的这个点可以进入则…

3d渲染的模型仿佛有一层雾是怎么回事?---模大狮模型网

当在3D渲染的模型上出现仿佛有一层雾的效果时&#xff0c;可能是由于以下几个原因导致的&#xff1a; 环境光设置过高&#xff1a; 如果环境光设置过高&#xff0c;会使整个场景看起来像是笼罩在一层薄雾中。尝试降低环境光的强度&#xff0c;让场景更清晰明亮。 材质透明度设…

图【数据结构】

文章目录 图的基本概念邻接矩阵邻接表图的遍历BFSDFS 图的基本概念 图是由顶点集合及顶点间的关系组成的一种数据结构 顶点和边&#xff1a;图中结点称为顶点 权值:边附带的数据信息 路径 &#xff1a; 简单路径 和 回路&#xff1a; 子图&#xff1a;设图G {V, E}和图G1…