《网络是怎样连接的》(三)

news2024/11/15 15:59:08

《网络是怎样连接的》(二.2)_qq_38480311的博客-CSDN博客

本文主要取材于  《网络是怎样连接的》 第三章。

简述:本文主要内容是解释 通过网线传输出去的包是如何经过集线器、交换机和路由器等网络设备,最终进入互联网的。

信号从网卡发出会经过集线器,集线器会把信号广播至连到它的所有线路;信号从出发到集线器中间会有信号衰减和噪声,利用双绞线可以抑制噪声。经过集线器后会经过交换机,交换机的每个接口都相当于一块网卡,但是却没有MAC地址,交换机只将包转发到具有特定MAC地址的设备连接的端口。接下来,信号会经过路由器,路由器会通过端口将发过来的包接收进来,转发模块会根据接收到的包的IP头部中记录的接收方IP地址,在路由表中进行查询,以此判断转发目标。然后,转发模块将包转移到转发目标对应的端口。由于路由器端口支持多种网络协议,其发送时还需要根据包的长度判断是否分片。IP是负责通信发送到接收端的协议,以太网是负责每一跳的协议。为了解决IP地址不够的问题,一个私有网络对外只使用一个共有IP号,路由器具有地址转换功能可根据端口号找到私网内每一个设备。同时,路由器还具有包过滤功能来阻止非法入侵。

 3.1 信号在网线和集线器中传输

网络包从客户端计算机发出之后,要经过集线器、交换机和路由器最终进入互联网。实际上,我们家里用的路由器已经集成了集线器和交换机的功能,像图上这样使用独立设备的情况很少见。不过,把每个功能独立出来更容易理解。

从网卡到集线器

信号衰减:

网卡中的PHY(MAU)模块负责将包转换成电信号,信号通过RJ-45接口进入双绞线,信号会通过网线到达集线器的接口,这个过程就是单纯地传输电信号而已。然而信号到达集线器的时候并不是跟刚发送出去的时候一模一样,集线器收到的信号有时会出现衰减(图3.3)。信号在网线的传输过程中,能量会逐渐损失。网线越长,信号衰减就越严重。

电信号的频率越高,能量的损失率越大。信号的拐角意味着电压发生剧烈的变化,而剧烈的变化意味着这个部分的信号频率很高。高频信号更容易损失能量,因此本来剧烈变化的部分就会变成缓慢的变化,拐角也就变圆了。即便线路条件很好,没有噪声,信号在传输过程中依然会发生失真,如果再加上噪声的影响,失真就会更厉害。噪声根据强度和类型会产生不同的影响,无法一概而论,但如果本来就已经衰减的信号再进一步失真,就会出现对0和1的误判,这就是产生通信错误的原因。

噪声抑制:

局域网网线使用的是双绞线,其中“双绞”的意思就是以两根信号线为一组缠绕在一起,这种拧麻花一样的设计是为了抑制噪声的影响。

如果网线周围存在电磁波,就会在网线中产生和原本的信号不同的电流。由于信号本身也是一种带有电压变化的电流,其本质和噪声产生的电流是一样的,所以信号和噪声的电流就会混杂在一起,导致信号的波形发生失真。

影响网线的电磁波分为两种,一是 由电机、荧光灯、CRT显示器等设备泄漏出来的电磁波,另一种电磁波是从网线中相邻的信号线泄漏出来的。双绞线(a)通过两根信号线的缠绕抵消外源性噪声;(b)通过改变节距抑制内源性噪声。

集线器将信号发往所有线路

当信号到达集线器后,会被广播到整个网络中。然后由设备根据接收方MAC地址来判断应该接收哪些包。

3.2 交换机的包转发操作

这部分操作和网卡基本相同,大家可以认为交换机的每个网线接口后面都是一块网卡。网线接口和后面的电路部分加在一起称为一个端口,也就是说交换机的一个端口就相当于计算机上的一块网卡。但交换机的工作方式和网卡有一点不同。网卡本身具有MAC地址,并通过核对收到的包的接收方MAC地址判断是不是发给自己的,如果不是发给自己的则丢弃;相对地,交换机的端口不核对接收方MAC地址,而是直接接收所有的包并存放到缓冲区中。因此,和网卡不同,交换机的端口不具有MAC地址

