一个网络上计算机的通信
一台计算机上多个进程间的通信方式有:管道、共享内存、信号量、消息队列。如果不同的计算机上多个进程间通信,即通信的进程在不同的计算机上,需要用到网络相关的知识。
那么两台计算机通信需要解决哪些问题?

我们来回顾一下计算机整体的硬件架构,CPU 通过内存总线和内存连起来,通过 IO 总线和其他的外部设备连起来,计算机如果要上网,跟其他的计算机相连,需要有一个网卡,网卡属于外部设备,也是通过 IO 总线和我们计算机的 CPU 相连,网卡我们也可以称之为网络适配器,网卡就是用于我们整个计算机和其他的计算机联网通信的一个硬件设施,在一台机器上,我们可以有多个网卡,比方说我们机器可能有一个有线网卡和一个无线网卡。网卡有一个接口,这个接口,实际上就是跟我们的网线连在一起的,我们可以看一下自己的电脑,一般都会有这么一个接口,用于连接网线。

有了这个网卡之后,一台计算机就可以通过网线和其他的计算机连接起来,通过一根网线连接两台计算机的网卡,这个是最简单的一种场景,两台计算机,是可以通过网线来通信的,网线上传输的都是 0101 的比特数据,两台计算机我们把它称之为主机,网线我们把它称之为链路。
如果是多台机器,它们之间怎么样相互连接起来呢?

比方说我们有多台计算机,当然,我们可以通过每两台计算机之间,都用一条链路把它连接起来,理论上这样是可以的,但这个成本太高,不现实。一般,我们会通过一个叫交换机的中间设备来连接多台计算机,交换机会有多个接口,每一个接口,都会有自己各自的接口号,然后我们的计算机就跟这个交换机的接口连在一起,这样可以使这些计算机相互连在一起。
这时,我们的两台主机如何通信呢?
在这里,我们就需要有一个地址的概念,主机的每一个网卡,都会有一个全球唯一的地址,这个地址我们称之为 MAC 地址,MAC 地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡会有一个唯一的 MAC 地址。因为你只有知道了这个机器的地址,你才可以跟这个机器通信,那么怎么查看机器的 MAC 地址呢? Windows 可以在命令提示符下输入 ipconfig /all 来查看,Linux 可以通过 ifconfig 或 ip 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 地址呢?

