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

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

文章目录

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

计算机通信的基础

计算机之间进行通信,并不是计算机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

相关文章

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

Mybatis的分页实现方式

《Mybatis的分页实现方式》MyBatis的分页实现方式主要有以下几种,每种方式适用于不同的场景,且在性能、灵活性和代码侵入性上有所差异,对Mybatis的分页实现方式感兴趣的朋友一起看看吧... 目录​1. 原生 SQL 分页(物理分页)​​2. RowBounds 分页(逻辑分页)​​3. Page

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh