首页 > 代码库 > 网络基本功系列:细说网络传输
网络基本功系列:细说网络传输
1、引言
首先来看一个样例:
演示样例:网络server向client传送数据的过程:
在具体阐述网络传输过程之前。先来看一个最常见的样例,下图显示了一个网络server向client传送数据的完整过程:
2. 应用协议HTTP报文头加入到HTML数据之前。
报文头信息包括:server所使用的HTTP版本号。以及表明它包括发给网络client信息的状态编码。
3. HTTP应用层协议将HTML格式的网页数据发送给传输层。TCP传输层用于管理网络server和client之间的会话。
4. IP信息加入到TCP信息之前。IP指定适当的源和目的IP地址。
这些信息就构成了IP报文。
5. 以太网协议加入到IP报文的两端之后,就形成了数据链路帧。上述帧发送至通向网络client的路径上的近期一个路由器。路由器移除以太网信息,观察IP报文。判定最佳路径,将报文插入一个新的帧,并发送至目标路径上下一个相邻路由器。每个路由器在转发之前都移除并加入新的数据链路层信息。
6. 数据通过互联网络传输,互联网络包括媒介和中间设备。
7. client接收到包括数据的数据链路帧,处理各层协议头,之后以加入时相反的顺序移除协议头。首先处理并移除以太网信息,之后是IP协议信息,接下来TCP信息。最后是HTTP信息。
8. 之后。将网页信息传递给client网页浏览器软件。
2、数据封装:
消息要在网络中传输,必须对它进行编码,以特定的格式进行封装,同一时候须要适当地封装以足够的控制和地址信息。以使它可以从发送方移动到接收方。
消息大小
理论上,视频或邮件信息是可以以大块非中断型流从网络源地址传送到目的地址。但这也意味着同一时刻同一网络其它设备就无法收发消息。这样的大型数据流会造成显著延时。而且,假设传输过程中连接断开,整个数据流都会丢失须要所有重传。因此更好的方法是将数据流分段(segmentation)为较小的。便于管理的片段。可以带来两点优点:
(1)、发送较小片段,网络上同一时候可有多个会话交错进行。这样的在网络上将不同会话片段交错进行的过程称为多路传输(multiplexing)。
(2)、分段可提高网络通讯的可靠性。各消息片段从源地址到目的地址无需经过同样路径,假设一条路径被阻塞或断开。其余消息可从替换路径到达目的地址。假设部分消息到不了目的地址,那仅仅需重传丢失部分。
通过对片段打上标签的方式来保证顺序以及在接收时重组。
协议数据单元(Protocol Data Unit, PDU)
应用层数据在传输过程中沿着协议栈传递,每一层协议都会向当中加入信息。
这就是封装的过程。
数据片段在各层网络结构中採用的形式就称为协议数据单元(PDU)。封装过程中,下一层对从上一层收到的PDU进行封装。在处理的每个阶段PDU都有不同的名字来反应它的功能。
PDU依照TCP/IP协议的命名规范:
**数据(Data):应用层PDU的经常使用术语
**分段(Segment):传输层PDU
**帧(Frame):网络层PDU
**比特(Bits):在介质上物理数据传输所使用的PDU。
封装
封装是指在传输之前为数据加入额外的协议头信息的过程。在绝大多数数据通信过程中。源数据在传输前都会封装以数层协议。在网络上发送消息时,主机上的协议栈从上至下进行操作。
以网络server为例,HTTP应用层协议发送HTML格式网页数据到传输层,应用层数据被分成TCP分段。各TCP分段被打上标签,称为头(header)。表明接收方哪一个进程应当接收此消息。同一时候也包括使得接收方可以依照原有的格式来重组数据的信息。
传输层将网页HTML数据封装成分段并发送至网络层,运行IP层协议。整个TCP分段封装成IP报文。也就是再添上IP头标签。
IP头包含源和目的IP地址。以及发送报文到目的地址所必须的信息。
之后。IP报文发送到接入层,封装以帧头和帧尾。每一个帧头都包括源和目的物理地址。物理地址唯一指定了本地网络上的设备。帧尾包括差错校正信息。最后。由server网卡将比特编码传输给介质。
解封装
接收主机以相反的方式进行操作称为解封装。解封装是接收设备移除一层或多层协议头的过程。数据在协议栈中向上移动直到终端应用层伴随着解封装。
3、訪问本地资源:
訪问本地网络资源须要两种类型的地址:网络层地址和数据链路层地址。网络层和数据链路层负责将数据从发送设备传输至接收设备。两层协议都有源和目的地址,但两种地址的目的不同。
演示样例:clientPC1与FTP在同一IP网络的通信
网络地址
网络层地址或IP地址包括两个部分:网络前缀和主机。路由器使用网络前缀部分将报文转发给适当的网络。最后一个路由器使用主机部分将报文发送给目标设备。同一本地网络中。网络前缀部分是同样的,仅仅有主机设备地址部分不同。
源IP地址:发送设备,即clientPC1的IP地址:192.168.1.110
目的IP地址:接收设备。即FTPserver:192.168.1.9
数据链路地址
数据链路地址的目的是在同一网络中将数据链路帧从一个网络接口发送至还有一个网络接口。以太网LAN和无线网LAN是两种不同物理介质的网络演示样例,分别有自己的数据链路协议。
当IP报文的发送方和接收方位于同一网络。数据链路帧直接发送到接收设备。以太网上数据链路地址就是以太网MAC地址。MAC地址是物理植入网卡的48比特地址。
源MAC地址:发送IP报文的PC1以太网卡MAC地址。AA-AA-AA-AA-AA-AA。
目的MAC地址:当发送设备与接收设备位于同一网络,即为接收设备的数据链路地址。本例中。FTP MAC地址:CC-CC-CC-CC-CC-CC。
源和目的MAC地址加入到以太网帧中。
MAC与IP地址
发送方必须知道接收方的物理和逻辑地址。发送方主机可以以多种方式学习到接收方的IP地址:比方域名系统(Domain Name System, DNS)。或通过应用手动输入,如用户指定FTP地址。
以太网MAC地址是怎么识别的呢?发送方主机使用地址解析协议(Address Resolution Protocol, ARP)以检測本地网络的全部MAC地址。例如以下图所看到的,发送主机在整个LAN发送ARP请求消息,这是一条广播消息。ARP请求包括目标设备的IP地址,LAN上的每个设备都会检查该ARP请求,看看是否包括它自身的IP地址。仅仅有符合该IP地址的设备才会发送ARP响应。ARP响应包括ARP请求中IP地址相相应的MAC地址。
4、訪问远程资源:
默认网关
当主机发送消息到远端网络。必须使用路由器,也称为默认网关。
默认网关就是位于发送主机同一网络上的路由器的接口IP地址。有一点非常重要:本地网络上的全部主机都可以配置自己的默认网关地址。假设该主机的TCP/IP设置中没有配置默认网关地址,或指定了错误的默认网关地址,则远端网络消息无法被送达。
例如以下图所看到的,LAN上的主机PC 1使用IP地址为192.168.1.1的R1作为默认网关,假设PDU的目的地址位于还有一个网络,则主机将PDU发送至路由器上的默认网关。
与远端网络设备通讯
下图显示了client主机PC 1与远端IP网络server进行通讯的网络层地址与数据链路层地址:
网络地址
当报文的发送方与接收方位于不同网络,源和目的IP地址将会代表不同网络上的主机。
源IP地址:发送设备即client主机PC 1的IP地址:192.168.1.110。
目的IP地址:接收设备即网络server的IP地址:172.16.1.99。
数据链路地址
当报文的发送方与接收方位于不同网络。以太网数据链路帧无法直接被发送到目的主机。以太网帧必须先发送给路由器或默认网关。本例中,默认网关是R1,R1的接口IP地址与PC 1属于同一网络,因此PC 1可以直接达到路由器。
源MAC地址:发送设备即PC 1的MAC地址。PC1的以太网接口MAC地址为:AA-AA-AA-AA-AA-AA。
目的MAC地址:当报文的发送方与接收方位于不同网络,这一值为路由器或默认网关的以太网MAC地址。本例中。即R1的以太网接口MAC地址,即:11-11-11-11-11-11。
IP报文封装成的以太网帧先被传输至R1,R1再转发给目的地址即网络server。R1能够转发给还有一个路由器,假设目的server所在网路连接至R1。则直接发送给server。
发送设备怎样确定路由器的MAC地址?每个设备通过自己的TCP/IP设置中的默认网关地址得知路由器的IP地址。
之后。它通过ARP来得知默认网关的MAC地址,该MAC地址随后加入到帧中。
5、补充问题
问题一:网卡,交换机,网桥。路由器,网关分别工作与OSI模型哪一层呢?
解答:
看一个设备工作在哪一层,须要看它的主要实现功能使用的是哪一层协议头信息。
网桥:工作在数据链路层。在不同或同样类型的LAN之间存储并转发数据帧。必要时进行链路层上的协议转换。
可连接两个或多个网络。在当中传送信息包。
交换机:工作在数据链路层。原理等同于多port网桥。作用是连接数个同样网段的不同主机,降低网内冲突。隔离冲突域。利用存储转发和过滤技术来从物理上切割网段。
路由器:工作在网络层。在不同的网络间存储并转发分组。可在异种网络之间(即不同类型的局域网互连。局域网与广域网,广域网与广域网)数据传输并进行路径选择,使用专门的软件协议从逻辑上对整个网络进行划分。
网关:对高层协议(包含传输层及更高层次)进行转换的网间连接器。同意使用不兼容的协议,比方SPX/IPX和TCP/IP的系统和网络互连。
由于协议转换是网关最重要的功能。所以答案是工作在传输层及以上层次。
网卡:在物理层上网卡主要是完毕物理接口的连接,电信号的传送以及将数据分解为适当大小的数据包之后向网络上发送的功能. 数据链路层功能包含链路建立和拆除,帧定界同步顺序差错控制这些。
大多觉得主要工作在物理层。
当然,非常多设备在概念上变得越来越模糊。
如桥接路由器是网桥和路由器的组合,同意多重连接,对某一种协议具有专用路由选择方法。对其它协议仅仅充当网桥的作用。网桥,路由器。交换机和网关能够安装在同一幢楼或校园区。也能够使用远程连接。
问题二:
如果如今serverB ping serverA,请问能ping通吗?
解答:
这样实际的数据包传输的过程为:
假设是从A对B发起ping,而且B没有网关,那么抓包会发现,A上面能够正常发出ICMP包,可是收不到B回应的ICMP包。相同在B側抓包,会发现,能收到ICMP包,可是无法回应给A。
用Wireshark来看例如以下图所看到的:
注:转载自:https://community.emc.com/thread/197851?
start=0&tstart=0
网络基本功系列:细说网络传输