简要理解(大局观)计算机之间的通信方式【同一网段】(直接相连,同轴电缆,集线器,网桥,交换机)

本文主要是介绍简要理解(大局观)计算机之间的通信方式【同一网段】(直接相连,同轴电缆,集线器,网桥,交换机),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 计算机通信的基础
  • 计算机之间的连接方式
    • 最简单的方式——直接网线连接
    • 同轴电缆的方式
    • 集线器连接的方式
    • 网桥方式
    • 交换机方式

计算机通信的基础

计算机之间进行通信,并不是计算机1发送给计算机2接收后就完事了,还需要计算机1发送给计算机2后,计算机2需要恢复确认收到信息才算发送消息成功。
在这里插入图片描述

计算机之间通信的基础,需要知道两个要素:
IP地址:通知计算机要往哪儿发送数据;
MAC地址:在网卡中的,用接收网络的数据;

在这里插入图片描述
若网卡发现发送的数据是自己的MAC地址,那么就接收该数据包,并传送给上一层继续处理,若不是,则直接丢弃。

网卡如何发现数据是不是自己的MAC地址呢?

是因为发送的数据包包括:自己的IP地址,对方的IP地址,自己的MAC地址,对方的MAC地址等信息,所以可以判断出来。


计算机之间的连接方式

最简单的方式——直接网线连接

在这里插入图片描述
通过一条网线,连接到两台计算机的网线口,就可以直接进行通信了。

在这里插入图片描述
对于上面的两台计算机,直接用网线连接,并设置好计算机0和计算机1的IP地址。

如何检测两台计算机是否可以通信成功呢?

通过 ping 对方的IP地址 的命令方式,假如有数据包返回回来表示就能够进行通信。
在这里插入图片描述
要知道,两个计算机之间同行通过网线连接的网络必须是在同一个网段,才可以通信成功。
至于什么是网段,往后会解释。

来看看ping对方IP地址,发送数据包的过程(大致)
在这里插入图片描述
看看计算机1的网络层和数据链路层数据,就是数据包啦。
在这里插入图片描述


上诉我们发现ping的时候,直接就可以ping对方的IP地址就行,并不需要MAC地址?事实真如此嘛?
其实第一次ping的时候,就先发送ARP广播,获取对方的吗MAC,然后才执行ICMP协议,剩下三次得到的回复就不需要发ARP广播了,就直接执行ICMP协议。

ARP广播协议:必须在同一个网段才可以发ARP广播包,ARP广播包的目的:就是为了获取对方的MAC地址。

只是获取MAC地址的过程被隐藏,我们观察上面的第二张图也可以发现,其实是有MAC地址的,现在我们观察详细ping对方IP地址时候的过程。

在这里插入图片描述
在这里插入图片描述
第三个ARP是计算机1回复计算机0:MAC地址就是计算机1。这然计算机0就知道了计算机1的MAC地址啦。

要清楚这里ARP显示三次,并不是发送三次ARP,只是发送一次ARP,这里只是一次ARP的分解动作

至于为什么ARP广播只需要发送一次,下一次不需要发送,是因为ARP有缓存机制,会记住对方的MAC地址,所以你ping的时候,第一次才会发ARP广播,第二次三次四次都不需要了。


同轴电缆的方式

在这里插入图片描述
这是一种以前的通信方式,现今已经被淘汰了。

同轴电缆通过一条网线连接了多台计算机,线的两端有电阻,主要用来吸收信号用的,不吸收,可能信号会碰到其他信号反弹回来,造成干扰。对于同轴电缆的计算机来说,一旦一台计算机发送数据,就会发送给连在同轴电缆上的所有计算机,发送到后,询问对方的IP地址是否与自己要发送的目标IP地址相同,相同就接收,不相同就抛弃。
要知道,第一次发送时候,即不知道对方的MAC地址时候,还是需要ARP广播包发送获取对方的MAC地址的。

同轴电缆的特点:

  1. 半双工通信
    就是只能一端发送数据,要么计算机1发送给计算机2,要么计算机2发送给计算机1,不能够,计算机1发送给计算机2时候,计算机2也发送数据。
  2. 容易冲突
    假如计算机1发送给计算机2时候,计算机2也发送给计算机1,就会造成信号冲突。
  3. 不安全
    因为每次发送数据时候,都是全同轴电缆连接的计算机都会收到包,进行判断可不可以接受,这个很不安全
  4. 假如同轴电缆某一个地方断了,所有的计算机都不可以通信了。

集线器连接的方式

基于上面的同轴电缆某一个地方断了,就不可以通信,又多了一种,就是集线器连接方式
在这里插入图片描述
和同轴电缆的区别就是某一个地方断了,不会影响全部计算机不可以通信。

集线器连接的计算机通信也是在同一个网段才可以哦。
在这里插入图片描述
假如计算机0要发给计算机2数据的过程:

第一次发送时候,由于不知道对方计算机2的MAC地址,就发送一个ARP广播包给集线器相连的所有计算机,即 0 给 1 和 2发送数据包,询问对方的MAC地址,由于不是发给1 的,所以计算机1会丢弃数据包,而发给计算机2的,计算机2就接收数据包,并响应返回一个数据包,当计算机2响应的数据包返回到集线器时候,也会向集线器相连的所有计算机发送数据包,计算机1发现不是自己的,就丢弃,计算机 0 发现是给自己的就接收。

