网络信息的传输

你是否有这样的疑惑,当你输入一个网址,页面上的内容是从哪里来的,这背后又发生了什么呢?今天就和大家一起探讨一下这个问题。

两个设备有了物理连接,就可以互相发送和接收信号了。这里我们不讨论通讯原理,我们来说说如何把这些信号变成需要的内容。

一、数据的封装与解封装

由于网络只能传输0和1信号,要传送东西就得按约定把它分成小块再转化成0和1信号传送出去。网络通信是一个复杂的过程,人们将这个过程抽象成不同的层,这需要一系列的协议来支持。

OSI七层模型是理论上的模型,是国际标准,而TCP/IP四层模型简化了七层模型,是实际应用的模型。下面介绍一个更便于理解的五层模型。

 

物理层:把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。

 

链路层:确定了0和1的分组方式,以帧的方式封装数据,其中包含MAC物理地址,MAC地址用来找到相同子网络中的计算机。

 

网络层:引进一套新的地址,来区分不同网络,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做"IP地址"。

 

传输层: 建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。

 

应用层:规定应用程序的数据格式。比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了"应用层"。

  

下面来看一下不同的层是如何工作的。假如要将一个网页传输到另一台机子上,依照协议,应用层(通过一些函数调用)将字符编码,图片的格式等信息以及数据的实体内容封装成数据包,然后再交给传输层。传输层在数据包前面加上端口号等信息作为头部,再交给网络层。网络层设置双方的IP地址后到链路层,链路层设置双方的MAC地址,将数据拆分成帧的形式,加上帧头帧尾,最后由物理层将将二进制数据传送出去。

 

当然数据量一般比较大,需要分多次将这些数据包逐个传输,接受方收到数据包后层层解析,把不同数据包重新组合成完整的内容,再显示出来。

二、数据在网络上的传送

上面我们已经知道了数据包是如何封装和解封装的,而这些数据包在网络中又是如何传送的呢?

当你敲下一个网址时,浏览器就会将请求信息、地址、端口等信息封装好向网关发送数据,网关(用于两个不同网络的互联)根据目的IP找到对应的网络传送数据,数据在经过一系列的转发之后到达目的IP所对应的网关,它会解析目的计算机的MAC地址并向其转发数据。当目的计算机(服务器)收到数据后,根据端口号找到对应的应用程序,应用程序解析收到的数据包,根据请求将相应的响应和地址信息封装起来,再通过网卡发送回去,其过程和请求的发送一样,不在赘述。

2.1 如何获取本机和目的IP地址

向目的计算机发送信息需要知道对方的地址,刚加入网络的计算机不知道自己的IP地址,也不知道网关的地址以及网站的IP地址。那要如何获取这些地址信息呢?

 

 用户可以手动设置静态IP地址,也可以动态获取IP地址。动态IP地址使用的是DHCP协议,这个协议规定,每一个子网络中,有一台计算机负责管理本网络的所有IP地址,它叫做"DHCP服务器",一般的路由器就自带了DHCP服务。

 

新的计算机加入网络,必须向"DHCP服务器"发送一个"DHCP请求"数据包,申请IP地址和相关的网络参数。根据DHCP协议,需要设置源地址和目的地址。由于不知道本机和目的IP地址,将IP地址就设为0.0.0.0,目的IP地址设为255.255.255.255。源MAC地址填入本机MAC地址,目的MAC地址为广播地址:FF-FF-FF-FF-FF-FF,这样同一个子网络的每台计算机都会收到这个数据包。

 

DHCP服务器收到数据包后分配好IP地址,发送回去一个"DHCP响应"数据包,而其他计算机就可以丢弃这个包。新加入的计算机收到这个响应包,于是就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等参数。

   

如果我们已经知道了目的IP地址,就可以向这个地址发送请求数据了。通过IP地址的子网掩码判断目的主机是否同一网络,相同则可通过ARP协议直接通信。如果不同则要发送数据给网关处理,而这时已经知道了网关的地址,也就可以通过网关转发数据请求。

如果检查本地文件没有域名对应的IP地址,这时候就要先将域名信息发送给DNS服务器。DNS服务器收到信息后会回应域名对应的地址信息,这样就得到了目的IP地址。

 

2.2数据在网络传送的方式

对于两台在同一个子网络的计算机,是可以直接用ARP协议进行通信的。如果不知道到对方的MAC地址,在对方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,表示这是一个"广播"地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。

获取了目的主机MAC地址后,下一次就不用采取广播的形式而改用单播来进行通信了。实际应用中广播和单播是如何是实现的呢?

 

拥有MAC地址记忆功能的设备(如路由器、交换机)在广播之后,学习到了源主机和目的主机的MAC地址,知道它们连接在自己的哪一个端口上,下一次再转发的时候有了就可以直接转发给对应的端口而不用再发送给每一个端口。而不具备MAC地址记忆功能的集线器,则每次都要将数据包分发到所有的端口。

 

对于不在同一网络的计算机,又是如何通过网关进行数据转发的呢?

网关用于连接两个不同的网络,一般为路由器或交换机。为了完成“路由”的工作,在路由器中保存着各种传输路径的相关数据--路由表。路由表中保存着子网的标志信息、网上路由器的个数和下一个路由器的名字等内容。路由表可以是由系统管理员固定设置好的,也可以由系统动态修改,可以由路由器自动调整,也可以由主机控制。由系统管理员事先设置好固定的路由表称之为静态路由表,一般是在系统安装时就根据网络的配置情况预先设定的,它不会随未来网络结构的改变而改变。而动态路由表是路由器根据网络系统的运行情况而自动调整的路由表。路由器根据路由选择协议提供的功能,自动学习和记忆网络运行情况,在需要时自动计算数据传输的最佳路径。

 

假设网关是一个路由器,如果路由器上有目的主机的路由记录,则将数据包发送给下一个路由器,最后到达目的主机。如果路由器上没有路由记录,则将数据包发送给上层路由器,再次转发。如果经过64次(系统默认值)转发还未找到目的主机,路由器将丢弃这个数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值