一.大作业目的
(1)了解网络通信的分层实现过程,了解不同层次PDU的逐层封装与解封过程;
(2)了解数据通信的过程,进一步认知协议的构成与通信过程,进而对TCP/IP分层体系结构有更深刻的了解。
二.大作业内容
- 在局域网范围内从协议层面分析ping命令的执行过程,包括所使用协议,以及不同层级的数据包封装与解封的过程。
- 访问www.ujs.edu.cn网站,分析其中所使用的协议,以及数据包的逐层封装与解封过程。
- 思考在数据链路层的数据包与网络层数据包的异同,包括包长度和数据构成等,并进一步思考为何会存在这些区别?
三.大作业要求
(1)能够正确捕捉ping命令执行过程中所产生的数据包,并逐层分析其构成,进而了解数据包的封装与解封过程;
(2)能够正确捕捉访问www.ujs.edu.cn网站过程所产生的相关数据包,分析出其所使用的协议,以及各协议的访问流程;
(3)能够正确分析数据链路层的数据包与网络层数据包的异同。
(4)了解并熟悉常见的抓包工具,例如Wireshark、Sniffer等,熟悉以太网数据帧和IP数据包的结构
(5)以PDF文档提交本次作业报告。
四.实现过程
(一)软件的安装
我下载的是wireshark软件
安装完成后打开界面如下:
(二)捕捉ping命令执行过程中产生的数据包
1用Wireshark观察ARP协议以及ping命令的工作过程:打开windows命令行,键入“ipconfig-all”命令获得本机的MAC地址和缺省路由器的IP地址。结果如下:
2.(1)用“arp -a”命令查看本机的arp高速缓存,结果如下:
(2)用“arp -d”命令清空本机的缓存,结果如下:
(3)执行命令:ping www.ujs.edu.cn ,观察执行后的结果并记录。图一是在命令行中实行ping命令的过程,
4.点击捕获,网站访问结束后停止即可。下面是 ping后WireShark软件自己对数据包进行捕捉,停止捕获后的界面
抓取若干数据包,对照理论所学数据包,辨别、分析数据包结构。
(1)TCP分析:一个TCP报文段分为首部和数据两部分。TCP报文段首部的前二十个字节是固定的,后面有4N个字节是根据需要而增加的选项。因此TCP的最小长度是20个字节。
(2)源端口和目的端口字段:各占两个字节,分别写入源端口号和目的端口号。在抓取的数据报中,源端口号和目的端口号的值分别是:80和5677
序号字段:占4个字节。序号范围是0到2^32-1 ,
共2^32个序号
(3)确认号字段:在四个字节,是期望收到对方下一个报文段的第一个字节的序号。
(4)数据偏移字段:占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。这个字段实际上是指出TCP报文段的首部长度。由于首部中还有长度不确定的选项字段。因此数据偏移字段是必要的。现在本字段的值是20,说明首部不包含选项字段。
(5)保留字段:占6位,保留为今后使用;
(6)窗口字段:占两个字节。窗口值是0到216-1之间的整数。窗口指的是发送本报文段的一方的接收窗口,而不是自己的发送窗口。本数据包中窗口字段的值是8212。
(7)校验和字段:占2个字节。校验和字段检验的范围包括首部和数据这两部分。
(8)紧急指针字段:占两个字节。紧急指针仅仅在URG=1时才有意义,它指出+选项字段:长度可变最长可达40个字节,当没有使用选项时,TCP的首部长度是20个字节。本数据包中没有选项字段。
5.网络分层构成
现在我以抓取www.ujs.edu.cn数据包为例,了解该数据包的层次结构。在输入过滤条件获取待分析数据包列表 ping命令后获得的IP地址,并在过滤器中输入ip.addr == 202.195.160.182,并出现以下情况:
此时在 Packet Details 面板上显示的息就是该数据包的层次结构信息。这里显示了 5 个层次,每个层次的含义如下:
Frame:该数据包物理层的数据帧概况。
Ethernet II:数据链路层以太网帧头部信息。
Internet Protocol Version 4:网际层 IP 包头部信息。
Transmission Control Protocol:传输层的数据段头部信息。
Hypertext Transfer Protocol:应用层的信息,此处是 HTTP 协议。
由此可见,Wireshark 对 HTTP 协议数据包进行解析,显示了 HTTP 协议的层次结构。
上图中所显示的信息从上到下分布在 3 个面板中,每个面板包含的信息含义如下:
(1)Packet List 面板:上面部分,显示 Wireshark 捕获到的所有数据包,这些数据包从 1 进行顺序编号。
(2)Packet Details 面板:中间部分,显示一个数据包的详细内容信息,并且以层次结构进行显示。这些层次结构默认是折叠起来的,用户可以展开查看详细的内容信息。
(3)Packet Bytes 面板:下面部分,显示一个数据包未经处理的原始样子,数据是以十六进制和 ASCII 格式进行显示。
同时,WireShark已经捕获完数据后,其格式如下:第一列是捕获数据的编号;第二列是捕获数据的相对时间;第三列是源地址, 第四列是目的地址;第五列是数据包的信息。选中第一个数据帧, 然后从整体上看看 Wireshark 的窗口,主要被分成三部分。上面部分是所有数据帧的列表; 中间部分是数据帧的描述信息;下面部分是帧里面的数据。
6.数据链路层的数据包与网络层数据包的异同
(1)数据链路层:
任意选中一帧,可以看到该帧所在的各层分组的头部如下,展开 Ethernet II 层,显示信息如下:
点开Ethernet II前面的>号,可以看到该帧在数据链路层的详细信息:
数据链路层以太网帧数据包头部信息
Ethernet II, Src: Giga-Byt_c8:4c:89 (1c:6f:65:c8:4c:89), Dst: Tp-LinkT_f9:3c:c0 (6c:e8:73:f9:3c:c0)
Destination: Tp-LinkT_f9:3c:c0 (6c:e8:73:f9:3c:c0) #目标MAC地址
Source: Giga-Byt_c8:4c:89 (1c:6f:65:c8:4c:89) #源MAC地址
Type: IP (0x0800)
(2)网络层:
在Wireshark的过滤器(filter)中输入http,按回车键进行过滤。过滤的结果就是和刚才打开的网页相关的数据包。
网络层IP数据包头部信息
Internet Protocol Version 4, Src: 192.168.0.104 (192.168.0.104), Dst: 61.182.140.146 (61.182.140.146)
Version: 4 #互联网协议IPv4
Header length: 20 bytes #IP包头部长度
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport)) #差分服务字段
Total Length: 254 #IP包的总长度
Identification: 0x5bb5 (23477) #标志字段
Flags: 0x02 (Don’t Fragment) #标记字段
Fragment offset: 0 #分的偏移量
Time to live: 64 #生存期TTL
Protocol: TCP (6) #此包内封装的上层协议为TCP
Header checksum: 0x52ec [validation disabled] #头部数据的校验和
Source: 192.168.0.104 (192.168.0.104) #源IP地址
Destination: 61.182.140.146 (61.182.140.146) #目标IP地址
通过头部信息可以看出,该帧在数据链路层使用的是Ethernet II协议,到网络层被封装为IP数据包,到传输层被封装为UDP数据包,没有应用层协议。总的来说数据链路层的数据包与网络层数据包的异同如下:
(一)数据链路层
数据链路层在物理层提供的服务的基础上向网络层提供服务。数据链路层的作用:
1、IP数据模块发送和接收IP数据报;
2、为ARP模块发送ARP请求和接收ARP协议;
3、为RARP发送RARP请求和接受RARP应答。
Ethernet II, Src: CompalIn_d7:16:dd (20:89:84:d7:16:dd), Dst: LcfcHefe_c2:30:05 (68:f7:28:c2:30:05) 以太网协议版本,源地址:网卡地址,目的地址:网卡地址
Destination: LcfcHefe_c2:30:05 (68:f7:28:c2:30:05) 目的地址:网卡地址
Address: LcfcHefe_c2:30:05 (68:f7:28:c2:30:05) 网卡地址
… …0. … … … … = LG bit: Globally unique address (factory default) 多点传送
… …0 … … … … = IG bit: Individual address (unicast) 本地管理地址
Source: CompalIn_d7:16:dd (20:89:84:d7:16:dd) 源地址:网卡地址
Address: CompalIn_d7:16:dd (20:89:84:d7:16:dd) 网卡地址
… …0. … … … … = LG bit: Globally unique address (factory default) 本地管理地址
… …0 … … … … = IG bit: Individual address (unicast) 多点传送
Type: IPv4 (0x0800) 帧内封装的上层协议类型为IP(十六进制码0800)
(二)网络层
在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。
主要内容有:
1、虚电路分组交换和数据报分组交换
2、路由选择算法
3、阻塞控制方法
4、X.25协议
5、综合业务数据网(ISDN)
6、异步传输模式(ATM)及网际互连原理与实现。
wireshark解析:
Internet Protocol Version 4, Src: 192.168.16.2, Dst: 192.168.16.1 互联网协议,源IP地址,目的IP地址
0100 … = Version: 4 互联网协议IPv4
… 0101 = Header Length: 20 bytes IP首部长度
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) 差分,服务字段
0000 00… = Differentiated Services Codepoint: Default (0) 区分服务模块
… …00 = Explicit Congestion Notification: Not ECN-Capable Transport (0) 源端设置以显示源端节点的传输协议
Total Length: 53 IP数据包的总长度
Identification: 0x3b6d (15213) 标志字段
Flags: 0x02 (Don’t Fragment) 标记字段
0… … = Reserved bit: Not set 保留不用
.1… … = Don’t fragment: Set 分片标志位,1表示分片,0表示不分片
…0. … = More fragments: Not set 最后一片标志位,0表示最后一片,1表示不是最后一片
Fragment offset: 0 分段偏移量
Time to live: 64 生存期
Protocol: TCP (6) 此包内封装的上层协议为TCP
Header checksum: 0x0000 [validation disabled] 头部数据的检验和
[Good: False] 数据完整
[Bad: False] 数据不完整
Source: 192.168.16.2 源IP地址
Destination: 192.168.16.1 目的IP地址
[Source GeoIP: Unknown]
[Destination GeoIP: Unknown]