网络层只懂路由?这9个知识点被严重低估了

news2024/12/24 2:42:53

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

下午好,我的网工朋友。

网络层想必你已经耳熟能详,它的作用自然是不容小觑。

它负责将数据从源头准确地投递到目的地,无论这个目的地是在街对面还是世界的另一端。如果没有网络层的智能路由选择、拥塞控制和网际互连,我们的网络通信将会变得混乱和低效。

我们无法依赖简单的记忆来处理海量的IP地址和路由信息,这时候,网络层的作用就显得尤为重要了。

今天这篇文章就来再提提网络层这事,从IP地址的分类到CIDR的高效编址,从IP数据报文的构成到路由表的智能管理,再到ARP、ICMP、DHCP这些协议的实际应用,不管是小白还是老司机统统都适用。

今日文章阅读福利:《企业网快速构建与排错手册》

想要深入企业网构建和排错的朋友,可以私信发送暗号“网络构建”,获取此份手册资源。

如果想从0到1系统学习,也欢迎私信我,告知学习意向,我会为你推荐最适合你的方式。

01 IP地址

01 分类表示法

分类表示法相对而言比较不常用。

  • 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


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

  • 网络号全0,但主机号非全0的某个ip就是指本网络的某个主机
  • 网络号不为全1,但主机号为1的ip,则指某个网络的广播地址
  • 全0,指本网络的本主机
  • 全1,指本网络的广播地址
  • 环回地址,指127.0.0.1,在同一台主机上进行网络传输
  • 私有地址,指不会参与路由器转发的地址,, 只会参与本局域网,发给本局域网的交换机:
    A类:10.0.0.0-10.255.255.255.
    B类:172.16.0.0-172.31.0.0
    C类:192.168.0.0-192.168.255.255


02 无分类编址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就是网络号+子网号,后面都代表了主机号

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

02 IP数据报文格式

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

dfb279c444310035cd6f37ed5290738b.jpeg

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

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

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

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

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

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

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

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

  • 协议类型(icmp、igmp)

  • TTL生存

  • 其他任选项(40字节)

03 路由概念

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

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

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

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

01 路由表

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

3436973a3f83ccd1426bbd5a637c31a3.jpeg

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

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

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

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

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

02 路由网络匹配

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

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

03 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。

04 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服务器的响应信息,表示初始化失败。

04 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时的差错报告,定位跟踪路上有哪些路由

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

05 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地址

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

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

有2种方式:

01 RIP协议

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

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

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

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

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

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

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

02 OSPF协议

open shortest path first,开放最短路径优先协议,指路由器里有全网的拓扑结构,使用最短路算法计算最优路由。

因此路由会把自己的连接情况通过OSPF协议发给所有其他路由,以建立拓扑图。

这个是属于IP层的协议,不借助UDP。RIP和OSPF是自治网络系统AS里的选路措施。AS里的选路措施被称作IGP(内部网关协议),1个AS里只会有一种选路措施。而跨自治系统的协议叫EGP(外部网关协议)。通常使用BGP协议

03 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:收到中毒路由信息的相邻的路由器会发送一个毒性逆转的信息,表示已经收到中毒路由信息。

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

07 多播

01 IGMP协议

internet group message protol, 网络组管理协议负责收集和解释一个网络中的组成员信息

IGMP协议应用于路由器

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

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

  • 无法直到总成员数

  • IGMP属于网络层的协议

02 MOSPF多播路由选择协议

多播开放最短通路优先(Multicast Open Shortest PathFirst,MOSPF)协议是OSPF协议的扩展,使用多播链路状态路由选择来创建源点基准树。

这个协议需要一个新的链路状态更新分组,把主机的单播地址和组地址或主机负责的地址联系起来,这个分组就称为组成员关系LSA。

此外,这个数可以保存在高速缓存中,以便以后有同样源点/组地址对的分组可以使用它。

08 其他网络层概念

01 VPN

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

02 NAT

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

03 移动IP

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