这样计算机0 就知道计算机2的MAC地址了。此时计算机才开始发送通信的数据包,此时经过集线器又会发送给所有和集线器相连接的计算机,如果不是该计算机接收的就丢弃,是就接收,比如计算机1就丢弃,计算机2就接收,计算机2还要返回响应表示通信数据包接收到了,所以计算机2发送数据包经过集线器,又会发送所有相连接的计算机,计算机1丢弃,计算机2接收。
此时就是真正的通信成功。

一旦第一次发送ARP广播包时候,就会缓存得到对方的MAC地址了,下次再发送给对方时候,就不用ARP广播了,发送ARP广播原因是不知道对方MAC地址才会发送的。

arp -a 可以看到缓存下来的IP地址和MAC地址对应。

总结一下
集线器就是相当于什么都没有的东西,无论是发送的数据包,还是响应回来的数据包,都会给集线器相连的所有设备都发送数据包。


网桥方式

集线器有很多缺点,当设备很多时候,那就会给很多设备都发送数据包,这样是不可行。
所以也就出现了网桥来连接计算机。

在这里插入图片描述
网桥特点:

  1. 网桥只有两个接口的,并且网桥连接的网络也是同一个网段。
  2. 网桥可以通过自学习,记录通过该网桥设备的数据里面的MAC地址,因为网桥只有两个端口,即假设一个是左,一个是右,就会记录发送数据的计算机在经过网桥时候它MAC地址,在网桥有个MAC地址表,左边端口记录左边发送的数据MAC地址,于此同时,当响应数据包时候,经过网桥时候,MAC地址表,也会记录该响应包计算机的MAC地址。通过一直的发送数据包,响应数据包,经过网桥时候,一直记录MAC地址,只要MAC地址表有该数据包要发往的MAC地址话,就可以通过网桥发送过去。
  3. 基于上面的原因可以起到隔绝冲突域的作用。

而网桥MAC地址表记录MAC地址的方式,就是通过ARP广播包发送过去经过网桥时候记录的。左边端口和右边端口记录了两边的MAC地址,从而可以起到隔绝冲突域的作用。

在这里插入图片描述
比如上图:网桥隔绝出两个冲突域,一旦网桥有了两边的各个计算机的MAC地址,那么就可以隔绝了。比如当计算机6给计算机8发送数据时候,集线器1会发送所有和它相连接设备当来到网桥,发现网桥中对于计算机8的MAC地址是在左边的端口,那么就会拒绝该数据包通过网桥啦。


交换机方式

由于网桥的端口只有两个,隔绝两个冲突域,但是对于单独的左边和右边两个冲突域来说,也是一样,当发数据时候,会经过集线器发送集线器相连的所有设备。

所以基于上诉原因又多出了一个交换机设备。

在这里插入图片描述
交换机特点:

  1. 端口更多,可以连接多态设备,相当于是网桥和集线器的集合,集结了网桥的功能,也季节了集线器转发数据的功能。每个端口可以记录所有端口哪边的mac地址,也是通过交换机有个mac地址表,里面的表记录了每个端口那边的设备的MAC地址。
  2. 全双工通信,意思就是计算机1给2发消息同时计算机2也可以给1发

举个例子:
对于上面的交换机相连接:计算机2给计算机3发送的过程.
首先计算机2不知道计算机3的mac地址,就会发送一个ARP广播,经过交换机,交换机就记住了计算机2的MAC地址,并且是对应哪个端口,然后经过交换机发送给计算机1 0 3,计算机1 和 0 丢,而计算机3接收,计算机三返回数据包,经过交换机,于此同时交换机就会记住计算机3的mac地址,由于交换机有记录到计算机2,所以计算机3直接发送给计算机2对应的端口了,然后计算机2接收,不会再发送给其他的端口了。


交换机相连接的都是属于同一网段的。

这篇关于简要理解(大局观)计算机之间的通信方式【同一网段】(直接相连,同轴电缆,集线器,网桥,交换机)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/159465

相关文章

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

python中的显式声明类型参数使用方式

《python中的显式声明类型参数使用方式》文章探讨了Python3.10+版本中类型注解的使用,指出FastAPI官方示例强调显式声明参数类型,通过|操作符替代Union/Optional,可提升代... 目录背景python函数显式声明的类型汇总基本类型集合类型Optional and Union(py

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

IDEA与MyEclipse代码量统计方式

《IDEA与MyEclipse代码量统计方式》文章介绍在项目中不安装第三方工具统计代码行数的方法,分别说明MyEclipse通过正则搜索(排除空行和注释)及IDEA使用Statistic插件或调整搜索... 目录项目场景MyEclipse代码量统计IDEA代码量统计总结项目场景在项目中,有时候我们需要统计

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

详解Java中三种状态机实现方式来优雅消灭 if-else 嵌套

《详解Java中三种状态机实现方式来优雅消灭if-else嵌套》这篇文章主要为大家详细介绍了Java中三种状态机实现方式从而优雅消灭if-else嵌套,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录1. 前言2. 复现传统if-else实现的业务场景问题3. 用状态机模式改造3.1 定义状态接口3