交换电路工作原理

信号线排列成网格状,每一个交叉点都有一个交换开关,交换开关是电子控制的,通过切换开关的状态就可以改变信号的流向。交换电路的输入端和输出端分别连接各个接收端口和发送端口,网络包通过这个网格状的电路在端口之间流动。举个例子,假设现在要将包从2号端口发送到7号端口,那么信号会从输入端的2号线进入交换电路,这时,如果让左起的6个开关水平导通,然后将第7个开关切换为垂直导通,信号就会像图上一样流到输出端7号线路,于是网络包就被发送到了7号端口。每个交叉点上的交换开关都可以独立工作,因此只要路径不重复,就可以同时传输多路信号。

交换机根据MAC地址表查找MAC地址,然后将信号发送到相应的端口。发送前确认信号收发模块中的接收线路没有信号进来,如检测到其他信号,则需要等待。

MAC工作表的维护

维护操作分为两种:一是收到包时,将发送方MAC地址以及其输入端口的号码写入MAC地址表中;二是删除地址表中某条记录的操作,这是为了防止设备移动时产生问题,只需要将一段时间不使用的过时记录从地址表中删除就可以了。

当MAC表中找不到指定的MAC地址。这可能是因为具有该地址的设备还没有向交换机发送过包,或者这个设备一段时间没有工作导致地址被从地址表中删除了。这种情况下,交换机无法判断应该把包转发到哪个端口,只能将包转发到除了源端口之外的所有端口上。。局域网中每秒可以传输上千个包,多出一两个包并无大碍。

双工模式和自动协商功能

交换机的全双工模式可以同时发送和接收信号。以太网设备的网线接口周围有一个绿色的LED指示灯,它表示是否检测到正常的脉冲信号。如果绿灯亮,说明PHY(MAU)模块以及网线连接正常。当两台设备通电并完成硬件初始化之后,就会开始用脉冲信号发送自己支持的速率和工作模式。当对方收到信号之后,会通过读取脉冲信号的排列来判断对方支持的模式,然后看看双方都支持的模式有哪些。

交换机和集线器对比:

交换机只将包转发到具有特定MAC地址的设备连接的端口,其他端口都是空闲的。集线器会将输入的信号广播到所有的端口,如果同时输入多个信号就会发生碰撞,无法同时传输多路信号,因此从设备整体的转发能力来看,交换机要高于集线器。

3.3 路由器的包转发

网络包经过集线器和交换机之后,现在到达了路由器,并在此被转发到下一个路由器。区别是路由器是基于IP设计的,而交换机是基于以太网设计的。路由器的端口模块则支持除局域网之外的多种通信技术,如ADSL、FTTH,以及各种宽带专线等,只要端口模块安装了支持这些技术的硬件即可。

 路由器工作整体流程:

首先会通过端口将发过来的包接收进来,这一步取决于端口对应的通信技术。接下来,转发模块会根据接收到的包的IP头部中记录的接收方IP地址,在路由表中进行查询,以此判断转发目标。然后,转发模块将包转移到转发目标对应的端口,端口再按照硬件的规则将包发送出去。

路由器的端口模块根据相应通信技术的规范来执行包收发的操作,是以实际发送方或者接收方来收发网络包的。以以太网协议为例,不同于交换机,路由器的而每个端口都具有MAC地址,也具有IP地址,而交换机没有,交换机只负责转发操作。

路由器有路由表,转发操作是根据路由表查询的。路由器会将接收到的网络包的接收方IP地址与路由表中的目标地址进行比较,并找到相应的记录。交换机在地址表中只匹配完全一致的记录,而路由器则会忽略主机号部分,只匹配网络号部分。打个比方,路由器在转发包的时候只看接收方地址属于哪个区,××区发往这一边,××区发往那一边。路由也具有路由聚合功能,不细讲。

对路由表进行维护的方法有几种,大体上可分为以下两类。

(a)由人手动维护路由记录

(b)根据路由协议机制,通过路由器之间的信息交换由路由器自行维护路由表的记录其中

