浅析局域网与广域网中数据传输

现在的互联网中使用的TCP/IP协议是基于OSI(开放系统互联)七层参考模型的,如下表所示。

在进行数据传输时,应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据头部(header),称为封装(Encapsulation),如下图所示。

以太网头部主要包含:目标地址(接收端MAC)、源地址(发送端MAC)

IP头部主要包含:目标地址(接收端IP)、源地址(发送端IP

基于此,即可知网络中数据传输需要获取发送端与接收端的IP地址与MAC地址,才能完成数据的封装,从而实现数据的传输。假设有AB两台电脑,A需向B发送数据,则A主机先分别将自身IP、目标设备BIP地址与自身的子网掩码进行“与”操作(若结果一致,则属于同一网段),从而来判断目标设备B与自身是否在同一网段。若目标设备在同一网段中,即两电脑分布如下图所示。

电脑AB挂载在同一路由器下,此时AB发送数据,若A未能获取到目标设备BMAC地址,而仅知道其IP地址,则A以第二层广播的形式发送ARP请求报文(其中包含ABIP地址),同一网段内的其他设备都可以受到这一ARP报文,若发现报文中目标IP与自身IP相同,则向源设备A发回ARP响应报文,从而获取目标设备的MAC地址,即可完成数据的封装,从而实现数据的直接传输。

若存在两电脑ACA需向C传送数据,其分布如下图所示。

明显,PC-APC-C处于不同网段,其相当于处于广域网中的两台主机,PC-A要发送数据包到PC-C,若PC-A不知PC-CIP地址,则PC-A需先发送一个dns请求,路由器Adns解析器会给PC-A回应PC-CIP地址,故而数据包的所需要的源IP地址(PC-AIP地址)与目标IP地址(PC-CIP地址)就都获取到了。

下一步,PC-A需了解如何到达PC-C,还需了解要到达PC-C需经过的下一跳信息。PC-A发送一个ARP的地址解析请求,路由器APC-AARP地址请求作出回应:要去往PC-C需先发包到自己这里,此时路由器A将自身的MAC地址发送给PC-A,这样PC-A数据包的源MAC地址(PC-AMAC地址)与目标MAC地址(路由器AMAC地址)就都有了,即可以完成数据的封装,从而发送数据包出去了。

路由器A收到此数据包后,首先查看此路由表中是否存在去往PC-C的路由,若不存在,则会丢弃包;若存在,则说明这是一个可路由的数据包,然后路由器对其进行一个所谓的线内重写过程:此处先忽略路由器A与路由器B之间复杂的网络连接,则此时数据包中的源IP需变为路由器的IP,即公网IP,目标IP需变为路由器B的公网IP(运用NAT技术进行地址的映射,路由器对此连接进行跟踪,以便有数据返回时,能正确的将数据返回到相应主机);源MAC地址变为路由器AMAC地址,目标MAC地址编为路由器BMAC地址。完成数据包的重写后,即可将数据包发送到路由器B,路由器B再依据建立的“连接跟踪”来判断此数据包是发送给PC-C的,然后再对数据包进行重写,更改目标IP地址与目标MAC地址,将数据包发送到PC-C中(此处的数据传输为两路由器下的两主机之间的数据传输,由于两主机都在局域网内,即其访问网络时都是通过其路由器对应的公网IP来进行数据传输的,故此种情况下的数据传输一般要依赖于服务器,即PC-APC-C先分别与服务器建立连接,从而使得路由器A与路由器B中均存在相应的“连接跟踪”,即当路由器收到相应信息时,能依据“连接跟踪”来判断该将数据发送到那台主机)。

就目前而言,对于那些没有中间服务器的纯 P2P 应用来说,若双方都位于 NAT 设备之后,双方一般是无法建立连接的,因为若没有中间服务器的中转,无法是两端的 NAT 设备上建立相应的映射条目,即对方无法向你发起一个连接。针对这一问题,现在已经有一些P2P-NAT穿越技术来解决这一问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值