微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 深入浅出计算机间通信原理

深入浅出计算机间通信原理

时间:12-01 来源:互联网 点击:
一 单工/半双工/全双工通信的概念

1.单工通信:

单工通信定义:信息在两点之间只能单方向发送的工作方式.它的意思是指:假设A 和B 通信,只能由一方向另一方发送数据而不能接收来自另一方发送来的数据.就像小朋友们玩的听筒,在两个杯子之间系上一条线再拉紧,这就可以对着杯子说话而另一边能够听到声音.



图一 一个小孩对着罐子说话而另一个小孩在当听众


2.半双工通信:

半双工通信定义:信息在两点之间能够在两个方向上进行发送,但不能同时发送的工作方式.这就表示发送/接收数据 是有先后顺序的,比如:A 向B 发送数据请求后A 只能接收来自B 发送来的回传数据,但A 接收完来自B 发送来的会传数据后又可以立即向B 发送数据请求,而且B 也可以向A 发送数据.



图二 "对讲机"式问答


3.全双工通信:

全双工通信定义:通信允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合.全双工通信和半双工通信的本质区别是半双工通信双方只共用一条线路实现双向通信,但全双工通信却利用两条线路,一条作发送数据用,另一条作接收数据用.



图三 有线固定电话的模型



二 芯片间通信

1.串口通信:

主机和主机之间的通信,实质上就是两颗芯片之间来回传输数据..



图四 串行接口实物图

串口通信是通过全双工通信进行的按位传输的通信.它的优点是可以长距离传输数据(通过太长的数据链路时信号是会减小的,但一般我们利用信号放大来实现更远的数据传输),占用线路少(发送线路,接收线路,地线[主要是为了抗干扰]).不过串口通信比并口通信稍微慢些.一般我们使用RS-232 号传输标准来规范数据传输.



图五 串口针脚顺序图


对于DB 9脚的串口接口定义:2号线路 接收数据(RxD),3号线路发送数据(TxD),5号线路信号地(GND)[其用意就是屏蔽掉外界的电磁干扰]

*RS-232 协议设计:



图六89S51 系列单片机与PC 间的通信


对于某些没有输出RS-232信号的芯片,设计者常用MAX 232 (芯片通信输出的TTL 电平转换到RS-232信号的器件) 来把PC 和该芯片相联.在图六中,89S51 首先通过TxD 发送数据到MAX 232 T1IN,然后MAX 232 在它的内部把TTL 电平信号转换为RS-232信号,最后MAX 232 通过T1OUT 发送到PC 的COM 接口,此时PC 就接收到了我们发送来的数据(反过来就是接收数据:COM TxD ->R1IN ->R1OUT).关于单片机方面的知识可以上www.51hei.com查阅.写得比较容易理解.

三 通信协议

1.以太网 传输协议:

以太网定义:当前广泛使用,采用共享总线型传输媒体方式的局域网.过去的年代,多台计算机要想利用一个Moden 上网的话,就需要添加一块集线器(HUB ) 来把这些计算机并联起来.[PS:集线器和交换机(SWITCH) 相比,集线器会把总网络数据传输速率平均分配到每台计算机,但交换机却不会,这和硬件设计有关]



图七 集线器实物图(这年头找张没有水印的图片还真少啊..)

下面就是多台计算机共享网络线路的拓扑图.



图八 总线型数据传输链路


线路倒是共享了,作为在线路中的某台计算机是怎么知道线路中的数据到底是发送到自己还是发送到其它计算机的呢?为此人们制定了以太网数据传输协议,下图是传输数据结构.



图九 以太网数据传输结构


目的地址 指的是该数据是由哪台计算机接收.源地址 就是这个数据是从哪儿发送的.打个比方:比如A 主机需要发送数据到广域网,那这个目的地址就填写集线器的网络适配器的地址(这个地址就做MAC地址,它是网络适配器所拥有的唯一地址). 当集线器接收到数据并转发B主机时,总线上所有主机都可以接收都这个数据包,假设A 主机接收到这个数据包,它会把数据包中的目的地址和自己的网络适配器作对比,相同的话则表明这个数据是传递到我的,若不相同则丢弃数据包.这也就解释了同集线器总线下监听其它主机发送/接收网络信息的原理.

以太网数据包有许多不同的类型,上面是在集线器下常用的三个类型:IP 数据传输[0x0800],ARP 请求/应答[0x0806],RARP 请求/应答[0x8035].

ARP 请求/应答:它的用处是利用某个网络适配器的地址在总线中发起询问,然后得到要查询的网络适配器的IP 地址.由于在计算机需要依靠集线器或交换机或路由器来传递消息之前,它一定要利用ARP 请求告诉集线器等转递消息硬件本机的网络适配器的MAC 地址[PS:也可以利用RIP (路由信息协议)协议来向转递消息硬件获取IP地址(发送网络适配器的MAC地址获取IP 地址)].在转递消息硬件接收到这个请求后会在ARP 缓存表(对应着计算机的IP地址和网络适配器的MAC 地址)中查找,若无该MAC 地址,则在ARP 缓存表更新该MAC 地址,然后发送ARP 应答数据包,那么当转递消息硬件接收到消息后就可以根据数据中的IP 地址在ARP 缓存表寻找MAC 地址然后就在总线上发送.假如接收到一个数据包的的IP 地址在ARP 缓存表中找不到的话,那转递消息硬件将会丢弃该数据包并向源IP 地址发送ICMP 数据不可到达的数据包.注意,转递消息硬件一般是三十分钟刷新一次ARP 缓存表的.

RARP 请求/应答:假如我们只知道同集线器下的某台计算机的IP 地址并想发送数据给它但又没有该计算机的网络适配器的MAC 地址那怎么办呢?那就需要向总线广播RARP (反向地址转换协议)请求,此时以太网数据结构中的目的地址置为FFFFFFFFFFFF (即:-1),RARP 数据包结构(见图十三)中的目的IP 地址则置为需要查询的IP 地址.接下来,当总线下的某台计算机的网络适配器接收到后就会把该IP 和自己的对比,假若查询的是自己的IP 地址,那就返回包含这个网络适配器的IP 地址和MAC 地址的RARP 应答,最后查询主机接收到该数据包后就更新本机的ARP 缓存表,然后就可以进行IP 层的数据发送了.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top