电脑之间通信的大致过程

news2024/11/25 12:36:41

本文来自对网络工程师之路内容的个人总结,仅供个人复习参考。

1.电脑之间通信就需要有线路,但是如果多台电脑互相之间需要通信,那么就需要有很多根线,每台电脑需要有多网卡,为了解决这个问题,(集线器)Hub就出现了,Hub其实就是一条连接多个电脑的公共道路(内部总线)。

2.如果任意两台电脑间要传输数据,怎么使用这条公共道路?这就需要所有电脑们协商出一个公平的办法。这个办法就是CSMA/CD(规定使用公共道路的规则)CSMA规定,如果有电脑要发数据,那么在发数据前,先检查公共道路上有没有其他电脑在传数据。如果有,就等待,直到发现公共道路空闲了,就立即把数据发出,但是如果两台电脑同时发现信道空闲,那么两台电脑同时发出数据就会发生碰撞,那么为了检测这种冲突就有了CD,CD规定,如果出现这种情况,所有电脑都立即停止发送数据,每台电脑都随机等待一个时间(注意是随机,也就是说大家等待的时间不同,避免再次冲突)后,再回到CSMA,先去检查公共道路是否空闲。

3.如果集线器上连接的设备很多,冲突就越难避免,那么以太网是怎么发展成主流的呢?那是因为交换机出现了。Hub连接电脑的所有端口属于同一个冲突域,而交换机的每个端口都是一个单独的冲突域。换句话说,交换机任意两个端口之间传输数据,不影响其他端口同时传输数据。这就是交换式以太网,公共道路上同一时间可以有多台电脑同时在传数据

4.一台交换机可以连接多台电脑,那么为了区分这些电脑就需要有一个标识,这个标识就是MAC地址,MAC地址是唯一的。MAC地址长度为48位,即6个字节,形如00:12:34:56:78:9A,有了MAC地址,那么交换机记录MAC地址的表就叫做MAC地址表

地址分别是电脑A、B、C、D的地址,每个地址对应着连接哪个端口,还有个老化时间,这是为了更好地利用内存资源,把超过老化时间的表项删除,节省内存。每个MAC地址表项的初始老化时间是300秒。比如要给地址A发数据,查了一下A在MAC地址表中端口号为1,就从1号端口发出,那么如果不在呢?不在交换机会把这个数据复制成很多份,从除了接收数据的端口1外的其他所有端口发出去!我们把MAC地址表中找不到收件人MAC地址的数据,叫“未知单播帧”,交换机把“未知单播帧”从其他所有端口发出去的行为,叫“泛洪”。只有一种情况MAC地址不会转发,就是你要转发的地址的端口号和你这个信息进入交换机的端口号一样,这个可以自行思考

以下是MAC帧的封装格式

要发的数据是Data。电脑A在发送之前,需要填上收件人地址DMAC、发件人地址SMAC(就是自己的MAC地址),Type是告诉收件人,收到后把数据交给谁处理,CRC是为了避免数据在路上出错。

5.发件人在发送数据之前需要知道对方电脑的MAC地址,如果不知道MAC地址只知道IP地址怎么办?这个就是ARP(地址解析协议)解决的问题了。我们假设MAC地址是电脑的身份证号,那么IP地址就是电脑的名字。我们先来了解一下IP地址:

IP地址,就是你的电脑在网络中的名字,别人用它来找你;

子网掩码,可以通过它和IP地址,知道你的电脑属于哪个子网(如果把网络看成一幢大楼,子网就是每个楼层或者每个房间,可大可小。去楼层或房间找你,比在整个大楼找要容易得多);

网关,你所在子网通往其他子网的出入口。

比如,你的电脑IP地址是192.168.1.20,子网掩码是255.255.255.0,通过“按位与”,可以计算出你的子网号。

当两台电脑的子网号相同时,我们可以认为它俩在同一个网络,可以理解为同一个房间,直接互访就行,不用出门;如果子网号不相同,那它们要互访就需要通过网关这个出入口了。网关,就好像房间的门,一般都是路由。

