首页 > 编程知识 正文

互联网数据传输过程,计算机网络 数据传输

时间:2023-05-05 22:23:25 阅读:260515 作者:4854

1. 数据传输需要确定源头和目的地(寻址)

第一种情况:直接通过MAC寻址
每台主机都会有物理机的唯一MAC地址。想给其他主机发数据,源主机直接通过网线传送出数据,所有其他连着网线的主机都能收到数据(相当于广播),对比数据中的目的MAC地址标识,如果是发给自己的就接收,这样就实现了多个主机之间的数据交互。
图1:主机之间互连(不足:发送的数据被其他所有主机收到,其一造成不必要的数据传输,其二干扰了其他非目的主机的正常接收)

图2:主机之间通过交换机连接(优点:交互机保存一张维护主机MAC地址的表,数据请求到交换机后,通过查表直接定位目的主机;如果表查不到,广播所有主机,更新MAC地址表)

PS:MAC地址为一个6位十六进制的串,如FF-FF-FF FF-FF-FF

第二种情况:通过ARP表(IP=>MAC)寻址
随着主机越来越多,直接通过MAC寻址定位不再方便。通过更有规律可循的IP地址(表示为四个段255.255.255.255)区分主机将会是更好的选择。每个主机都分配一个独立IP作为标识,主机之间的通讯通过源IP和目标IP的互连。主机的IP是可变的,维护一张IP和MAC地址对应关系的ARP表,就可以通过访问目的IP从而直接找到目的主机。当主机的IP被更换时ARP表也会刷新缓存,通过这层关系,从而只需要关心更适合互联网访问的IP协议内容。
PS:ARP欺骗,比如修改别人的IP映射自己MAC,就能接收到别人的数据。

第三种情况:通过路由表寻址
当网络过于庞大,两个IP之间得寻址会变得更加困难。路由表根据目的IP地址和子区掩码确定IP的网段和主机号,从而确定数据的下一个传输目的地址(一个网段相当于一个局域网)。

通过路由表的层层传递之后,最终进入目的IP所在的局域网关,此时可以直接访问到目的IP主机。
PS:从一个路由到另一个路由的访问跟IP地址访问类似,目的路由也是一个目的中转IP,有自己的MAC,可通过上一个路由的ARP表找到MAC。

2. 数据传输需要确定可实现的传输方式(协议) 源地址和目的地址之间的数据传输,目前有多种传输协议。传输根据什么协议,这又跟网络划分的七层结构有关。

先看下网络的七层结构:
搬图:

我的理解是:
1、物理层:直接的物理信号传输,中继器、集线器、双绞线等物理设备,受实际物理传输介质的制约。
2、数据链路层:物理MAC地址对应的层,基于物理层传送可靠的数据帧,负责数据的可靠传达。
3、网络层:对IP进行解析,还有ARP的IP与MAC映射解析,收发IP数据包和解析,负责ip之间的路由,源和目的之间的连接。
4、传输层:TCP、UDP协议可以封装和解析传输层数据。在这层,屏蔽了底层具体的数据封装传输手段,直接为上层提供看似端直接到端的数据传输。socket套接字应该就是以此为基础。
7、应用层:最高的层,建立在传输层之上,直接关注应用数据、报文的交互,比如http请求和相应内容,远程调用协议的载体等。

数据的传输应该是,把高层的数据包封装到低层的数据帧中通过物理信道传输,如果包太大会通过相应规则分包分片分帧来处理,传输完毕后再组合成完整的数据包。
搬图:每一层的双方看似是在自己层对接,实际还是需要向下封装和向上解析的过程(刚好封装的协议和解析的协议是相反的)。

在每层,都有相应的协议,定义数据的传输方式。
如物理层,其实就相当于物理设备接口之间的一套数据交互协议。
如数据链路层,以太网协议,以太网帧将网络层交付的数据添加报头信息后,以帧的形式传递。
如网络层之间的传输,从本层来看是IP之间的数据传输,但是最终数据还是要走底层。
如传输层,在高级语言编程中实际也最多关注的层,直接调用,无需关注底层实现!

太过底层的协议用高级语言没法实现,高级语言也是调用了底层封装好的协议接口。但是如传输层TCP、UDP协议,HTTP协议,RPC远程调用,soap协议等等,都是可以用高级语言编程的,后面根据这些协议的原理,自己也来玩玩实现数据交互。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。