数据包传输分析

上传人:飞*** 文档编号:47459131 上传时间:2018-07-02 格式:PDF 页数:10 大小:1.68MB
返回 下载 相关 举报
数据包传输分析_第1页
第1页 / 共10页
数据包传输分析_第2页
第2页 / 共10页
数据包传输分析_第3页
第3页 / 共10页
数据包传输分析_第4页
第4页 / 共10页
数据包传输分析_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《数据包传输分析》由会员分享,可在线阅读,更多相关《数据包传输分析(10页珍藏版)》请在金锄头文库上搜索。

1、1.2 数据包传输(1)数据在传输过程中,必须被分解成一个个的小碎片,然后才能够被传输。这就如同我们在运送大批的货物,因为每辆卡车所能运载的货物量是有限的,如果货物无法在一辆卡车上全部装载完毕,就必须使用多辆卡车来执行这项任务。在网络世界里也是同样的道理,因为不同的网络实体层技术,其每次所能承载的数据量不同。例如,光纤为4352 个字节,而以太网为1500 个字节,因此,数据在传输过程中,必须先被分解成一个个的小碎片才能被传输,而数据传输过程是一层层地由上往下传送。以图 1-2 为例,当使用者在计算机上运行某一应用程序( 如 MSN) 时,该应用程序一定会先定义一种数据交换方法( 应用层通信协

2、议) ,接着必须确定数据传输方式,例如, 数据在传输过程中是不可丢失或者错误的,那么就需要使用TCP作为数据传输的方法( 传输层通信协议) ;接着,为了能将数据正确地传输到目的端,我们使用网络上每台计算机唯一的识别码IP 地址,作为发送端和接收端的地址,但由于IP 地址是属于逻辑信息,无法以光电信号呈现,而实体层的寻址方式是用MAC 地址来识别 ( 假设实体层是以太网) ,因此, 当数据发送到实体层时, 会在该数据中附加上发送端和接收端的MAC 地址,这样便可以将数据传输到正确的目的地。图 1-2 数据包的传输我们使用 Fedora Core 内置的 Wireshark软件来截取网络上所传输的

3、数据包,即可了解整个数据包传输的过程,如图 1-3 所示。 以图 1-3 中编号 6 的数据包为例, 中间的窗体部分就是数据包的结构,其结构分别如下:Frame6/Ethernet II:实体层。Internet Protocol:网络层。Transmission Control Protocol:传输层。Hypertext Transfer Protocol:应用层。图 1-3 Wireshark截取的数据包接下来继续深入探讨每层的内容及用途。首先介绍应用层,当我们把应用层的结构展开后,即可看到整个应用层的数据内容,如图1-4 所示。从数据内容中可以看到,客户端使用HTTP1.1 协议中的G

4、ET方法 . ,去获取 Web服务器根目录的HTML文档;接下来要选择一种数据传输方法,将这些数据正确地传输到目的地,因为HTTP的数据包是不允许有任何一个包丢失的,所以我们选用TCP协议来传输这个数据包,而这个数据包随即被加上一个TCP 包头,以表明这个数据包是要使用TCP协议来传输的。(点击查看大图)图1-4 数据包的内容图 1-5 是 TCP层的数据内容, 我们称为 TCP包头, 从 TCP包头中可以看到两个很重要的内容:“Source port :1857(1857) ”及“ Destination port :http(80)”,这两个字段. 表示发送端计算机使用TCP 端口 185

5、7 连接到目的计算机的TCP端口 80。(点击查看大图)图1-5 TCP 包头的内容在选择好数据传输方法后,接下来需要对数据包进行定位操作,而这个定位操作在IP 层中完成,请参见图1-6。图 1-6 是 IP 包头的数据内容,其中最重要的是“Source :192.168.2.10(192.168.2.10)”及“ Destination:202.43.195.13(202.43.195.13)”这两个字段 . ,它们表示这个数据包是由192.168.2.10这台计算机所发送出来的,而接收端的计算机地址是202.43.195.13。有了这两个数据之后,就可以在网络上正确地传输数据包了。(点击查

6、看大图)图1-6 IP包头的内容1.2 数据包传输(2)不过,这样就可以通过网络传输数据包了吗?当然是不行的。请考虑一个问题,IP 是一个逻辑概念, 而数据在网络上是以光电信号来传输的,因此,我们必须在数据包上标明“实体层” 的地址 ( 在以太网实体层的地址是以太网网卡地址Media Access Control Address ,MAC) ,请参见图1-7。在网络层处理完数据包后,即将数据包送往实体层并加上MAC 地址,图中“ Destination:00:11:22:33:44:55”以及“ Source:00:0f:b0:93:b2:7d”即为 MAC 地址. ,它们分别代表该数据包是由