所以接下来假设A要给B发信息,然后A知道B的IP地址不知道MAC地址,所以交换机现在不知道从哪个端口发出,那么我们就要先通过A的子网掩码来计算A和B是不是在一个网路,是的话就直接广播发出ARP协议的request报文询问B的MAC地址,其他电脑收到后发现是广播报文,拆开后发现封装的是ARP协议,然后发现询问的IP地址不是自己的就丢弃,如果是就单播回传ARP的reply报文,然后A收到后就会把这个信息写进自己的ARP表,下回再询问的时候就不用再发送了

 如果A和B的子网不同呢?ARP会去大声问网关的MAC地址,得到回复后把数据封装成以太网格式发给网关(收件人destination是网关的MAC地址)。后面的事情电脑就不管了,由网关去完成。

6.网关收到A发出的以太网帧后发现MAC地址是自己的,那么就直接把数据占为己有了怎么办?所以就需要还要有IP地址来指出真正的收件人。IP协议设计的初衷就是为了提高网络的可扩展性,比如实现不同“房间”内的电脑之间的通信,实现网络间的互连。

那么为什么既要有IP地址又要有MAC地址呢?

MAC地址不包含位置信息,只知道MAC地址无法通过它找到别人,而IP地址不管范围多大都能找到你,但是IP地址的地址资源有限并且电脑的IP地址是可以变化的,如果电脑的IP地址今天和明天不同找人就会很麻烦,但是MAC地址是固定不变的,所以就用ARP协议把多变的IP地址和唯一不变的MAC地址建立对应关系即可

IP协议用于实现不同网络之间的互通,所有具备路由功能的网络设备都能实现IP寻址,比如路由器。网关也是具备路由功能的设备,可以是路由器,也可以是其他设备。

IP协议把上层的应用层的TCP/UDP报文封装成IP数据报,格式如下

 7.电脑之间通信的格式

详解电脑间通信

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/89246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

360度内环镜、内螺纹检测镜头、瓶盖检测镜头以及超中心镜头

用于孔洞状物体的360内部成像 提示: 内孔检测光学镜头 从外部检查腔内;无需在孔洞内放置光学探头;带孔对象的360度对焦;腔体内壁和底部都可以实现高分辨率成像;景深可使同一个镜头拍摄具有不同形状和尺寸的物体&…

Bidirectional Recurrent Neural Networks

摘要 a regular recurrent neural network (RNN) →\rightarrow→ a bidirectional recurrent neural network (BRNN)a preset future frame: 预设的未来架构。. Structure and training procedure: 架构和训练程序。TIMIT datab…

Java多线程之:详解ThreadPoolExecutor执行源码分析

文章目录线程池的实现原理详解ThreadPoolExecutor核心数据结构核心配置参数解释线程池的优雅关闭线程池的生命周期正确关闭线程池的步骤shutdown()与shutdownNow()的区别任务的提交过程分析任务的执行过程分析shutdown()与任务执行过程综合分析shutdownNow() 与任务执行过程综合…

【大一大二必看】计算机专业的同学应该参加哪些比赛?

文章目录1. 前言2. ICPC3. CCPC4. 蓝桥杯5. 天梯赛6. CCF CSP7. PAT8. 全国高校计算机能力挑战赛9. 其他🍑 天池大赛🍑 华为软件精英挑战赛🍑 LeetCode 周赛 / 双周赛🍑 CSDN 编程竞赛总结1. 前言 2022 年已经过半,对…

java版商城 b2b2c o2o 多商家入驻商城 直播带货商城 电子商务

一个好的SpringCloudSpringBoot b2b2c 电子商务平台涉及哪些技术、运营方案?以下是我结合公司的产品做的总结,希望可以帮助到大家! 搜索体验小程序:海哇 1. 涉及平台 平台管理、商家端(PC端、手机端)、买…

巡检过程中有哪些注意事项?智能巡检了解一下

智能巡检系统是现场过程管理的生产力革命,由人工记录蝶化为掌上电脑运作,适用于设备运行值班记录、仓库/资产管理、设备巡检保养、安全巡更、机房值守、基站维护等一切重复性的工作管理。 安全巡检的目的在于识别信息系统存在的安全脆弱性、分析信息系统…

2022-12-14 移植Qt Creator helloworld 应用到ARM平台运行过程,我这里用buildroot里面的编译器。

一、在ubuntu上运行可执行文件。 1、ubuntu里面安装qt creator 建立helloworld 工程,点击run就可以运行,运行如下。 2、在ubuntu上运行方法二:同级目录下有build-helloworld-Desktop_Qt_5_12_12_GCC_64bit-Debug,用file hellowor…

VS使用技巧汇总