(b)中提到的路由协议有很多种,例如RIP、OSPC、BGP等都属于路由协议。

路由器的包接收操作:路由器的端口有各种不同的类型,这里我们只介绍以太网端口是如何接收包的。信号到达网线接口部分,其中的PHY(MAU)模块和MAC模块将信号转换为数字信息,然后通过包末尾的FCS进行错误校验,如果没问题则检查MAC头部中的接收方MAC地址,看看是不是发给自己的包,如果是就放到接收缓冲区中,否则就丢弃这个包。如果包的接收方MAC地址不是自己,说明这个包是发给其他设备的,如果接收这个包就违反了以太网的规则。

 查询路由表确定输出端口:完成包接收操作之后,路由器就会丢弃包开头的MAC头部。接下来,路由器会根据MAC头部后方的IP头部中的内容进行包的转发操作。判断转发目标的第一步,就是根据包的接收方IP地址查询路由表中的目标地址栏,以找到相匹配的记录。如果在路由表中无法找到匹配的记录,路由器会丢弃这个包,并通过ICMP[插图]消息告知发送方。这里的处理方式和交换机不同,原因在于网络规模的大小。交换机连接的网络最多也就是几千台设备的规模,这个规模并不大[插图]。

路由包更新和分片

从路由表中查找到转发目标之后,网络包就会被转交给输出端口,并最终发送出去,但在此之前,路由器还有一些工作要完成。第一个工作是更新IP头部中的TTL(Time to Live,生存时间)字段(参见第2章的表2.2)。TTL字段表示包的有效期,包每经过一个路由器的转发,这个值就会减1,当这个值变成0时,就表示超过了有效期,这个包就会被丢弃。这个机制是为了防止包在一个地方陷入死循环。现在的互联网即便访问一台位于地球另一侧的服务器,最多也只需要经过几十个路由器,因此只要包被正确转发,就可以在过期之前到达目的地。

路由器的端口并不只有以太网一种,也可以支持其他局域网或专线通信技术。不同的线路和局域网类型各自能传输的最大包长度也不同,因此输出端口的最大包长度可能会小于输入端口。即便两个端口的最大包长度相同,也可能会因为添加了一些头部数据而导致包的实际长度发生变化,ADSL、FTTH等宽带接入技术中使用的PPPoE[插图]协议就属于这种情况。无论哪种情况,一旦转发的包长度超过了输出端口能传输的最大长度,就无法直接发送这个包了。遇到这种情况,可以使用IP协议中定义的分片功能对包进行拆分,缩短每个包的长度。最大包长度是由端口类型决定的,用这个最大长度减掉头部的长度就是MTU,将MTU与要转发的包长度进行比较。如果输出端口的MTU足够大,那么就可以不分片直接发送;如果输出端口的MTU太小,那么就需要将包按照这个MTU进行分片,但在此之前还需要看一下IP头部中的标志字段,确认是否可以分片。

 

包的发送操作取决于输出端口的类型。如果是以太网端口,则按照以太网的规则将包转换为电信号发送出去;如果是ADSL则按照ADSL的规则来转换,以此类推。

路由器与交换机的关系:

从本质上说是将IP包装进以太网包的数据部分中,委托以太网去传输这些数据。IP协议本身没有传输包的功能,因此包的实际传输要委托以太网来进行。路由器是基于IP设计的,而交换机是基于以太网设计的,因此IP与以太网的关系也就是路由器与交换机的关系。换句话说,路由器将包的传输工作委托给交换机来进行。

IP并不是委托以太网将包传输到最终目的地,而是传输到下一个路由器。在创建MAC头部时,也是从IP的路由表中查找出下一个路由器的IP地址,并通过ARP查询出MAC地址,然后将MAC地址写入MAC头部中的,这表示IP对以太网的委托只是将包传输到下一个路由器就行了。

简单理解:IP是负责通信发送到接收端的协议,以太网是负责每一跳的协议。

