【计算机网络】网络层

文章目录

  • 网络层提供的服务
    • 虚电路
    • 数据报服务
    • 虚电路与数据报服务比较
  • 虚拟互连网络
  • IP地址
    • IP层次结构
    • IP地址分类
      • 特殊地址
      • 子网掩码
    • 子网划分
    • 变长子网划分
    • 超网
      • 合并网络规律
  • IP地址与MAC地址
  • ARP协议
    • ARP欺骗的应用
  • 数据包
    • 数据包首部
  • 路由
    • ICMP协议
    • RIP动态路由协议
    • OSPF协议
    • BGP协议
  • VPN
  • NAT
  • 虚拟机网络设置

网络层关注的是如何将分组从源端沿着网络路径到达目的端

由此引出一个争议的问题:计算机的可靠传输依靠网络还是端系统?
计算机通信的可靠传输,依靠的是端系统,而不是网络

网络层提供的服务

  • 虚电路服务
  • 数据报服务

虚电路

预先设定好一条逻辑上的连接(不是真正的物理连接),分组都沿着这条链路传送
在这里插入图片描述

数据报服务

当今互联网的主流用法
数据报服务就是把数据包写上地址;但虚电路可以不写地址,因为已经规定好走的电路了。
优点:更加灵活,自动选择路径(如果当前选的路径断了可以自动更换另一条路径)

虚电路与数据报服务比较

在这里插入图片描述

虚拟互连网络

中继(relay)系统:网络通信的中间设备
网络互联的设备

  • 物理层中继:转发器
  • 数据链路层中继:网桥或桥接器
  • 网络层中继:路由器
  • 网络层以上中继:网关(这是以前的说法,现在常说配IP地址的网关,其实是路由器)
    在这里插入图片描述
    默认网关地址的第四位一般为1(第三位的1表示为网段1,同一个网段的计算机可以互相通信)

网络互联的问题
在设计网络的时候应该能排上用场
在这里插入图片描述
虚拟互连网络其实就是现在我们所说的互联网,它相当于一个黑盒子,我们只需要知道服务器的IP地址就可以直接访问,而不需要关心互联网内部是怎么连接的。

IP地址

现在主流的网络层包含四个协议

  • IP协议
  • 地址解析协议 ARP(包括逆地址解析协议RARP)
  • 网络控制报文协议ICMP(报告网络故障)
  • 网络组管理协议IGMP

四大协议的关系
IP协议离不开ARP,ARP负责解析MAC地址,ICMP在IP协议基础上报告网络故障
在这里插入图片描述

IP层次结构

IPv4比较成熟,但是IP地址在中国已经不够用了。
利用层次化的结构可以将32位的IP地址分为网络ID主机ID

网络ID其实就是网段,觉得难理解的可以把它当作是电话号码的区号。
主机ID就是辨识在同一网段下不同的主机,主机部分不能全为0,也不能全为1
例如一个C类IP地址(下面会讲解什么是C类),193.7.1.1和193.7.1.255不可用
在这里插入图片描述

IP地址分类

A类认为前8位是网络ID,B类认为前16位为网络ID…其余如下图所示(E类基本不出现)
在这里插入图片描述

由此可知
A类的地址范围为0~127
B类的地址范围为128~191
C类的地址范围为192~223
D类的地址范围为224~239
E类的地址范围为240~255
在这里插入图片描述
但是可用地址有所不同,127是计算机本地的环回地址,相当于人称代词的“我”(可以尝试ping 127.0.0.x,发现是可以通的)

网络类别最大网络数第一个可用的网络号最后一个可用的网络号每个网络中最大的主机数
A126(2^7-2)112616777214
B16383(2^14-1)128.1191.25565534
C2097151(2^21-1)192.0.1223.255.255254

特殊地址

127.0.0.1 本地环回地址
169.254.0.0 自动获取IP地址,没获得的情况下,分配的地址
保留的私网地址(互联网上没有的地址)
10.0.0.0
172.16.0.0 — 172.31.0.0
192.168.0.0 — 192.168.255.0

子网掩码

子网掩码的作用是在两个IP地址A和B通信的时候,识别网络号。具体是IP地址和子网掩码进行“与运算”,得到相应的网络号,再用A的子网掩码和B的IP地址进行与运算,如果是同一个网段,则直接通信,如果网段不同,则先把数据发往网关。