09 常见网络层命令

  • ifconfig 可显示本机的IP地址

  • netstat -r可显示路由表

  • tcpdump 可显示硬件地址

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

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

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

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

整理:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

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

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

相关文章

SaaS案例分享:成功构建销售渠道的实战经验

面对SaaS产品推广的难题&#xff0c;你是否曾感到迷茫&#xff0c;不知如何选择有效的销售渠道&#xff1f;Shopify独立站联盟营销或许能为你提供新的思路。Shopify作为领先的电商解决方案提供商&#xff0c;其独立站功能为众多商家提供了强大的在线销售平台。而联盟营销&#…

洗地机怎么选?洗地机哪个品牌比较好?四款实力超牛的单品推荐

随着生活节奏的加快&#xff0c;家庭清洁已经成为许多人面临的一大挑战。传统的扫地和拖地方式不仅耗时耗力&#xff0c;还难以彻底清洁每一个角落。家用洗地机的出现&#xff0c;为人们的家庭提供了一个全新的清洁解决方案。然而&#xff0c;在选择合适的洗地机时&#xff0c;…

企业内网是如何禁用U盘的?电脑禁用U盘有哪些方法?

在当今企业环境中&#xff0c;数据安全和信息保护至关重要。 为了防止数据泄露和恶意软件传播&#xff0c;很多企业选择在内网中禁用U盘&#xff0c;以控制数据的物理传输。 小编这就来给大家总结一份详细指南&#xff01;&#xff01; 关于企业内网如何禁用U盘的指南&#x…

聚焦现代商贸物流愿景 构筑供应链金融服务体系|第二届京津冀现代商贸物流金融创新发展百人大会成功举办

6月16日&#xff0c;以“链产业筑高地赢未来——聚焦现代商贸物流愿景、构筑供应链金融服务体系”为主题的第二届京津冀现代商贸物流金融创新发展百人大会(以下简称“百人大会”)&#xff0c;在2024中国廊坊国际经济贸易洽谈会&#xff08;以下简称“廊坊经洽会”&#xff09;开…

示例:WPF中DataGrid简单设置合并列头

一、目的&#xff1a;应用DataGridTemplateColumn列模板&#xff0c;去拆分列头和单元格布局的方式设置列头合并样式 二、实现 效果如下 三、环境 VS2022 四、示例 应用DataGridTemplateColumn自定义列头信息和单元格信息 <DataGrid AutoGenerateColumns"False"…

强化安全保障:广东新能源工厂可燃气体报警校验流程解析

近年来&#xff0c;随着国家对清洁能源和可持续发展战略的高度重视&#xff0c;新能源产业迅速崛起&#xff0c;广东作为我国经济发展的重要引擎&#xff0c;其新能源工厂的建设与运营也走在了全国前列。 这些工厂大多涉及光伏、风能、生物质能等多个领域&#xff0c;生产过程…

VxeBasicTable 右侧工具按钮不显示的检测与处理

1、先上张图&#xff1a; 操作区&#xff0c;按钮不显示。 检查了代码都是正常的。 2、代码检查 这个其实不用检查&#xff0c;因为这个区域是显示出来了&#xff0c;但是上面的actionItem没有显示。 3、检查action item&#xff1a; 发现也挺好的&#xff0c;里面也写了 /…

HQChart实战教程73-仿tradingview指标MACD

HQChart实战教程73-仿tradingview指标MACD MACD![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/84d180b5620940f6b9fe08c6f10eb0f3.png)麦语法脚本实心MACD指标脚本效果 空心MACD指标脚本效果图 自定义指标添加到系统指标里HQChart插件源码地址 MACD tradingview中…

【AI大模型】Transformers大模型库(十):repetition_penalty惩罚系数

目录​​​​​​​ 一、引言 二、惩罚系数repetition_penalty 2.1 概述 2.2 使用说明 2.3 使用示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库&#xff0c;为huggingface上数以万计的预训练大模型提供预测、训练等服务。 &#x1f917; T…

智能室内空气质量监测预警系统小程序设计说明书

