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

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

文章目录

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

计算机通信的基础

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

相关文章

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

Spring中配置ContextLoaderListener方式

《Spring中配置ContextLoaderListener方式》:本文主要介绍Spring中配置ContextLoaderListener方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录Spring中配置ContextLoaderLishttp://www.chinasem.cntene

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

AJAX请求上传下载进度监控实现方式

《AJAX请求上传下载进度监控实现方式》在日常Web开发中,AJAX(AsynchronousJavaScriptandXML)被广泛用于异步请求数据,而无需刷新整个页面,:本文主要介绍AJAX请... 目录1. 前言2. 基于XMLHttpRequest的进度监控2.1 基础版文件上传监控2.2 增强版多

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定