我们知道,局域网采用广播信道进行传输,广播信道可以实现一对多的通信。但现实中并不总是要进行一对多的通信的,那么如何在两台主机之间进行一对一的通信呢?这个问题不是那么简单的,我们需要考虑多个方面:主机是如何将产生的信息传送到信道上的

多个主机共享信道,那么如何控制不发生信息之间的碰撞

如何发信息送给特定主机

网络适配器(网卡)的作用

网络适配器也即我们通常所说的网卡。主机与外界局域网通信时通过网卡来适配的。因为主机与网卡间是通过并行传输,而网卡与局域网之家则是通过串行传输的,所以网卡需要在两者之间进行适配。

在网卡的ROM(只读存储器)中,写入计算机的硬件地址即MAC地址。这个MAC地址是非常重要的,它是实现一对一通信的关键。后面我们会讲到。

CSMA/CD协议

因为局域网采用的是共享信道,既然是共享信道,我们就要控制主机的先发和后发的问题。因为,如果多台主机同时发送信息,那么就会产生混乱。这里有个著名的局域网协议CSMA/CD(载波监听多路访问/碰撞检测),就是解决该问题的。

该协议是非常容易理解的,我们用一个例子来说明:在一个会场,有一些人参加会议。会议上没有主持人,所有人都可以自由发言。但是,只有等其他人发言完毕,会场是安静的,才可以发言。如果有多个人在同时发言,那么同时发言的人都要结束发言,然后等待一个随机时间后,若会场是安静的就可再次发言了。这里为什么是一个随机时间,很好理解,如果是固定时间的话,同时发言的人过了一段时间后还是会同时发言的。

通过MAC地址实现一对一通信

解决了上面的问题后,我们再看主机间是如何进行一对一通信的。上文已经说过,网卡上有一个MAC地址,下面就是一个MAC地址

A0-A4-C2-4B-9F-56

它是由48位(6字节)组成的,每个网卡的MAC地址是全球唯一的,既然它是唯一的,那么就可以通过它来进行主机间一对一的通信。

局域网中通信的基本单位是数据帧。当局域网中的主机A想要向同一局域网的另一台主机B通信,那么在A发送的数据帧首部就要写明目的地址(B的MAC地址),然后这个数据帧就会广播到局域网中的所有主机,其他主机的网卡接受这个数据帧时,查看其目的地址是否和自己的MAC地址一致,如果不一致就丢弃。这样,具有广播特性的局域网就实现了一对一的通信了。

php如何实现局域网,局域网中是如何实现一对一通信相关推荐

  1. vue2.0s中eventBus实现兄弟组件通信

    在vue1.0中,组件之间的通信主要通过vm.$dispatch沿着父链向上传播和用vm.$broadcast向下广播来实现.然而在vue2.0中,已经废除了这种用法. vuex加入后,对组件之间的通 ...

  2. java 线程 condition_Java编程中实现Condition控制线程通信

    java中控制线程通信的方法 1.传统的方式:利用synchronized关键字来保证同步,结合wait(),notify(),notifyall()控制线程通信.不灵活. 2.利用condition ...

  3. STM32与中显串口屏的通信

    STM32与中显串口屏的通信 本文将简要介绍STM32单片机和武汉中显串口屏之间的通信实现过程.不过使用大彩.迪文这些公司的串口屏的同学也能参考一下,它们的通信协议好像一样. 注意:我代码用的ardu ...

  4. html多页面之间如何通信,html5中sharedWorker实现多页面通信代码示例

    本篇文章小编给大家分享一下html5中sharedWorker实现多页面通信代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 在没有登录浏览了一 ...

  5. 中移物联网onenet入门学习笔记2:中移物联的通信格式

    中移物联网onenet入门学习笔记2:中移物联的通信格式 中移物联网硬件接入协议:LWM2M协议,EDP协议,MQTT协议,HTTP协议,TCP透传,MODBUS协议,JT/T808协议,RCMP协议 ...

  6. 在两个TIA博途项目中组态PROFIBUS和PROFINET通信的具体方法

    在两个TIA博途项目中组态PROFIBUS和PROFINET通信的具体方法 为了在两个项目间实现S7-1200/S7-1500的通信,要为其中一个CPU创建GSDML文件,然后将其安装在TIA Por ...

  7. 考虑下行链路的蜂窝网络中存在多个D2D通信对和多个蜂窝用户,它们共享相同的频率资源并且蜂窝用户为主用户

    1.仿真预览 2.理论分析 整个仿真一定要有完整的链路结构,波束赋形按照参考要求设计外,其他模块都要有,但可以适当根据理论进行简化,重点是波束赋形部分的matlab程序编写.主要看这部分内容. 具体实 ...

  8. sql中的参照完整性(一对一,一对多,多对多)

    一.参照完整性 参照完整性指的就是多表之间的设计,主要使用外键约束. 多表设计: 一对多.多对多.一对一设计 1.一对多 关联主要语句: constraint cus_ord_fk foreign k ...

  9. mysql中建立一对多映射_Mybatis中的高级映射一对一、一对多、多对多

    学习hibernate的时候,小编已经接触多各种映射,mybatis中映射有到底是如何运转的,今天这篇博文,小编主要来简单的介绍一下mybatis中的高级映射,包括一对一.一对多.多对多,希望多有需要 ...

最新文章

  1. C++标准库中sstream和strstream的区别
  2. 在线作图|2分钟绘制一张环状热图
  3. SpringBoot使用教程【1】Restful API设计 返回json,xml格式...
  4. 远程桌面上的文件复制到本地
  5. Redis Sentinel 配置文件
  6. 广西2021高考成绩位次查询,2020年广西高考一分一段表及高考位次成绩排名查询(理科+文科)...
  7. 肖仰华 | 基于知识图谱的问答系统
  8. batchnomal_反向传播之七:BatchNormal层的反向传播
  9. Android学习之为按钮添加事件监听器的两种方法
  10. python twisted应用_如何通过Python(而不是通过Twisted)运行Twisted应用程序?
  11. Session共享的解决方案。
  12. 数学建模系列-优化模型(三)---排队论模型
  13. 关于stm32单片机的通讯方式
  14. 一行代码学会Java--2.用IDEA神器编写“你好,Java”
  15. yaml-cpp保存标定文件-Node/Emitter
  16. T00LS MSF笔记
  17. 14Java第十四次课 五子棋的实现1
  18. Tekton系列之实践篇-我的第一条Pipeline
  19. iPhone 12已安装的App显示正在安装处理方法
  20. python seo cms_巧用帝国CMS系统变量提升网站用户体验 完善SEO优化

热门文章

  1. WebGIS开发软件安装问题
  2. 蓝牙秤方案开发需要注意什么?
  3. Limesdr-USB 基于 Ubuntu18.04 环境建立
  4. Programming Exercise 7: K-means Clustering and Principal Component Analysis【Maching Learning】
  5. 大容量电池充放电管理模块MOSFET选型及应用
  6. zigbee RSSI 定位
  7. 大专生自学java_大专生自学java如何在3年内学到可以找工作的程度?
  8. vue 文件上传组件封装
  9. 别再翻了,面试二叉树看这 11 个就够了~
  10. 决策树实战:california房价预测