总目录 文章目录总目录前言一、快捷技巧1.代码片段快捷方式2.选择性粘贴3.快速停靠窗口4.多行同步快速编辑5.引用命名空间6.整行上下移动7.规整代码格式二、其他技巧1.其他总结前言 本文会持续收录一些VS的使用技巧,掌握VS一些常用的使用技巧对于提高我们编程效率很…

MA-Net:用于肝脏和肿瘤分割的多尺度注意力网络

摘要 近年来为了提高医学图像分割的性能,提出了大量基于多尺度特征融合的UNet变体。与以往通过多尺度特征融合提取医学图像上下文信息的方法不同,本文提出了一种新的多尺度注意力网格(MA-Net)在这个网络方法中引入了自注意力机制…

Netty使用篇:自定义编解码器

我们今天还是继续Netty,Netty的编码器和解码器就是Netty对Handler这个组件的一种使用场景而已,SpringWebFlex就是基于这个Netty来做的,在往上引深一层GateWay服务网关就是SpringWebFlex的实现,所以SpringCloud当中明确说明了&…

DPDK源码分析之DPDK基础概览

本文主要介绍一下DPDK这项技术的基础概览,包括什么是DPDK,为什么有它存在的必要,它的框架是怎样的,使用了哪些技术实现,DPDK的应用场景有哪些,最后在centos7服务器上实装一个dpdk环境做一个简单的数据包收发…

C++ VTK鼠标网格表面绘制曲线

程序示例精选 C VTK鼠标表面绘制曲线 如需安装运行环境或远程调试,见文章底部微信名片,由专业技术人员远程协助! 前言 C VTK鼠标表面绘制曲线,功能完善,代码整洁,规则,易读。 文章目录 一、所需…

基于Android的招聘求职网站的设计与实现

毕业设计 基于Android的招聘求职网站的设计与实现 1.课题意义及目标 在二十一世纪求职方式跟以前是不同的,与在各个用人单位和招聘会上寻找理想的工作,基于安卓的招聘系统能够提供最好的最丰富及时的招聘信息。。 通过对该系统的研究设计…

【人工智能与机器学习】——决策树与集成学习(学习笔记)

📖 前言:决策树(Decision Tree)是一种通过对历史数据进行测算,实现对新数据进行分类和预测的算法。机器学习中,决策树是一个预测模型,代表的是对象属性与对象值之间的一种映射关系。该算法由于逻…

django计算机毕业设计基于安卓Android的移动电商平台系统APP-商品购物商城app

项目介绍 网络的广泛应用给生活带来了十分的便利。所以把移动电商平台与现在网络相结合,利用python技术建设移动电商平台APP,实现移动电商平台的信息化。则对于进一步提高移动电商平台发展,丰富移动电商平台经验能起到不少的促进作用。 移动电商平台APP能够通过互联网得到广泛的…

如何向gitlab发布的附件里上传文件

gitlab 发布后在附件里会有打包好的源码,类似下图 笔者想把构建好的文件也打包放在这个附件里,经过研究可行,步骤分享如下 注:笔者用的gitlab版本为12.10.3 创建Access Token 登录gitlab,点击右上角图像,点击Settin…

Linux基本命令(3)

Linux基本命令(3) 📟作者主页:慢热的陕西人 🌴专栏链接:Linux 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 本博客主要讲解了最后一部分常用的Linux指令和一些热…

1年时间,从小公司到美团测试开发,我做对了这些事情....

📌 博客主页: 程序员二黑 📌 专注于软件测试领域相关技术实践和思考,持续分享自动化软件测试开发干货知识! 📌 公号同名,欢迎加入我的测试交流群,我们一起交流学习! 我的…

优化cv2.findContours()函数提取的目标边界点,使语义分割进行远监督辅助标注

优化cv2.findContours()函数提取的目标边界点 假设我们想要提取的目标边界长这样: 我们先使用以下代码查看效果 import cv2 import numpy as np import osif __name__ __main__:# 图像可以选择自己的image_filepath ./landslide/image/20221129112713.png# 读取…

Java并发和多线程编程学习(二) Java内存模型

并发编程中需要处理的两个重要问题是线程之间如何通信以及线程之间如何同步,Java的并发采用的是共享内存模型,且线程之间的通信总是隐式执行,所以需要我们深入学习从而避免复杂的内存可见性问题 内存模型的抽象结构 在Java中,所…