当前位置: 首页 > news >正文

一个网络上计算机的通信

一台计算机上多个进程间的通信方式有:管道、共享内存、信号量、消息队列。如果不同的计算机上多个进程间通信,即通信的进程在不同的计算机上,需要用到网络相关的知识。
那么两台计算机通信需要解决哪些问题?
计算机架构
我们来回顾一下计算机整体的硬件架构,CPU 通过内存总线和内存连起来,通过 IO 总线和其他的外部设备连起来,计算机如果要上网,跟其他的计算机相连,需要有一个网卡,网卡属于外部设备,也是通过 IO 总线和我们计算机的 CPU 相连,网卡我们也可以称之为网络适配器,网卡就是用于我们整个计算机和其他的计算机联网通信的一个硬件设施,在一台机器上,我们可以有多个网卡,比方说我们机器可能有一个有线网卡和一个无线网卡。网卡有一个接口,这个接口,实际上就是跟我们的网线连在一起的,我们可以看一下自己的电脑,一般都会有这么一个接口,用于连接网线。
两台计算机之间的通信
有了这个网卡之后,一台计算机就可以通过网线和其他的计算机连接起来,通过一根网线连接两台计算机的网卡,这个是最简单的一种场景,两台计算机,是可以通过网线来通信的,网线上传输的都是 0101 的比特数据,两台计算机我们把它称之为主机,网线我们把它称之为链路。
如果是多台机器,它们之间怎么样相互连接起来呢?
多台计算机互连
比方说我们有多台计算机,当然,我们可以通过每两台计算机之间,都用一条链路把它连接起来,理论上这样是可以的,但这个成本太高,不现实。一般,我们会通过一个叫交换机的中间设备来连接多台计算机,交换机会有多个接口,每一个接口,都会有自己各自的接口号,然后我们的计算机就跟这个交换机的接口连在一起,这样可以使这些计算机相互连在一起。
这时,我们的两台主机如何通信呢?
在这里,我们就需要有一个地址的概念,主机的每一个网卡,都会有一个全球唯一的地址,这个地址我们称之为 MAC 地址,MAC 地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡会有一个唯一的 MAC 地址。因为你只有知道了这个机器的地址,你才可以跟这个机器通信,那么怎么查看机器的 MAC 地址呢? Windows 可以在命令提示符下输入 ipconfig /all 来查看,Linux 可以通过 ifconfigip addr 来查看。
多台计算机互连-交换机
有了交换机和 MAC 地址,我们再来看多台计算机的互连,为了简单起见,我们这里的每一台主机,我们使用 A、B、C、D、E、F 来表示每一台主机网卡的 MAC 地址,在交换机会维护一张表,这个表我们把它称之为交换表,交换表里面有两列,一个是 MAC 地址,一个是对应的接口号,主机对应的网卡,和交换机的一个接口号相连,交换机里面会维护这样一个映射关系,根据这个映射关系,假设主机 A 想把数据发给主机 D ,我们在发送数据的首部,添加主机 D 的 MAC 地址,然后把添加了主机 D 的 MAC 地址的数据,发送给交换机,从接口 1 进入交换机,交换机看到了这个数据是发给 MAC 地址为 D 的主机,交换机就会去查找交换表,查找 MAC 地址为 D 应该从哪一个接口号出去,查到了从接口号 4 出去,然后这个数据到达了 MAC 地址为 D 的主机,这样就完成了数据的通信。有了交换机之后,每一台机器的网卡,需要有一个唯一的 MAC 地址,两台机器才可以在网络里面进行通信。这里可能还会有一个问题,主机 A 是怎么知道主机 D 的 MAC 地址呢?


数据分析二维码.gif

http://www.lryc.cn/news/416572.html

相关文章:

  • C语言基础题:吃冰棍(C语言版)
  • C++中,vector、deque、list、set、multiset、unordered_set和unordered_multiset容器类的总结
  • Python处理Redis
  • nodejs多版本随心切换-windows
  • json文件格式
  • 日撸Java三百行(day15:栈的应用之括号匹配)
  • Oracle-OracleConnector
  • 『 Linux 』线程池与 POSIX 线程的封装编码实现
  • 【C++】————哈希表
  • 前端学习AI历程
  • 常见中间件漏洞复现之【Tomcat】!
  • C++并发编程(一):线程基础
  • enq: HW - contention事件来啦
  • MyBatis补充
  • 系统架构师(每日一练16)
  • 实践致知第17享:电脑忽然黑屏的常见原因及处理方法
  • 微信小程序--实现地图定位---获取经纬度
  • 【Python系列】使用 `isinstance()` 替代 `type()` 函数
  • 【多模态大模型】 BLIP-2 in ICML 2023
  • HPC高性能计算平台
  • 前端常用的几个工具网站
  • 支付功能之代收代付
  • QPixmap
  • Laravel门面之下:构建自定义门面应用的艺术
  • 智启万象 | 2024 Google 开发者大会直播攻略
  • 技巧:print打印内容到控制台时信息显示不全
  • 3.表的操作
  • AI回答:C#项目编译后生成部分文件的主要职责
  • RPC通信的简单流程
  • 前端发版(发包)缓存,需要强制刷新问题处理