新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 深入浅出计算机间通信原理

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

作者: 时间:2016-12-01 来源:网络 收藏


三 通信协议

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 层的数据发送了.

图十 ARP /RARP 数据包结构

2.IP 协议:

由于以太网协议只适用于局域网,而且以太网数据不能跨转递消息硬件发送,所以人们制定了IP (Internet Protocol ,因特网协议)协议.有了它,只要计算机连接到因特网那它都可以利用IP 地址(就像手机号码) 来实现通信(就像手机利用GSM 协议打电话).下面就是IP 协议数据包结构:


图十一 IP 协议头部数据包结构
源IP 地址和目的IP 地址的意思和以太网数据包结构中的源地址和目的地址作用相同.(这里略去了其它TCP 特性,因为它们与本文无关)

读者们先来看看下面的网络拓扑图:



图十二 网络门禁系统的网络拓扑图

在每一个门禁控制系统里面都有主控制器.而这些主控制器利用以太网通过交换机来实现把数据传递到因特网(Internet)上.由于以太网传输协议只能使用在同一以太网下,所以这些数据是不可能传递到这个区域的外面的.你可以这样想一下:广州分厂的其中一个门禁控制系统的主控制器向它所属的以太网发送一条信息给上海分厂的管理电脑及卡证中心主机显然是不行的.而IP 协议却不同,IP (Internet Protocol) 协议适合所有只要连接到因特网而且还拥有其独立的IP 地址的主机.所以,当广州分厂的其中一个门禁控制系统要和上海分厂的管理电脑及卡证中心主机实现数据交换那就必须要知道该主机的IP 地址.有了它,系统会根据实际情况把IP 协议头部数据包的各个数据填充好,然后通过以太网指定发送到交换机.交换机会再把我们的数据包转发到因特网上,接下来这个数据包会到达上海分厂的交换机, 最后上海分厂的交换机通过以太网发送数据包到管理电脑及卡证中心主机.
以IP 协议为基础,我们还可以利用TCP 和UDP 的传输数据方式来实现数据的传输.一般地,TCP 会提供"无差别","可靠的" 的数据传输服务.

3.TCP 协议:

TCP 协议作为现在广泛使用的协议,它有着许多网络通信协议所没有的特性(比如:重传).TCP 协议是基于IP 协议上开发的.下面先来讨论TCP 的数据包结构:




图十三 TCP协议头部数据结构

TCP 协议并没有指定发送方/接收方的地址,因为它是以IP 协议作为基础的协议,所以IP 协议的地址也可以说是TCP 协议的地址.在TCP 协议头部数据结构里,有一个新名词叫"端口",它的用意是为了标识不同的程序接收不同的数据包,比如:80 端口发送/接收HTTP 协议数据包,21 端口实现TELNET 协议 等.TCP 协议的传输机制是比较特殊的,它首先需要两台主机之间建立通信连接,然后才可以传输数据,最后数据传输完成的时候还必须要对这个连接进行关闭.先看看下面是TCP 的通信流程图:



图十三 TCP 协议通信连接与关闭连接时数据包传送情况(由于源图被画了很多红圈,没办法啊只能抢救成这样,原谅LC 吧)

对于上面的数据包交换我们可以分为两部分来分析:前三个数据包表示的意思是建立TCP 连接,后四个数据包的意思是关闭TCP 连接.

在TCP 建立连接的时候,主动建立的一方将会发送SYN_SENT 类型的TCP 数据包到目的主机,目的主机处理完成这个连接请求后立即返回SYN_ACK类型的TCP 数据包(编者注:无论目的主机是否愿意和它建立连接,要想实现这个结构那就必须忽略防火墙等的外界影响条件),最后在主动建立的一方接收到该SYN_ACK 数据包后返回ACK 数据包,它也就代表了TCP 连接真正建立成功.这就是TCP 三次握手过程.

关键词: 计算机间通信原

评论


技术专区

关闭