7、哪一个网卡发送出来的,以及要发送给哪一个网卡。有了这些完整的机制之后,就可以在网络上正常传输数据包了。(点击查看大图)图1-7 以太网数据包包头的内容在了解了以上各层包头的数据内容后,你是否对整个TCP/IP 网络模型有了更进一步的了解呢?或许你已经发现了一个不合理之处,例如,当我们运行ping 命令去测试网络上一台计算机时, ping 的明明是 IP 而不是 MAC 地址,为什么本地计算机会知道对方计算机IP与 MAC 地址的对应关系呢?如果不知道对方的MAC 地址,而实体网络又是以太网,那么网络不就不能连通了吗?没错!在以太网上, 如果没有对方计算机的MAC 地址, 确实是无法连通的,可以

8、使用什么机制来解决这个问题呢?ARP通信协议IP 地址和 MAC 地址 (MAC是一组烧录在网卡上的号码,而且MAC 地址理论上是不会重复的) 都是网络上唯一的标识,在Linux 系统中,可以使用ifconfig eth0 命令来查看IP 地址及 MAC 地址,请参考示例1.2 。示例 1.2 查看网卡卡号或许你会认为既然有了MAC 地址,为什么还需要IP 地址呢?这是因为实体层网络技术众多, 且每种技术都有其存在的价值。例如, 在企业内我们会选用以太网作为实体层传输数据的介质, 若是在两栋距离约一、两百米的建筑物之间,则可以选用光纤作为传输介质,如果要将台北和高雄分公司的网络连接起来,那就会

9、选用Frame Relay( 帧中继 ) 。MAC 地址是以太网的地址形式,在其他网络实体层技术中都会有其特有的地址形式,所以请注意: “MAC地址只在单一以太网上有效,因此 MAC 地址是不会跨越路由器设备的”, 也因此,当初 TCP/IP网络模型并没有定义实体层技术一定要使用哪一种。了解这些概念后,让我们来看看传输数据的两台主机是如何获取到对方网卡上的MAC地址的。 首先启动两台Linux 主机, 并在其中一台主机打开Wireshark数据包截取软件,接着使用 ping 命令测试另一台主机,即可截获到如图1-8 的内容。以第三个数据包为例,该数据包是由10.0.1.203主机发送出来的,

10、目的端主机是10.0.1.200, Protocol标识为 ICMP协议,而数据栏内显示此为一个ICMP的请求包,也就是 10.0.1.203主机去 ping 10.0.1.200这台主机。接着,第四个数据包就是10.0.1.200主机应答给10.0.1.203主机的 ICMP数据包。我们因此可以推断,10.0.1.203这台主机共发送了四次ICMP请求包给 10.0.1.200主机。(点击查看大图)图1-8 Wireshark截取 ARP数据包你或许已经发现, 为什么在 ICMP数据包发送之前会出现两个ARP协议数据包呢?没错,这就是我们要讨论的关键,因为当两台主机第一次交换数据时,由于彼此

11、都不知道对方的MAC 地址是什么,只有发送端主机知道目的端主机的IP 是多少,因此,发送端会在网络上发出一个ARP的请求数据包, 请参考图1-9 。 从图 1-9 中可以看出, ARP的请求数据包是 “广播”包( 因为 Dst MAC 为 ff:ff:ff:ff:ff:ff), 因此,整个网络上的主机都会收到该数据包。(点击查看大图)图1-9 RP 请求数据包的内容接着来分析这个ARP请求数据包的内容,由于接收端的MAC Address 是未知的,因此Target MAC Address 内容为 00:00:00:00:00:00,但接收端的IP 是已知的,所以Target IP Addres

