网络中数据传输过程
我们每天都在使用互联网,我们电脑上的数据是怎么样通过互联网传输到到另外的一台电脑上的呢?
我们知道现在的互联网中使用的TCP/IP协议是基于,OSI(开放系统互联)的七层参考模型的,(虽然不是完全符合)从上到下分别为 应用层 表示层 会话层 传输层 网络层 数据链路层和物理层。其中数据链路层又可是分为两个子层分别为逻辑链路控制层(Logic Link Control,LLC )和介质访问控制层((Media Access Control,MAC )也就是平常说的MAC层。LLC对两个节点中的链路进行初始化,防止连接中断,保持可靠的通信。MAC层用来检验包含在每个桢中的地址信息。在下面会分析到。还要明白一点路由器是在网路层的,而网卡在数据链路层。
我们知道,ARP(Address Resolution Protocol,地址转换协议)被当作底层协议,用于IP地址到物理地址的转换。在以太网中,所有对IP的访问最终都转化为对网卡MAC地址的访问。如果主机A的ARP列表中,到主机B的IP地址与MAC地址对应不正确,由A发往B数据包就会发向错误的MAC地址,当然无法顺利到达B,结 果是A与B根本不能进行通信。
首先我们分析一下在同一个网段的情况。假设有两台电脑分别命名为A和B,A需要相B发送数据的话,A主机首先把目标设备B的IP地址与自己的子网掩码进行“与” *** 作,以判断目标设备与自己是否位于同一网段内。如果目标设备在同一网段内,并且A没有获得与目标设备B的IP地址相对应的MAC地址信息,则源设备(A)以第二层广播的形式(目标MAC地址为全1)发送ARP请求报文,在ARP请求报文中包含了源设备(A)与目标设备(B)的IP地址。同一网段中的所有其他设备都可以收到并分析这个ARP请求报文,如果某设备发现报文中的目标IP地址与自己的IP地址相同,则它向源设备发回ARP响应报文,通过该报文使源设备获得目标设备的MAC地址信息。为了减少广播量,网络设备通过ARP表在缓存中保存IP与MAC地址的映射信息。在一次 ARP的请求与响应过程中,通信双方都把对方的MAC地址与IP地址的对应关系保存在各自的ARP表中,以在后续的通信中使用。ARP表使用老化机制,删除在一段时间内没有使用过的IP与MAC地址的映射关系。一个最基本的网络拓扑结构:
如果中间要经过交换机的话,根据交换机的原理,它是直接将数据发送到相应端口,那么就必须保有一个数据库,包含所有端口所连网卡的MAC地址。它通过分析Ethernet包的包头信息(其中包含不原MAC地址,目标MAC地址,信息的长度等信息),取得目标B的MAC地址后,查找交换机中存储的地址对照表,(MAC地址对应的端口),确认具有此MAC地址的网卡连接在哪个端口上,然后将数据包发送到这个对应的端口,也就相应的发送到目标主机B上。这样一来,即使某台主机盗用了这个IP地址,但由于他没有这个MAC地址,因此也不会收到数据包。
现在我们讨论两台不在同一个网段中的主机,假设网络中要从主机PC-A发送数据包PAC到PC-C主机中,如下图所示:
PC-A并不需要获取远程主机(PC-C)的MAC地址,而是把IP分组发向缺省网关,由网关IP分组的完成转发过程。如果源主机(PC-A)没有缺省网关MAC地址的缓存记录,则它会通过ARP协议获取网关的MAC地址,因此在A的ARP表中只观察到网关的MAC地址记录,而观察不到远程主机的 MAC地址。在以太网(Ethernet)中,一个网络设备要和另一个网络设备进行直接通信,
除了知道目标设备的网络层逻辑地址(如IP地址)外,还要知道目标设备的第二层物理地址(MAC地址)。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。 数据包在网络中的发送是一个及其复杂的过程,上图只是一种很简单的情况,中间没有过多的中间节点,其实现实中只会比这个更复杂,但是大致的原理是一致的。
(1)PC-A要发送数据包到PC-C的话,如果PC-A没有PC-C的IP地址,则PC-A首先要发出一个dns的请求,路由器A或者dns解析服务器会给PC-A回应PC-C的ip地址,这样PC-A关于数据包第三层的IP地址信息就全了:源IP地址:PC-A,目的ip地址:PC-C。
(2)接下来PC-A要知道如何到达PC-C,然后,PC-A会发送一个arp的地址解析请求,发送这个地址解析请求,不是为了获得目标主机PC-C的MAC地址,而是把请求发送到了路由器A中,然后路由器A中的MAC地址会发送给源主机PC-A,这样PC-A的数据包的第二层信息也全了,源MAC地址:PC-A的MAC地址,目的MAC地址:路由器A的MAC地址,
(3)然后数据会到达交换机A,交换机A看到数据包的第二层目的MAC地址,是去往路由器A的,就把数据包发送到路由器A,路由器A收到数据包,首先查看数据包的第三层ip目的地址,如果在自己的路由表中有去往PC-C的路由,说明这是一个可路由的数据包。 (4)然后路由器进行IP重组和分组的过程。首先更换此数据包的第二层包头信息,路由器PC-A到达PC—C要经过一个广域网,在这里会封装很多广域网相关的协议。其作用也是为了找下一阶段的信息。同时对第二层和第三层的数据包重校验。把数据经过Internet发送出去。最后经过很多的节点发送到目标主机PC_C中。
现在我们想一个问题,PC-A和PC-C的MAC地址如果是相同的话,会不会影响正常的通讯呢!答案是不会影响的,因为这两个主机所处的局域网被广域网分隔开了,通过对发包过程的分析可以看出来,不会有任何的问题。而如果在同一个局域网中的话,那么就会产生通讯的混乱。当数据发送到交换机是,这是的端口信息会有两个相同的MAC地址,而这时数据会发送到两个主机上,这样信息就会混乱。因此这也是保证MAC地址唯一性的一个理由。
我暂且按我的理解说说吧。
先看一下计算机网络OSI模型的七个层次:
┌—————┐
│ 应用层 │←第七层
├—————┤
│ 表示层 │
├—————┤
│ 会话层 │
├—————┤
│ 传输层 │
├—————┤
│ 网络层 │
├—————┤
│数据链路层│
├—————┤
│ 物理层 │←第一层
└—————┘
而我们现在用的网络通信协议TCP/IP协议者只划分了四成:
┌—————┐
│ 应用层 │ ←包括OSI的上三层
├—————┤
│ 传输层 │
├—————┤
│ 网络层 │
├—————┤
│网络接口层 │←包括OSI模型的下两层,也就是各种不同局域网。
└—————┘
两台计算机通信所必须需要的东西:IP地址(网络层)+端口号(传送层)。
两台计算机通信(TCP/IP协议)的最精简模型大致如下:
主机A---->路由器(零个或多个)---->主机B
举个例子:主机A上的应用程序a想要和主机B上面的应用程序b通信,大致如下
程序a将要通信的数据发到传送层,在传送层上加上与该应用程序对应的通信端口号(主机A上不同的应用程序有不同的端口号),如果是用的TCP的话就加上TCP头部,UDP就加上UDP头部。
在传送成加上头部之后继续向往下传到网络层,然后加上IP头部(标识主机地址以及一些其他的数据,这里就不详细说了)。
然后传给下层到数据链路层封装成帧,最后到物理层变成二进制数据经过编码之后向外传输。
在这个过程中可能会经过许多各种各样的局域网,举个例子:
主机A--->(局域网1--->路由器--->局域网2)--->主机B
这个模型比上面一个稍微详细点,其中括号里面的可以没有也可能有一个或多个,这个取决于你和谁通信,也就是主机B的位置。
主机A的数据已经到了具体的物理介质了,然后经过局域网1到了路由器,路由器接受主机A来的数据先经过解码,还原成数据帧,然后变成网络层数据,这个过程也就是主机A的数据经过网络层、数据链路层、物理层在路由器上面的一个反过程。
然后路由器分析主机A来的数据的IP头部(也就是在主机A的网络层加上的数据),并且修改头部中的一些内容之后继续把数据传送出去。
一直到主机B收到数据为止,主机B就按照主机A处理数据的反过程处理数据,直到把数据交付给主机B的应用程序b。完成主机A到主机B的单方向通信。
这里的主机A、B只是为了书写方便而已,可能通信的双方不一定就是个人PC,服务器与主机,主机与主机,服务器与服务器之间的通信大致都是这样的。
再举个例子,我们开网页上百度:
就是我们的主机浏览器的这个应用程序和百度的服务器之间的通信。应用成所用的协议就是HTTP,而服务器的端口号就是熟知端口号80
大致过程就是上面所说,其中的细节很复杂,任何一个细节都可以写成一本书,对于非专业人员也没有必要深究。
在OSI/RM协议模型的物理层,数据传输的基本单位是位(比特流)
OSI模型的第一层是物理层(Physical
Layer),使用权数据路由经过大型网络
相当于邮局中的排序工人。
在局部局域网上传送数据帧(data
frame),它负责管理计算机通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机适配器等。
扩展资料:
OSI参考模型各层主要功能、传输数据单位
1、物理层PhysicalLayer:原始比特流的传输,基本单位:(比特bit)
2、数据链路层DataLinkLayer:建立相邻节点数据链路传输,基本单位:(帧frame)
3、网络层Network
layer :基于IP地址的路由选路传输数据,基本单位:
(数据包packet)
4、传输层Transport
layer: 常规数据传递,面向连接或者无连接,基本单位:(数据段segment)
5、会话层Session
layer: 建立会话关系
6、表示层Presentation
layer:统一数据传输格式
7、应用层Application
layer :为用户应用程序提供服务接口
参考资料:
在计算机网络中,数据的传输是通过网络中的数据线(包括有线和无线)来进行的。数据线的传输速度通常是以比特率(bps)来计算的,而不是数字。比特率是指每秒钟可传输的比特数,也就是传输速度。比特率越高,数据传输速度就越快。
当我们说线传递数字是几时,通常指的是数字信号的传输速度,即数字信号每秒钟可以传输多少个比特。数字信号可以通过调制将数据转换成数字信号,然后通过数据线进行传输。数字信号的传输速度越高,数据传输速度就越快。
在实际应用中,数字信号的传输速度通常以单位“波特”(bps)来计算。1波特等于每秒钟可以传输1个符号。符号是指数字信号的一种状态,例如高电平或低电平。因此,如果线传递数字是几,就是指每秒钟可以传输多少个符号,也就是每秒钟的波特数。
总之,线传递数字是几,就是指数字信号每秒钟可以传输多少个符号,也就是每秒钟的波特数。
网络传送数据都是二进制的!
没有十进制的,
、文字在网络传送中是转换成一定的二进制代码进行传送的。
给你一个大致的流程吧:
、文字等--→传送端(发出)--→数据转换器(把和文字转换成0、1代码)--→终端(接收)--→数据转换器(将0、1代码转换成和文字)--→、文字。
这流程是可以逆向的。
网络传送是:一台电脑(或服务器)和一或多台台电脑(服务器)。传送端和终端是不在一台电脑上的的。
计算机内部交流是:一台计算机即充当传送端,又充当接收端。
但传送方式是一样的。
以你的追问为线索,我来回答这个问题。
以TCP/IP协议为例。
当应用程序用传输控制协议(TCP)传送数据时,数据被送入协议栈中,然后逐个通过每一层没,直到被当成一串比特流送入网络中。其中每一层都要对收到的数据增加一些首部信息(有时还要增加尾部信息)。
1、两台设备通过TCP传输给IP的数据单元称为TCP报文段。报文段=首部(20~60字节)+数据(最大长度为2的16次方),这个最大数据长度是由报文段的目的端而不是源端确定的,如果双方都不定义,则取默认值536。
2、在IP层的分组叫数据报。数据报=首部(20~60字节)+数据,即数据的长度=总长度-首部长度,其中总长度限制为65535字节。
3、某些物理网络不能将65535字节的数据报封装成他们的帧,所以必须要将这样的数据报分段,这取决于这个物理网络所使用的协议(如以太网、令牌环网、X25、PPP等等)。可以封装在一个帧中的数据最大长度,被称为MTU,不同的物理网络MTU是不同的,你可以去查表得到这个MTU值。
上图是iso的七层网络体系结构,每一层都有其相应的工作协议。
数据传输过程如下:(如qq)
在发送主机A上,发送的数据经过应用层时,应用层对数据进行了包装,它在要传输的数据上加了一个应用层首部AH后,继续向传输层传送。
传输层接收到应用层的数据后,将数据+应用层AH当做数据,给它进行包装,加上自己的首部,此时的数据变为数据+应用层AH+传输层PH,继续向会话层传送。
依此类推,数据每传递一层,便增加相应协议的首部。
直到传输至数据链路层,数据链路层将加了自己首部的数据交给物理层后,转换为高低跳跃的比特流,这时候的数据才能在线路上传输。
接收端的接收过程与发送过程相反,在接收主机B上,能够通过电信号识别出比特流识别,将收到的信息递交给数据链路层。
数据链路层收到数据后,剥离发送时添加的数据链路层首部DH,把数据提取出来,递交给网络层。
同样的,网络层剥离自己的首部NH,还原后将数据递交给传输层。依此类推,至应用层将其首部AH剥离后,即可还原成最原始的发送数据了。
因为电话线不能传输数字信号,调制解调器实际起到两个作用,一个是调制,一个是解调。调制就是把计算机的数字信号调制成电话线可传输的模拟信号;解调就是把从电话线接收到的模拟信号解调成计算机可识别的数字信号。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)