前言
最近计网老师要求参照课本中的PPPoE协议,分析自己用wireShark抓取的ftp用户名报文,分析帧结构,解析报文内容。
计算机网络体系结构
分析报文,我们就需要回头认真地了解计算机网络体系结构。
(主要是因为忘了)
CNI_HKQ.jpg" title="[}9[L$G%~%1MMTCNI_HK
Q.jpg">
计算机网络是个非常复杂的系统。
设想一下:连接在网络上的两台计算机要互相传送文件。我们需要做什么?
显然,在这两台计算机之间必须有一条传送数据的通路。
但这还远远不够。我们还有很多工作需要去完成:
- 计算机保证要数据能在这条通路上正确发送和接收
- 要告诉网络如何识别接收数据的计算机。
- 必须查明对方计算机是否已开机,并且与网络连接正常。
- 必须弄清楚,对方是否已做好接收文件和存储文件的准备工作。
- 若计算机的文件格式不兼容,则至少其中一台计算机应完成格式转换功能。
- 对出现数据传送错误、重复或丢失,网络中某个结点交换机出现故障等,应采取措施保证对方能够收到正确的文件。
为了设计和解决这些问题,我们最好把这些庞大而复杂的问题转换成小的问题。也就是分层
如何把这些问题分层,形成一种体系结构呢?
- 国际标准化组织于1977年开始研究该问题,最后提出了一个 OSI标准,但可惜的是,由于实现复杂,效率较低,制定周期长等问题,并没有得到广泛的应用。并且在当时,基于TCP/IP的互联网已在全球大范围地成功运行,OSI标准的产品并没有多少人生产。
- 而另一个标准:TCP/IP标准。如今规模最大、覆盖全球的互联网应用的的就是TCP/IP标准。成为了事实上的国际标准。
让我们来看看这两种标准是如何分层的:
OSI分为图中的七层协议,TCP/IP标准分为图中的四层协议。
OSL的七层协议体系结构的概念清楚,理论也较完整,但它既复杂又不实用。
TCP/IP体系结构则不同,但它现在却得到了非常广泛的应用。TCP/IP是一个四层
体系结构, 它包含应用层、运输层、网际层和网络接口层(用网际层这个名字
是强调这一层是为了解决不同网络的互连问题)。
不过从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层并没有什么具体内容。
因此在学习计算机网络的原理时往往采取折中的办法,即综合OSI和TCP/IP的优点,采用一种只有五层协议的体系结构。
数据流动
OK, 有了两台计算机之间传输数据的体系结构之后,让我们开始传输数据吧。
传输开始。 我的计算机向小明的计算机开始传送数据。
于是我计算机的一个应用进程 AP1 尝试 向小明计算机的一个应用进程 AP2 传输数据。
我的传输
此时我要传输的数据按照五层协议自顶向下流动。
分别通过应用层,运输层,网络层,数据链路层,物理层。
- 应用层: 数据经过应用层时,它给数据添加了必要的控制信息。应用层定义了应用进程间交互的规则。 这些规则有HTTP协议、DNS协议、SMTP协议等
- 运输层: 运输层收到应用层传给它的信息后,添加了自己的控制信息,也传给了下一层。运输层作用是向上面的运输层提供通信服务。协议有TCP,UDP。
- 网络层: 网络层将运输层传给它的报文段或用户用户数据报封装成分组或包进行传输,分组的数据叫做IP数据报。协议使用的是IP协议。
- 数据链路层:数据链路层将网络层传下来的IP数据报封装成帧,每一帧都包括数据和必要的控制信息,使接受端能够知道哪一个比特开始,哪一个比特结束。并提供纠错功能。
- 物理层: 物理层将数据比特流,通过物理传输媒体,如电缆等传输出去。
小明的接收
数据比特流通过物理传输媒体到了小明计算机这后,通过物理层到应用层,由下到上的层层操作,小明计算机的进程AP2就能接受到数据了。
分析FTP报文内容
这是用wireShark捕获到的报文内容。
对应的分层如图
Frame 物理层的数据帧
点击Frame后,底下亮起了所有的数据字节。它代表所有的字节。
利用捕获工具捕获到的是比特流,它被层层封装,共65byte。
Ethernet II: 数据链路层以太网帧头部信息
“地址”指的是mac地址,即硬件地址或物理地址。
- 目的地址占6byte,即小明mac地址为34:c9:3d:99:53:c7。
- 源地址占6byte,即本机的mac地址为:34:36:3b:d4:14:72。
- 0x0800即表示高层(网络层)使用IP数据报,利用IPv4协议, 占2byte.
以太网帧的结构如下:
你可能会问为什么没有图中的FCS?
答:
Wireshark 抓包前,在物理层网卡已经去掉了一些之前几层加的东西,比如前导同步码,FCS等等,之后利用校验码CRC校验,正确时才会进行下一步操作,这时才开始进行抓包,因此,抓包软件抓到的是去掉前导同步码、FCS之外的数据,没有校验字段。
IPV4 网络层
可以看到数据为:版本为IPv4,首部长度20byte。不使用区分服务。总长度51byte。标识为4,标志flag为0,不分片。片偏移为0。TTL为64,协议号为6,使用TCP协议。首部检验和没有确认。源ip192.168.1.13,目的ip为本机ip192.168.1.15。
TTL 字段用来限定该包可以在 Internet上传输多少跳(hops),一般该值设置为 64、128等。
TCP 运输层
可以看到数据为:源端口为50668,目的端口为21,序列号为1,确认号为1,标志位位0x018,设置了ACK和PSH标志位。 在
另外在捕获的包中,可以看到通过三次握手建立TCP连接。
应用层 FTP
这里应用层用的是FTP协议。数据内容非常简单,请求登陆USR, 账号为 soft
感想
在这次总结整理中对计算机网络结构体系有了更深的了解。想不到从应用层简单的数据到物理层需要添加这么多数据。
还是刚开始学习计算机网络,继续认真学习下去。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。