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

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

文章目录

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

计算机通信的基础

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

相关文章

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

Golang中拼接字符串的6种方式性能对比

《Golang中拼接字符串的6种方式性能对比》golang的string类型是不可修改的,对于拼接字符串来说,本质上还是创建一个新的对象将数据放进去,主要有6种拼接方式,下面小编就来为大家详细讲讲吧... 目录拼接方式介绍性能对比测试代码测试结果源码分析golang的string类型是不可修改的,对于拼接字

Linux下修改hostname的三种实现方式

《Linux下修改hostname的三种实现方式》:本文主要介绍Linux下修改hostname的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下修改ho编程stname三种方式方法1:修改配置文件方法2:hFvEWEostnamectl命

SpringBoot接收JSON类型的参数方式

《SpringBoot接收JSON类型的参数方式》:本文主要介绍SpringBoot接收JSON类型的参数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、jsON二、代码准备三、Apifox操作总结一、JSON在学习前端技术时,我们有讲到过JSON,而在

Spring Security注解方式权限控制过程

《SpringSecurity注解方式权限控制过程》:本文主要介绍SpringSecurity注解方式权限控制过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、摘要二、实现步骤2.1 在配置类中添加权限注解的支持2.2 创建Controller类2.3 Us

SpringBoot操作MaxComputer方式(保姆级教程)

《SpringBoot操作MaxComputer方式(保姆级教程)》:本文主要介绍SpringBoot操作MaxComputer方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录引言uqNqjoe一、引入依赖二、配置文件 application.properties(信息用自己

Java中数组转换为列表的两种实现方式(超简单)

《Java中数组转换为列表的两种实现方式(超简单)》本文介绍了在Java中将数组转换为列表的两种常见方法使用Arrays.asList和Java8的StreamAPI,Arrays.asList方法简... 目录1. 使用Java Collections框架(Arrays.asList)1.1 示例代码1.

java两个List的交集,并集方式

《java两个List的交集,并集方式》文章主要介绍了Java中两个List的交集和并集的处理方法,推荐使用Apache的CollectionUtils工具类,因为它简单且不会改变原有集合,同时,文章... 目录Java两个List的交集,并集方法一方法二方法三总结java两个List的交集,并集方法一

Python中如何控制小数点精度与对齐方式

《Python中如何控制小数点精度与对齐方式》在Python编程中,数据输出格式化是一个常见的需求,尤其是在涉及到小数点精度和对齐方式时,下面小编就来为大家介绍一下如何在Python中实现这些功能吧... 目录一、控制小数点精度1. 使用 round() 函数2. 使用字符串格式化二、控制对齐方式1. 使用

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题