子网掩码是根据IP地址的类别,自动填入。网络号的部分为255,主机号的部分为0
例如
一个C类地址192.168.7.1
则子网掩码为255.255.255.0

一个A类地址123.168.7.1
则子网掩码为255.0.0.0

子网划分

作用:充分利用IP地址,精打细算

等分成两个子网
即把主机号划分为两部分
对于一个C类地址,可以根据第8位是0还是1分为A子网和B子网,此时的网络号的位数为8-32,主机号为1-7。
此时子网掩码是255.255.255.128
在这里插入图片描述
需要注意的是,主机号不能取全1或者全0
即A子网可以地址为192.168.0.1—192.168.0.126
B子网可以地址为192.168.0.129—192.168.0.254

等分成4个子网
在这里插入图片描述
A子网最后8位地址范围1-00111110(1-62)
B子网最后8位地址范围01000001-01111110(65-126)
C子网最后8位地址范围10000001-10111110(129-190)
D子网最后8位地址范围11000001-11111110(193-254)
等分8个子网
在这里插入图片描述

点到点的子网掩码是252,因为点到点只用了两个地址,所以子网掩码往后移6位,ID号只剩下00 01 10 11(00和11不能用)

变长子网划分

也就是不是等分子网。例如需要划分四个子网,A子网10个机器,B子网20个机器,C子网50个机器,D子网100个机器
在这里插入图片描述

D子网范围129-254
C子网范围65-126
B子网范围33-62
A子网范围17-30

这只是其中一种分配方法,也可以把D子网范围分配在1-126,以此类推。

192.168.201.167/29中/29表示子网掩码的位数是29位,也就是C类子网掩码基础上右移5位,即 11111111 11111111 11111111 1111 1000;192.168.201.167指的是该网段下的一个IP地址

B类子网划分与C类子网划分一致

超网

与子网划分的概念相反,即网段的计算机数量大于网段承受的容量,该怎么处理?

假设有400台计算机,此时用一个C类网络已经不够用了,需要用到两个C类网络,但是如何让处于不同网段的计算机通信呢,是解决超网问题的关键

如果把192.168.0.0和192.168.1.0这两个C类网络合并,那子网掩码就不能用255.255.255.0,而是需要把子网掩码往左移动1位(子网划分是向右移动)
在这里插入图片描述
在这里插入图片描述

此时,192.168.1.0的网段变成了0网段(因为把主机位都归0,就是192.168.0.0)

合并网络规律

192.168.2.0和192.168.3.0合并为2网段。

192.168.0.0
192.168.1.0
192.168.2.0
192.168.3.0
这四个也可以合并,但子网掩码需要左移两位

那192.168.1.0和192.168.2.0合并呢?
那也只能是子网掩码左移两位,这样合并就变大了,由此可得出合并网络也是存在一定规律的
在这里插入图片描述
快速判断合并网络的方法

例如192.168.117.0和192.168.118.0能否合并?

可以分别将117和118除以4,取余数。原理是0 1 2 3为二进制的00 01 10 11,4个二进制数为一个循环周期,故除以4.

IP地址与MAC地址

IP地址决定数据包最终到达哪个计算机
MAC地址决定下一跳给谁(谁指代的路由或网关或计算机)
路由器是根据MAC地址转发数据
在这里插入图片描述
由此可知,如果是基于MAC地址的控制代理服务器,只能是控制本网段计算机能否上网,跨网段,识别不出MAC地址。跨网段只能是通过IP地址识别

ARP协议

负责把IP地址解析成MAC地址

同一个网段下,两台计算机ping,源计算机会通过路由器广播找寻目标计算机的MAC地址,目标计算机检测到消息后,会应答源计算机,源计算机会把目标计算机的MAC地址记录下来,数据传输的时候,就往该MAC地址传输。

因此,也出现了ARP欺骗

ARP欺骗的应用

P2P终结者配合ARP欺骗来实现,控制同一网段下别的计算机上网带宽。

假设互联网的MAC地址为M2,使用P2P终结者的MAC地址为M1,M1就可以欺骗其他计算机,让他们误以为互联网的地址为M1,这样其他计算机发到互联网的数据包都要经过M1。

ARP防火墙能防止这种欺骗的出现,其原理是记录下路由器第一次告诉我的互联网MAC地址,然后把功能写死,只把数据包往这个地址发送,之后谁告诉我互联网MAC地址是多少,我都不理会。

鉴别ARP欺骗
前提:

  • 你的计算机上不了网
  • 同网段下的计算机可以上网
  • 你可以ping通同网段下的其他计算机
    arp -a查看ping 网关的物理地址(MAC地址),是否与其他同网段下的计算机ping网关的物理地址一致

arp -s 物理地址修改成正确的网关物理地址

逆向ARP
把物理地址转换成IP地址,即计算机请求IP地址的过程(该部分讲的比较简略)

数据包

数据包首部

在这里插入图片描述
版本(4bit):指定IP协议版本 IPv4或IPv6
首部长度(4bit):表示首部的长度(固定部分+可变部分),最大为60字节(一行为32位,4字节)
区分服务QoS(8bit):区分数据的优先级,配置需要和路由器一致才起作用
总长度(16bit):表示首部+数据部分的长度
标识(16bit):计数器,每产生一个数据包,计数+1
标志(3bit):表示包需不需要分片操作

  • 当包过大,超出可传输的大小,就需要分片操作,分片的包需要分别加上目的地址

片偏移(13bit):确定某片在原分组的相对位置
在这里插入图片描述
生存时间(8bit):TTL 每过一个路由器,TTL数值-1
在这里插入图片描述
如果是128表示为window系统,64为Linux系统,如果是127,表示两个地址中间隔了一个路由器

ping [IP地址] -i 5 // 如果该IP地址至多过5个路由器,则能ping通,ping不通返回超时

协议(8bit):标记协议是什么(ICMP、IGMP、TCP、UDP等)
首部校验和:验证数据包首部
运算求和,取反码
在这里插入图片描述
可选字段的长度可变,从1个字节到40个字节不等,虽然增加了功能,但也增加路由器处理数据报的开销,实际上这些选项很少被使用

路由

数据路由:路由器在不同网段转发数据包
网络畅通的条件:数据包只有从源地址到达目的地址,再回到源地址,网络才能通(能去能回)

对于跨路由器的网络而言:

  • 沿途的路由器必须知道目标网络下一跳给哪个接口
  • 沿途的路由器必须知道源网络下一跳给哪个接口

举例说明网络畅通条件
PC0 ping 红框1能通,因为router0能监测出1所在网段,所以数据包能到达1,还能返回给PC0 ping 红框2不能通,虽然红框2和红框1在同一个网段,但是router1不知道PC0在哪个网段,所以数据包返回不了。
在这里插入图片描述
但是router1可以通过添加静态路由,使数据包能够回传到PC0

route add 192.168.0.0 mask 255.255.255.0 172.16.0.1(最后这个表示把数据返回到红框1)
route print

默认路由
Windows系统网关就是默认路由
当计算机有两个网卡的时候(一个接外网,一个接内网),不可设置两个网关。如果设置两个网关,当网址访问你的计算机的时候就会出现,数据包丢了一半的包,或者呈现出一通一断的现象,那是因为网址发包到计算机,因为计算机有两个网关,计算机返回给网址的路径就有两条(内网那条不通),所以只能接收一半的数据包。

解决办法是把内网IP地址添加到路由表上(应该是相当于去掉网关,直连地址)

ICMP协议

组播,又称为多播。IGMP是管理组播成员的
为了提高IP数据包交付成功的机会,主要功能还有探测网络是否出故障
在这里插入图片描述

ICMP报文类型
分为两种,差错报告报文询问报文
差错报告报文有五种:终点不可达、源点抑制、时间超过,参数问题,改变路由(重定向)
在这里插入图片描述

询问报文有两种:回送请求和回答报文、时间戳请求和回答报文

pathping能够监测是哪个路由不通,可用于网络排错

RIP动态路由协议

  • 最早的动态路由协议
  • 周期性广播更新路由表
  • 动态选择最佳路径(跳数最少),但是如果带宽不一样,跳数少的不一定是最好的。

OSPF协议

开放式最短路径协议(Open Shorttest Path First),属于动态路由协议,适用于网络规模比较大的场景

  • 根据带宽选择最短路径
  • 支持多区域
  • 触发式更新(路由器断掉或者添加网段后才更新路由表)
  • 维护三个表,邻居表(hello 包),链路状态表,计算路由表
  • 配置反子网掩码(0变1,1变1,如果子网掩码是255.255.0.0,需要配置为0.0.255.255)
    其余特点
    在这里插入图片描述

BGP协议

外部网关协议

  • 不同自治系统的路由器之间交换路由信息的协议(比如RIP和OSPF分别管理的系统之间通信)

VPN

最简单的例子,VPN技术能让你在家能访问学校的内网

相当于在不安全的互联网,通过一些附加手段,传输专有信息
在这里插入图片描述

如果用VPN连接着内网,但是想访问互联网时,不要勾选红框,不然传输路线是先连接到内网再访问互联网,而不是直接访问互联网
在这里插入图片描述

NAT

网络地址转换技术

应用例子:学校内网利用NAT替换地址,与互联网实现互传。

在这里插入图片描述
端口号在传输层才会提及

虚拟机网络设置

虚拟机网络编辑器中,一个VMnet相当于一个vlan
如果虚拟机在VMnet8,那如果要访问物理机,需要访问VMnet8那个地址(从物理机的网络连接中查看该地址)
在这里插入图片描述
如果没出现相应的网卡,则在虚拟机网络编辑器中勾选下面红框
在这里插入图片描述

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

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

相关文章

进程等待(wait和wait函数)【Linux】

进程等待 wait和wait函数【Linux】 进程等待的概念进程等待的必要性进程等待的方法wait函数waitpid函数 非阻塞等待和阻塞等待的对比阻塞等待:非阻塞等待 进程等待的概念 进程等待就是通过 wait/waitpid的方式,让父进程对子进程进行等待子进程退出并且将…

【信号处理:小波包转换(WPT)/小波包分解(WPD) 】

【信号处理:小波包转换(WPT)/小波包分解(WPD) 】 小波包变换简介WPT/WPD的基础知识WPT/WPD的主要特点The Wavelet Packet Transform 小波包变换前向小波数据包变换最佳基础和成本函数数学中波纹的最佳基础其他成本函数…

酷狗高级Java面试真题

今年IT寒冬,大厂都裁员或者准备裁员,作为开猿节流主要目标之一,我们更应该时刻保持竞争力。为了抱团取暖,林老师开通了《知识星球》,并邀请我阿里、快手、腾讯等的朋友加入,分享八股文、项目经验、管理经验…

洛谷普及组P1044栈,题目讲解(无数论基础,纯打表找规律)

[NOIP2003 普及组] 栈 - 洛谷 我先写了个打表的代码&#xff0c;写了一个小时&#xff0c;o(╥﹏╥)o只能说我真不擅长dfs。 int n; std::unordered_map<std::string, int>map; void dfs(std::vector<int>&a, int step,std::stack<int>p, std::string …

Nginx中include配置文件,方便管理多域名

目录 1.加上include配置 2.配置 server 记录 一个网站对应一个server 记录&#xff0c;这样管理起来相对麻烦。我们可以将每个网站记录单独拆分出来即可&#xff0c;这就需要用到 nginx 中的 conf.d 文件 1.加上include配置 先进入到 nginx.conf 文件&#xff0c;然后将所有…

CentOS7搭建Elasticsearch与Kibana服务

1.部署单点es 1.1.创建网络 因为我们还需要部署kibana容器&#xff0c;因此需要让es和kibana容器互联。这里先创建一个网络&#xff1a; docker network create es-net 1.2拉取elasticsearch镜像 docker pull elasticsearch:7.11.1 1.3.运行 运行docker命令&#xff0c;部…

paddle v4 hubserving 部署

环境准备&#xff1a;https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.7/deploy/hubserving#24-%E5%90%AF%E5%8A%A8%E6%9C%8D%E5%8A%A1 服务器启动命令 hub serving start -c deploy/hubserving/ocr_system/config.json客户端请求 python tools/test_hubserving.…

Java ORM 框架 Mybatis详解

&#x1f4d6; 内容 Mybatis 的前身就是 iBatis &#xff0c;是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。本文以一个 Mybatis 完整示例为切入点&#xff0c;结合 Mybatis 底层源码分析&#xff0c;图文并茂的讲解 Mybatis 的核心工作机制。 …

面向对象编程(高级)

