数据是怎样通过网络进行传输的
网络连接一切。它连接了人(个人和企业)、服务(由软件系统构建的服务接口)和物(大自然产物和智能终端),构建了多姿多彩的互联网。
在前面的章节,许老师分别介绍了进程、存储、输入、输出以及其背后的原理。这里通过一个单机来描述它的局限性,由此衬托网络对计算机世界的重要地位。
通常来讲,计算机世界里的任何技术,都能从现实的生活里得到映射。网络作为一个数据交换的通道,就自然地与邮寄联系到了一起。数据封包过程能够正常被接收的包裹通常包含寄件人信息、收件人
本文借鉴与许世伟老师的一文。
网络连接一切。它连接了人(个人和企业)、服务(由软件系统构建的服务接口)和物(大自然产物和智能终端),构建了多姿多彩的互联网。
在前面的章节,许老师分别介绍了进程、存储、输入、输出以及其背后的原理。这里通过一个单机来描述它的局限性,由此衬托网络对计算机世界的重要地位。
通常来讲,计算机世界里的任何技术,都能从现实的生活里得到映射。网络作为一个数据交换的通道,就自然地与邮寄联系到了一起。
数据封包过程能够正常被接收的包裹通常包含寄件人信息、收件人信息、收件人地址三个基本信息。有了寄件人的信息,物流公司就可以知道是谁邮寄的。收件人的信息,可以知道邮寄给谁。收件人地址表示要邮到哪里去。所有的这些信息是物流公司所产生的需求,如果专业地进行表示,这些信息叫做物流协议。
同样的网络也是如此,如何将某台主机(寄件人)的数据内容,通过局域网、广域网传输到另外一台主机上(收件人),就成了网络要解决的问题。
技术人员应该都有了解,OSI协议讲网络分为了七层,分别是应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。在这里许老师用了一个很贴切的图片进行展示。
OSI七层模型
让我们设想下,传输一部电影,应该怎么来传?
第一步:分批次
网络传输对数据包的大小是有限制的,在数据包过大的情况下,会分批次进行传输(从物理网络视角看,数据是并不是流(stream),而是一个个大小有明确限制的数据包),收到电影(大报文)的时候,应用层负责电影拆成多个固定大小的数据包。
第二步:传输层贴上发出者和接收者
传输层将每个数据包都贴上了一层标签,包含源主机端口(寄件人),目标主机端口(收件人),以及传输的协议(TCP/UDP)以及批次号()。
传输层有两套协议,一套是 TCP 协议,另一套是 UDP 协议。UDP 协议不保证对方一定收到,信封上就没写批次编号。
第三步:网络层贴上从哪儿发出到哪儿去
网络层接收到传输层给的数据后,在报文头部加上源IP地址和目标IP地址。有了IP的信息,就可以知道报文要发往哪里去。网络层主要任务是为网络上的不同主机提供通信,作用是将报文从源主机送达目标主机。
主要功能包括:
转发:报文从源主机的输出端口,转发到目标主机的输入端口。路由选择:通过算法为报文通过网络选择最佳途径。网络层提供了多种协议,其中IP协议和ICMP协议最为常见。
第四步:数据链路层保证传输
数据链路层是最接近物理层的,主要做了三件事:
进一步的对报文封装,头尾部加上数据链路层的标识,叫做帧。通过加帧的方式,实现透明传输(什么样的报文都可以通过这样的协议进行传输)在尾部加上字符码进行冗余校验(通过某种算法获取一个值放在尾部,每次都通过算法进行校验数据的正确性)网络协议网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。
什么是MAC 地址
MAC 地址的英语是 Media Access Control Address,直译为媒体存取控制位址,也称为局域网地址(LAN Address)、以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。
通俗地讲,一台计算机有一个或多个网卡,每个网卡会有自己的唯一标识即 MAC 地址。
什么是IP地址
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
什么是网关
网关(Gateway)就是一个网络连接到另一个网络的关口。网络由多个局域网和广域网组成,每个网络互相的通道就是网关。
什么是域名
互联网上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。
域名就是对IP的另外一种表示。例如:给李长顺起了个外号叫做铁蛋,就是用来加深对这个人的记忆。
DNS协议
这个协议记录了IP与域名的配对,每次通过域名访问,都能解析到对应的IP上。
DHCP 协议
动态主机配置协议,第一次接入网络的计算机,只有网卡自带的MAC地址,通过DHCP协议给它分配IP地址和默认网关。
ARP 协议
DNS协议是将域名解析为IP,ARP协议(地址解析协议)就是将IP转换为MAC地址。原因是在网络通讯中,最终需要的是MAC地址。
RARP 协议
RARP 全称叫反向地址转换协议,顾名思义就是将MAC地址转换为IP。
ICMP 协议
互联网控制报文协议,用来检测网路的连线状况,以保证连线的有效性,提供常用的ping、Telnet命令。
数据传输过程数据传输过程
在网络内,源主机跟目标主机之间是通过多个路由器和交换机相连的。
同一个局域网内的主机通信
局域网内部,源主机与目标主机只经过了交换机。
同一个局域网数据交换
源主机只有目标主机的IP地址,没有MAC地址,因此采用ARP请求,获取MAC地址。交换机在收到ARP请求时候,有两种状态:交换机有目标主机的IP和MAC地址映射关系,此时直接返回其MAC地址。交换机没有对应的IP和MAC地址关系,此时交换机会向局域网内所有的主机转发数据包(泛洪),当目标主机判断IP跟自身IP一致的时候,返回其MAC地址。3. 交换机有了IP跟MAC地址之后,进行自身缓存,之后的主机通讯不需要再次进行泛洪。
两个局域网内的数据传输
两个局域网内的主机之间经过若干个路由器和交换机(可选)。
跨局域网的数据传输
主机1与主机4进行通信步骤:
主机1发送数据包,通过交换机(可选),到达局域网的网关。网关根据自身的路由映射表,选取最佳的路径,发送数据包。路由器遵循着自身的路由表,将数据包层层转发到对应的目标网关上。目标网关进行数据的拆包和重组,形成新的数据包。新的数据包经过交换机(可选),再转发到对应的主机4上去。总结这里只是从抽象上介绍了整个网关协议以及数据转发过程,数据在传输过程中会经过层层的封包和拆包过程,在这里不再过多的介绍。
整个网络的构建是一个非常复杂而且庞大的工程,通过对整个过程的了解,可以发现其设计的精妙之处。
通过OSI七层模型将数据的传输过程进行拆解,每个模型负责一部分的工作。每一次的数据交换都有对应的协议进行支持。网络从域上拆分成为多个子网,每个子网又管理多个子网或者多个主机。整体来说,分而治之的思想,在整个网络结构里,随处可见。
文章评论