网络并非只有以太网一种,还有无线局域网,以及接入互联网的通信线路,它们和IP之间的关系又是什么样的呢?其实只要将以太网替换成无线局域网、互联网线路等通信规格就可以了。也就是说,如果和下一个路由器之间是通过无线局域网连接的,那么就委托无线局域网将包传输过去;如果是通过互联网线路连接的,那么就委托它将包传输过去。

3.4 路由器的附加功能

地址转换

地址转换是因为如果给每一个设备都分配一个IP地址,地址就会不够用。因而其实可以把网络分区,外部交流使用公有地址,内部使用私有地址,共有和私有的地址转换就是地址转换。在一个私有网络内,IP不可以重复,而对外只使用一个共有地址 ,可以用不同的端口号来区别内网中的不同终端。即IP相同,但是端口号不同,仍然可以 识别相应的设备。

 

包过滤

包过滤就是在对包进行转发时,根据MAC头部、IP头部、TCP头部的内容,按照事先设置好的规则决定是转发这个包,还是丢弃这个包。我们通常说的防火墙设备或软件,大多数都是利用这一机制来防止非法入侵的。

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

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

相关文章

AI量化模型预测挑战赛 第二次学习笔记

有关竞赛信息以及基础baseline代码解读请看我的上一篇文章 AI量化模型预测——baseline学习笔记_寂ღ᭄秋࿐的博客-CSDN博客 在经过baseline进行详细的分析之后,接下来的方向肯定是奔着提分去的,下面我就从五个方面进行一一列出提分思路 提取更多的特征…

BC260模块_NB通讯_MQTT

闲来无事从角落里找出了一个BC260模块,玩了玩发现挺有趣的,于是将调试过程记录下来分享给需要的朋友们。 1.BC260模块 BC260模块是一款NB-loT无线通讯模块,模块插上物联网SIM卡后可以实现物联网无线通讯功能。 BC260模块是一款NB-loT无线通…

android 开发中常用命令

1.反编译 命令&#xff1a;apktool d <test.apk> -o <folderdir> 其中&#xff1a;test.apk是待反编译文件的路径&#xff0c;folderdir是反编译后的文件的存储位置。 apktool d -f <test.apk> -o <folderdir> 注意&#xff1a;如果dir已经存在&am…

2023年测试岗,软件测试面试题汇总-附答案,疯狂拿offer...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 介绍一下测试流程…

共享式以太网的争用期

在以太网中&#xff0c;必然会发生碰撞。   站点从发送帧开始&#xff0c;最多经过 2 τ 2\tau 2τ就会检测到碰撞&#xff0c;此时 2 τ 2\tau 2τ被称为争用期或碰撞窗口。   站点从发送帧开始&#xff0c;经过争用期 2 τ 2\tau 2τ这段时间还没有检测到碰撞&#xff0c…

不只是Axure,这5 个也能轻松画原型图!

在设计和开发过程中&#xff0c;原型图是一个至关重要的工具。它是将设计理念转化为可视化、交互式的形式&#xff0c;使团队成员和利益相关者更好地理解和评估产品的功能和用户体验。选择适合的软件工具对于画原型图至关重要&#xff0c;本文将介绍 5 种常用的画原型图软件&am…

创建Springboot+vue3项目

项目概述创建springboot项目加入mybatis-plus支持1.加入依赖代码2.创建数据库实例3.yml文件的配置4.编写测试代码5.测试结果 创建vue项目报错错误一错误二错误三 项目概述 后端&#xff1a;Springboot、mybatis-plus、java 前端&#xff1a;nodejs、vue脚手架、element-ui 数据…

互联网医院|线上医疗平台连接医者和患者的桥梁

近年来&#xff0c;随着互联网技术的飞速发展&#xff0c;互联网医院系统悄然崛起&#xff0c;引领着医疗行业的变革浪潮。这一系统以其出色的功能与服务&#xff0c;为广大患者带来了便捷、高效的医疗体验&#xff0c;将传统医疗模式推向了新的高度。 作为医疗界的新生力量&a…

计算机网络—IP

这里写目录标题 IP的基本认识网络层与数据链路层有什么关系IP地址基础知识IP 地址的分类什么是A、B、C类地址广播地址用来做什么什么是D、E类广播多播地址用于什么IP分类的优点IP分类的缺点 无分类地址CIDR如何划分网络号和主机号怎么进性子网划分 公有 IP 地址与私有 IP 地址公…