面向对象编程&#xff08;高级&#xff09; 1、类变量和类方法 &#xff08;1&#xff09; 概念 类变量&#xff0c;也称为静态变量&#xff0c;是指在类级别声明的变量。它们与特定类相关联&#xff0c;而不是与类的实例&#xff08;对象&#xff09;相关联。每个类变量只有…

JavaSE语法之十五:异常(超全!!!)

文章目录 一、异常的概念与体系1. 异常的概念2. 异常的体系结构3. 异常的分类 二、异常的处理方式1. 防御式编程&#xff08;1&#xff09;LBYL 事前防御型&#xff08;2&#xff09;EAFP 时候认错型 2. 异常的抛出3. 异常的捕获&#xff08;1&#xff09;异常声明的 throws&am…

工作流入门这篇就够了!

总概 定义&#xff1a;工作流是在计算机支持下业务流程的自动或半自动化&#xff0c;其通过对流程进行描述以及按一定规则执行以完成相应工作。 应用&#xff1a;随着计算机技术的发展以及工业生产、办公自动化等领域的需求不断提升&#xff0c;面向事务审批、材料提交、业务…

OpenCV中实现图像旋转的方法

OpenCV中实现图像旋转的方法 函数&#xff1a;cv2.flip() 功能&#xff1a;水平或者垂直翻转 格式&#xff1a;dst cv2.flip(src,flipCode[,dst]) 参数说明&#xff1a; src&#xff1a;输入图像 dst&#xff1a;和原图像具有相同大小、类型的目标图像。 flipCode&#…

【Hotspot源码】揭秘Java线程创建过程中的各种细节

近期准备给大家分享专题系列文章&#xff0c;聚焦Java多线程机制。会从hotspot源码角度&#xff0c;给大家揭秘平时学习多线程那些从来没有想过的问题&#xff0c;或者存在疑虑却又无法证明的理论。 今天是系列文章首篇&#xff0c;咱们来谈谈Java线程创建的一些细节问题&#…

Vue 中的 ref 与 reactive:让你的应用更具响应性(中)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Lumerical Script------for语句

Lumerical------for语句 正文正文 关于 Lumerical 中 for 语句的用法这里不做过多说明了,仅仅做一个记录,具体用法如下: 通常我们用的比较多的形式是第一种步长值为 1 的情况。对于其他步长值的情况,我们可以使用第二种用法。对于 while 的类似使用方法可以使用第三种。 …

用Audio2Face驱动UE - MetaHuman

新的一年咯&#xff0c;很久没发博客了&#xff0c;就发两篇最近的研究吧。 开始之前说句话&#xff0c;别轻易保存任何内容&#xff0c;尤其是程序员不要轻易Ctrl S 在UE中配置Audio2Face 先检查自身电脑配置看是否满足&#xff0c;按最小配置再带个UE可能会随时崩&#x…

宏晶微 MS9125 USB 投屏控制芯片 VGAHDM输出 全新原装

1.基本介绍 MS9125 是一款 USB 单芯片投屏器,内部集成了 USB2.0 控制器和数据收发模块、视频 DAC、HDMI 接口和音视频处理模块&#xff0c;MS9125 可以通过 USB 接口显示或者扩展 PC、智能手机、平板电脑的显示信息到更大尺寸的显示设备上&#xff0c;支持 VGA 和 HDMI 视频接…

hcie datacom笔试考多少道题目?

华为认证的HCIE Datacom(数据通信)是网络工程师们向往的顶级认证之一。对于即将参加HCIE Datacom笔试的考生们&#xff0c;你们一定想知道笔试会考多少道题目。下面将为大家揭秘HCIE Datacom笔试的题目数量&#xff0c;并分享一些优秀的培训机构&#xff0c;帮助大家顺利通过考…

diffusers 源码待理解之处

一、训练DreamBooth时&#xff0c;相关代码的细节小计 ** class_labels timesteps 时&#xff0c;模型的前向传播怎么走&#xff1f;待深入去看 ** 利用class_prompt去生成数据&#xff0c;而不是instance_prompt class DreamBoothDataset(Dataset):"""A dat…

循环与基础函数

循环与函数 1.循环的三种方式2.循环的中断与空语句3.函数的定义与使用4.参数的作用域5.指针6.总结 1.循环的三种方式 我们最熟悉的循环为for和while&#xff0c;这两种循环方式在Python系列介绍过。在C中&#xff0c;循环的基本逻辑同Python是类似的。c中while循环的语法如下&…