相关文章:
一个网络上计算机的通信
一台计算机上多个进程间的通信方式有:管道、共享内存、信号量、消息队列。如果不同的计算机上多个进程间通信,即通信的进程在不同的计算机上,需要用到网络相关的知识。 那么两台计算机通信需要解决哪些问题? 我们来回顾一下计算机…...
C语言基础题:吃冰棍(C语言版)
1.题目描述 机器猫喜欢吃冰棍。 买一根冰棍,吃完了会剩一个木棒;每三个木棒可以兑换一个冰棍。兑换出来的冰棍,吃完之后也能剩下一个木棒。 所以,如果机器猫买了5根冰棍,他可以吃完之后得到5个木棒;拿3个木棒兑换1根冰棍ÿ…...
C++中,vector、deque、list、set、multiset、unordered_set和unordered_multiset容器类的总结
最近用set比较多,复习一下基础。 在C中,vector、deque、list、set、multiset、unordered_set和unordered_multiset都是容器类,但它们有不同的特点和用途。下面是对它们的区别和示例说明: 1. vector 特点: 动态数组,…...
Python处理Redis
操作Redis redis也是基于tcp通信的,所以我们可以直接通过socket来做 Redis通信过程 简单使用 redis-cli.exe -h192.168.56.188 auth 123456 set name myredis get name lindex students 0 # 查看students列的第一条数据核心协议体 *2 # 表示下述的指令由2个字符…...
nodejs多版本随心切换-windows
nodejs多版本控制 1. 安装 nvm github下载地址 不需要卸载已安装的nodejs,安装时会让你选择nodejs的位置,可修改为你已经安装的路径,会自动搜索已安装版本,并进行弹窗询问,选择托管即可 2. 修改配置文件 在 nvm 安装…...
json文件格式
json文件格式 格式介绍1格式介绍2格式3 格式介绍1 格式介绍2 格式3 参考地址...
日撸Java三百行(day15:栈的应用之括号匹配)
目录 一、栈的括号匹配 二、代码实现 1.方法创建 2.数据测试 3.完整的程序代码 总结 一、栈的括号匹配 要完成今天的任务,需要先来了解一下什么是栈的括号匹配。首先,顾名思义,括号匹配就是指将一对括号匹配起来,我们给定一…...
Oracle-OracleConnector
提示:OracleConnector 类是 Debezium 中用于与 Oracle 数据库交互的一个连接器组件 文章目录 前言一、核心功能二、代码分析总结 前言 提示:OracleConnector 类负责配置、启动、管理和验证与 Oracle 数据库的连接,并为后续的数据捕获任务准备…...
『 Linux 』线程池与 POSIX 线程的封装编码实现
文章目录 线程池概念线程池的编码实现线程池的测试参考代码 线程的封装使用测试封装后的线程参考代码 线程池概念 池化技术是一种资源管理方法,通过预先创建和管理一组资源以便在需要使用时快速分配这些资源; 线程池是池化技术的一种典型应用; 资源分配 在线程池中预先创建一定…...
【C++】————哈希表
作者主页: 作者主页 本篇博客专栏:C 创作时间 :2024年8月6日 前言: 在计算机科学的广袤世界中,数据结构犹如基石,支撑着各种高效算法的构建与运行。而哈希表(Hash Table)&#…...
前端学习AI历程
AI基本概念tensorflow入门conda搭建环境,pycham使用训练自己的第一个模型AI目前前端方便入手的几个方向 素材图片库图像识别,在线学习低代码应用智能客服 获取数据集 roboflowkagglecocomakesense(用于打标) 认识yolo两个简单小应…...
常见中间件漏洞复现之【Tomcat】!
Tomcat介绍 tomcat是⼀个开源⽽且免费的jsp服务器,默认端⼝ : 8080,属于轻量级应⽤服务器。它可以实现 JavaWeb程序的装载,是配置JSP(Java Server Page)和JAVA系统必备的⼀款环境。 在历史上也披露出来了很多的漏洞 …...
C++并发编程(一):线程基础
简介 本文学习的是 b 站 up 恋恋风辰的并发编程教学视频做的一些笔记补充。 教程视频链接如下:线程基础:视频教程 文档链接如下:线程基础:笔记文档 理论上直接看 up 提供的笔记文档即可,我这里主要是记录一些我自己…...
enq: HW - contention事件来啦
业务系统反应数据库慢,根据时间查看awr报告。 先看一眼事件名称 HW enqueue 用于序列化超出段高水位线的空间分配。如果同时向对象添加大量数据,则多个进程可能同时尝试在高水位线上方分配空间,从而导致争用。 既然是控制资源并发的enq&…...
MyBatis补充
控制类和dao层接口以及mapper中的xml是怎样的关联的? 在Mybatis中,控制类和dao层接口是通过mapper的xml文件进行连接的。 控制类调用dao层接口中的方法,通过接口实现进行访问数据库操作。dao层接口定义数据库操作的方法,提供给控制…...
系统架构师(每日一练16)
每日一练 答案与解析 1.软件测试一般分为两个大类:动态测试和静态测试。前者通过运行程序发现错误,包括()等方法;后者采用人工和计算机辅助静态分析的手段对程序进行检测,包括()等方法。答案与解析 问题1 A.边界值分析、逻辑覆盖、基本路径 B.桌面检查、…...
实践致知第17享:电脑忽然黑屏的常见原因及处理方法
一、背景需求 小姑电话说:最近,电脑忽然就黑屏了(如下图所示),但是等待几十秒甚至一分钟,电脑就能自然恢复了,这种状况一天能出现三四次,怎么办? 二、分析诊断 电脑黑屏…...
微信小程序--实现地图定位---获取经纬度
(1) (2) (3) html: <view class"titleTwo" style"border: none;"><view class"fontSize30 invoiceTile">企业地址</view><view class"invoiceRight" bind:tap"tapChooseAddress" data-maptype"…...
【Python系列】使用 `isinstance()` 替代 `type()` 函数
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
【多模态大模型】 BLIP-2 in ICML 2023
一、引言 论文: BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models 作者: Salesforce Research 代码: BLIP-2 特点: 该方法分别使用冻结的图像编码器(ViT-L/…...
响应式公司网站设计制作:适配手机、平板的关键技巧
大家肯定有过这样的体验,有些网站在电脑端使用起来还不错,但是并没有做相应的移动端口的适配,导致在用手机浏览的时候,非常不便,大大降低了网页的使用率。随着移动端设备的不断普及和发展,导致网页设计也从…...
C# 面试高频题:装箱和拆箱是如何影响性能的?非
OCP原则 ocp指开闭原则,对扩展开放,对修改关闭。是七大原则中最基本的一个原则。 依赖倒置原则(DIP) 什么是依赖倒置原则 核心是面向接口编程、面向抽象编程, 不是面向具体编程。 依赖倒置原则的目的 降低耦合度&#…...
MiniCPM-V 4.5本地部署指南:从环境配置到图片视频推理全流程(附常见错误排查)
MiniCPM-V 4.5本地部署实战:从零搭建到多模态推理全攻略 在人工智能技术日新月异的今天,能够处理图片、视频等多模态数据的模型正变得越来越重要。MiniCPM-V 4.5作为一款轻量级但功能强大的多模态大语言模型,凭借其仅80亿参数却能达到超越GPT…...
计算机毕业设计:Python智慧天气数据采集与可视化系统 Django框架 线性回归 数据分析 大数据 机器学习 大模型 气象数据(建议收藏)✅
博主介绍:✌全网粉丝50W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战8年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...
小程序在企业数字化转型中的作用是什么?
小程序在企业数字化转型中的作用是什么?一、核心结论小程序在企业数字化转型中的核心作用,不是简单的“线上工具”,而是连接用户、业务与数据的轻量化入口。它通过降低使用门槛与缩短业务路径,使企业能够更高效地完成获客、转化与…...
【国产化实战】银河麒麟服务器V10多架构安装避坑与网络源配置全攻略
1. 银河麒麟服务器V10安装前的准备工作 第一次接触银河麒麟服务器V10时,我被它强大的国产化特性和多架构支持所吸引。作为一款国产操作系统,它在飞腾、鲲鹏、龙芯等国产CPU上的表现尤为出色。但在实际安装过程中,我发现不同架构的安装流程存在…...
算法小记(持续学习)
算法小记 过程长,逐步往下写 文章主要是写个人算法所想作为做完之后的思考总结,非最好答案。关注官方答案可以去力扣查看 560. 和为 K 的子数组 - 力扣(LeetCode) 更详细的解答可以看推荐题解560. 和为 K 的子数组 - 力扣&#…...
从稀疏重构到精准定位:l1-SVD算法的核心思想与工程实现
1. 稀疏信号重构与DOA估计的困境 想象你站在一个嘈杂的会议室里,试图通过几个麦克风确定说话人的方位。这就是DOA(波达方向)估计的典型场景。传统方法如MUSIC算法在理想环境下表现优异,但当信源间距过小或快拍数不足时,…...
springboot城市应急救援辅助系统小程序
目录 同行可拿货,招校园代理 ,本人源头供货商城市应急救援辅助系统小程序功能分析核心功能模块辅助功能模块技术实现要点安全与可靠性设计扩展性考虑 项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 同行可拿货,招校园代理 ,本…...
终极Windows 11优化指南:使用Win11Debloat实现系统轻量化
终极Windows 11优化指南:使用Win11Debloat实现系统轻量化 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and…...