sentinel客户端和dashboard交互

回顾 在前面的章节中&#xff1a;通过阐述sentinel简单使用、滑动窗口、核心流程源码分析把sentinel限流、熔断等主要功能说明清楚了&#xff0c;但我们在实际使用的过程中&#xff0c;不可能通过硬编码的方式设置规则&#xff0c;且规则也没法直观的维护&#xff0c;为此肯定…

如何在 Cloudron 上部署 ONLYOFFICE 文档

使用 Cloudron 应用市场上的应用程序&#xff0c;只需点击几下即可在服务器上部署 ONLYOFFICE 文档。 什么是 ONLYOFFICE 文档 ONLYOFFICE 文档是一个在线办公套件&#xff0c;包括文本文档、电子表格和演示文稿的查看器和编辑器&#xff0c;与包括 .docx、.xlsx、.pptx 在内的…

八、复用(1)

本章概要 组合语法继承语法 初始化基类带参数的构造函数 委托 代码复用是面向对象编程&#xff08;OOP&#xff09;最具魅力的原因之一。 对于像 C 语言等面向过程语言来说&#xff0c;“复用”通常指的就是“复制代码”。任何语言都可通过简单复制来达到代码复用的目的&#…

Hive终端命令行打印很多日志时,如何设置日志级别

示例&#xff1a;use test; 切换到test数据库时&#xff0c;输出很多日志信息不方便看结果&#xff0c;如下图。 解决方法&#xff1a; 退出hive命令行界面&#xff08;ctrlC&#xff09;执行“vi /usr/local/apache-hive-3.1.2-bin/conf/log4j.properties”命令&#xff0c;创…

AI lightning学习

真的是没有mmlab的框架好理解&#xff0c;hook调用没问题&#xff0c;就是代码写的不整洁&#xff0c;hook放的到处都是&#xff0c;而且hook的名字和run的名字也不好对应。 又是捧mmengine的一天 &#x1f603;

《面试1v1》ElasticSearch 集群索引分片

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…

React中使用mobx管理状态数据使用样例

MobX 是一个身经百战的库&#xff0c;它通过运用透明的函数式响应编程&#xff08;Transparent Functional Reactive Programming&#xff0c;TFRP&#xff09;使状态管理变得简单和可扩展。官网地址&#xff1a;关于 MobX | MobX中文文档 | MobX中文网 安装依赖 mobx-react-…

共享式以太网的退避算法

在使用CSMA/CD协议的共享总线以太网中&#xff0c;正在发送顿的站点一边发送顿一边检测碰撞&#xff0c;当检测到碰撞时就立即停止发送&#xff0c;退避一段随机时间后再重新发送。   截断二进制指数退避算法&#xff1a;退避时间基本退避时间 2 τ 2\tau 2τ随机数r{ 0 , 1 …

Java笔记(三十二):MySQL(下)-- 事务、索引、引擎、视图、MySQL管理

七、事务transaction 1、引入 场景&#xff1a;学工部整个部门解散了&#xff0c;该部门及部门下的员工都需要删除了。 操作&#xff1a; -- 删除学工部 delete from dept where id 1; -- 删除成功-- 删除学工部的员工 delete from emp where dept_id 1; -- 删除失败&…

Java从入门到精通(四)· 面向对象

Java从入门到精通&#xff08;四&#xff09; 面向对象 一 静态关键字&#xff08;static&#xff09; static表示静态关键字&#xff0c;可以用来修饰成员变量和成员方法。 被 static修饰的成员变量&#xff0c;称之为静态成员变量或者类变量&#xff0c;同理可得&#xff…

前端性能优化介绍与常见方法(二)

这是一个没有套路的前端博主&#xff0c;热衷各种前端向的骚操作&#xff0c;经常想到哪就写到哪&#xff0c;如果有感兴趣的技术和前端效果可以留言&#xff5e;博主看到后会去代替大家踩坑的&#xff5e; 主页: oliver尹的主页 格言: 跌倒了爬起来就好&#xff5e; 目录 一、…