智能室内空气质量监测预警系统小程序设计说明书 一、应用功能与系统设计 &#xff08;一&#xff09; 应用功能 该小程序设计的目的是为了配合环境监测吸顶灯,Mini空气监测仪等硬件设备实时数据展示与远程设备控制等功能&#xff0c;系统框架图如图1-1所示。用户可以从小程序…

第二证券:新股“肉签”不断,今日两只申购!光伏巨头小伙伴来了

本周&#xff08;6月17日—6月21日&#xff09;&#xff0c;A股商场将迎来两只新股&#xff0c;分别为沪市主板的永臻股份和创业板的爱迪特&#xff0c;均将于本周一进行申购。 资料显现&#xff0c;永臻股份是国内领先的铝合金光伏结构件制造商&#xff0c;公司发行价为23.35…

数据结构之“双向链表”

前言 前面我们介绍了单向链表&#xff0c;我们这里的双向链表是为了弥补单向链表只能从头节点开始单向遍历&#xff0c;插入和删除节点时需要更多的操作&#xff0c;因为无法直接访问前一个节点。 目录 前言 一、双向链表的结构 二、实现双向链表 2.1符号定义 2.2节点创…

Zenity向Ubuntu系统发送通知

文章目录 前言 一、Zenity是什么&#xff1f; 二、使用步骤 1.确认是否已安装 2.使用 三. 结论 前言 大家都知道&#xff0c;久坐带来的后果有多么痛苦&#xff0c;但是每天上班&#xff0c;一坐一整天&#xff0c;想着起来活动一下&#xff0c;干起活来就又忘啦&#x…

永辉超市的礼品卡有什么用?

永辉超市礼品卡现在不仅能在门店使用&#xff0c;还能在线上下单用 而且现在很少有人专门去买永辉卡&#xff0c;像我就是用积分兑换的哈哈哈哈 主要积分留着也没用&#xff0c;最后兑了几张100块面值的永辉卡 又去收卡云上看了下&#xff0c;最近92.5折&#xff0c;然后我就…

PyTorch与TensorFlow模型互转指南

在深度学习的领域中&#xff0c;PyTorch和TensorFlow是两大广泛使用的框架。每个框架都有其独特的优势和特性&#xff0c;因此在不同的项目中选择使用哪一个框架可能会有所不同。然而&#xff0c;有时我们可能需要在这两个框架之间进行模型的转换&#xff0c;以便于在不同的环境…

【大语言模型】本地快速部署Ollama运行大语言模型详细流程

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

在mybatis 中如何防止 IN里面的参数过多?

代码示例&#xff1a; select xsid from zhxg_gy_ssfp_cwfp where xsid in <foreach collection"list" item"item" open"(" close")" separator" " index"index"> <if test"(index % 999) 998&quo…

C#调用外部API(托管和非托管DLL)

DLL程序的两种类型 托管对象(有垃圾回收机制&#xff0c;内存安全)非托管对象(无垃圾回收机制&#xff0c;需手动回收) 托管对象与非托管对象具体区别参考&#xff1a;【C#】中托管与非托管对象区别、托管与非托管DLL区别_c# dllimport 托管dll-CSDN博客 生成和调用托管对象…

华为中小企业组网

一、组网图 说明&#xff1a;接入交换机ACC1&#xff08;S2750&#xff09;&#xff0c;核心/汇聚交换机CORE&#xff08; S5700 &#xff09;和出口路由器Router&#xff08;AR系列路由器&#xff09;为例。 核心交换机配置VRRP保证网络可靠性&#xff0c;配置负载分担有效利…

Fastjson漏洞之CVE-2022-25845

前言&#xff1a; 针对Fastjson之前已经介绍了&#xff0c;这里就不再重复了&#xff0c;漏洞CVE-2017-18349只能用来攻击>1.2.24版本的&#xff0c;CVE-2022-25845属于CVE-2017-18349的升级版&#xff0c;但是目前仅影响到1.2.83以下版本。CVE-2022-25845本质上是绕过了名…