12、s 内容为 10.0.1.200, 而发送端的信息都是已知的,因此该数据包的Send MAC Address内容为 00:14:a4:32:65:12、 Send IP Address 内容为 10.0.1.203。 该数据包是属于广播包,因此网络上的所有主机都会收到该数据包,但只有 10.0.1.200这台主机会处理这个数据包,因为该数据包内容中标明接收端IP 应该是 10.0.1.200,如此就等于告诉10.0.1.200这台主机,发送端的IP 为 10.0.1.203,且 MAC 地址为 00:14:a4:32:65:12。在接收端成功取得发送端的MAC 地址及 IP 地址对应的关系之后

13、, 接收端随即会给发送端返回一个ARP的应答数据包,请参见图1-10。我们从图1-10 中看到该数据包的Dst 不再是广播数据包了, 因为该字段中清楚注明这个数据包是要给哪台主机的,而数据包的内容也清楚记录着接收端及发送端所有IP 地址及 MAC 地址的对应状态, ARP数据包如此一来一往,即可交换两台主机的MAC 地址信息。(点击查看大图)图1-10 ARP 应答数据包的内容1.3 TCP 、UDP及 Socket 的关系了解数据在网络中的传输方式之后,接着来研究传输层中的另一个重要标记端口(Port)。端口在传输层中是一个很重要的概念,我们之所以能够让一台主机同时运行多个服务, 都要归功于

14、端口这个概念。在开始讨论端口之前, 我们来了解一下什么是套接字(Socket)。Socket 是指一个上面有很多“洞”的东西,比方说,计算机主板上CPU的插座、我们称之为 Socket 478或 Socket939 等,而 Socket 上面的这些洞,则称为端口。在OS的网络系统中会有两个Socket ,分别是TCP Socket 及 UDP Socket ,Socket 上各有 65 536 个洞,由 0 开始算起,其范围为065 535 ,我们称其为Port 0Port 65 535。端口的作用是什么呢?以图1-11 为例,图的左边是客户端,右边是服务器端,我们假设服务器端主机上运行了We

15、b 、SSH及 DNS三项服务。 在 TCP/IP 的网络规范中, 当一个网络应用程序运行起来时,都会占用一个端口,如服务器端的Web服务启动时,即会占用TCPSocket 中的端口80,我们简称为TCP Port 80 ,而 SSH服务是 TCP Port 22 、DNS服务则是 UDPPort 53 ,因此,我们可以说TCP Port 80代表 Web服务这一个程序,TCP Port 22代表 SSH服务这个程序,而UDP Port 53代表 DNS服务这个程序。(点击查看大图)图1-11 TCP 、UDP及端口的关系另外在客户端部分,我们假设客户端启动了浏览器、SSH客户端及DNS客户端

16、这三个网络应用程序。同样在TCP/IP 的规范中,当客户端的网络应用程序启动时,也会占用某一个端口。如图 1-11 所示,我们假设浏览器使用TCP Port 2099、 SSH客户端使用TCP Port 2088,DNS 客户端则使用UDP Port 5555 。因此,我们也可以说TCP Port 2099代表浏览器这一个应用程序, TCP Port 2088代表 SSH 浏览器这个应用程序,而UDP Port 5555 则代表着DNS客户端这个应用程序。最后,让我们来看看端口存在的重要性,假设客户端的浏览器想向服务器端的Web服务传输数据,那么客户端会生成一个数据包并发送到服务器端,我们假设客户端的IP 为10.0.1.219、服务器端的IP 为 202.43.195.52,该数据包的内容就如图1-12 所示。首先,数据包内必然会记录包的“来源”及“目的”。如图中. 标记的部分就是数据包的来源与目的地址, 但这两个数据只能表明来源端及目的端,并无法说明该数据包要发送到服务器端的什么地方,不过,TCP包头内的信息将会标明包的去处。在.所标记的部分即标明了数据包的去处,因此,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号