(一)作业目的
(1)了解网络通信的分层实现过程,了解不同层次PDU的逐层封装与解封过程;
(2)了解数据通信的过程,进一步认知协议的构成与通信过程,进而对TCP/IP分层体系结构有更深刻的了解。
(二)作业内容
1. 在局域网范围内从协议层面分析ping命令的执行过程,包括所使用协议,以及不同层级的数据包封装与解封的过程。
2. 访问www.ujs.edu.cn网站,分析其中所使用的协议,以及数据包的逐层封装与解封过程。
3. 思考在数据链路层的数据包与网络层数据包的异同,包括包长度和数据构成等,并进一步思考为何会存在这些区别?
(三) 作业要求
(1)能够正确捕捉ping命令执行过程中所产生的数据包,并逐层分析其构成,进而了解数据包的封装与解封过程;
(2)能够正确捕捉访问www.ujs.edu.cn网站过程所产生的相关数据包,分析出其所使用的协议,以及各协议的访问流程;
(3)能够正确分析数据链路层的数据包与网络层数据包的异同。
(4)了解并熟悉常见的抓包工具,例如Wireshark、Sniffer等,熟悉以太网数据帧和IP数据包的结构
(5)以PDF文档提交本次作业报告。
(四)实现过程
- 数据包的捕获
- 在windows命令行输入“ipconfig-all”获取本机的MAC地址和DNS服务器地址
图 1
本机的IP地址为:192.168.1.100
本机的MAC地址为:C8-B2-9B-F4-80-1C
DNS域名服务器地址为:8.8.8.8
- 在windows命令行输入“arp -a”获取本机的高速缓存。
图2
- 打开Wireshark进行抓包分析
图3
NO:代表数据包编号
Time:在Wireshark启动的多长时间内抓到
Source:来源IP地址
Destination:目的IP地址
Protocol:协议
Length:数据包的长度
Info:数据包的信息
(2)数据包的层次结构
选中一个数据包查看它的详细信息,可以看到Packet Details上显示出该数据包的4个层次结构信息,每层含义如下:
Frame:物理层数据帧概况
Etherent II:数据链路层帧头部信息
Internet Protocol Version 4:网络层IP包头部信息
Transmission Control Protocol:传输层数据帧头部信息
图4
可见网络是分层构成的,由低到高,分别为物理层,数据链路层,网络层,传输层,应用层。
- TCP/IP协议族
图 5
应用层常用的协议有:HTTP,DNS协议
传输层常用的协议有:TCP和UDP协议
网络层常用的协议有:IP,ICMP,IGMP协议
数据链路层常用的协议有:ARP,以太网协议
(4)数据包的封装过程
数据封装一般分五层,第一层是应用层协议的数据,第二层分别是TCP/UDP封装,第三层IP封装,第四层以太网封装,最后转成二进制的物理报文。
图 6
- 传输层数据帧头部信息
Transmission Control Protocol, Src Port: 443, Dst Port: 51282, Seq: 1, Ack: 1, Len: 0
Source Port: 443
#源端口
Destination Port: 51282
#目的端口
[Stream index: 1]
[TCP Segment Len: 0]
Sequence Number: 1 (relative sequence number)
Sequence Number (raw): 413129997
#序列号:确保数据可靠传输的一个唯一值。TCP使用序列号追踪每个数据段的传输情况
[Next Sequence Number: 1 (relative sequence number)]
Acknowledgment Number: 1 (relative ack number)
Acknowledgment number (raw): 3874393895
#确认号:接收端发送,提示发送端下一次该发的数据在整个文件中的序号。接收端收到后,会把这个序号之前的数据从缓存中删掉。
0101 .... = Header Length: 20 bytes (5)
#头部长度
Flags: 0x010 (ACK)
#标志字段:发起连接的数据包,连接即握手进程
Window: 2053
[Calculated window size: 2053]
[Window size scaling factor: -1 (unknown)]
Checksum: 0x9add [unverified]
#效验和:判断接受数据的完整性。可以让通信方确认TCP数据段中的内容是否发生变化了。
[Checksum Status: Unverified]
Urgent Pointer: 0
#紧急指针:只有当 URG 标志置1时紧急指针才有效。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。
[Timestamps]
- TCP首部各部分所占字节数:
图 7
- 网络层帧数据包头部信息:
Internet Protocol Version 4, Src: 52.176.224.96, Dst: 192.168.1.100
0100 .... = Version: 4
#网际协议为IPV4
版本:4位,值为0100。目前存在两种版本IP协议:
IPv4和IPv6,版本号分别为4和6, 这是IPv4首部格式。
.... 0101 = Header Length: 20 bytes (5)
#IP包头部长度20
首部长度:4位,首部长度字段以32位字为单位,即4个字节。
字段最小值为5,用于没有可选项的情况,20个字节。
Differentiated Services Field: 0x04 (DSCP: LE, ECN: Not-ECT)
#差分服务字段
服务类型:8位,用于指定IP分组的优先级、延迟、
吞吐率和可靠性要求及各种要求的组合。
Total Length: 40
#IP包总长度40
总长度:16位,以字节为单位给出包括首部和数据的IP分组的长度,首部
长度是可变的,数据长度也是可变的,最大长度值为65535字节。
Identification: 0xf232 (62002)
#标识字段
标识:16位,标识字段用于标识属于同一IP分组的数据片,属于同一IP分
组的数据片具有相同的标识字段值。
Flags: 0x40, Don't fragment
#标志字段
标志:3位,其中一位DF,一位MF,一位保留DF=1,不允许分片,MF=0,最后一片。
Fragment Offset: 0
#偏移量
偏移量:13位,以8个字节为单位给出当前数据片在原始IP分组中的位置
Time to Live: 106
#生存期TTL
生存时间:8位,用于限制IP分组在网络中存在时间的一个计数器
目前,该字段只是作为最大跳数使用,初始值由发送终端设定
Protocol: TCP (6)
#此包封装的上层协议为TCP
协议:8位,用于表示数据所属的高层协议类型,告诉网络层把该IP分组
送给哪一个进程处理。
Header Checksum: 0x4778 [validation disabled]
#头部数据的校验和
首部检验和:16位,对首部用检验和算法计算出的检错码,用于检测首部
传输过程中发生的错误,每经过一个路由器计算机一次。
[Header checksum status: Unverified]
Source Address: 52.176.224.96
#源IP 地址
Destination Address: 192.168.1.100
#目标IP地址
- IP首部各部分所占字节数:
图8
- 数据链路层帧数据包头部信息:
Ethernet II, Src: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b), Dst: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c)
Destination: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c)
#目标MAC地址
Source: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b)
#源MAC地址
Type: IPv4 (0x0800)
#网际协议为IPV4
- 小结
通过头部信息可以看出,该数据帧在传输层被封装为TCP数据包,到网络层被封装为IP数据包,数据链路层使用的是Ethernet II协议进行封装,最终在物理层转化为二进制信号发送出去,并且此过程中没有应用层协议。
(5)访问 www.ujs.edu.cn 分析数据包
1.打开命令行ping www.ujs.edu.cn
图 9
2.在WireShark中进行捕获,并在过滤器中输入“dns”获取协议为DNS的数据列表,可以看到ping过程中终端向DNS服务器发送了1次域名请求响应,DNS服务器回复了1次IP回复报文。
图10
- 终端向DNS服务器发送问题请求:
Domain Name System (query)
Transaction ID: 0xa418
#DNS ID号
Flags: 0x0100 Standard query
#标志
Questions: 1
#问题计数
Answer RRs: 0
#回答计数
Authority RRs: 0
#域名服务器计数
Additional RRs: 0
#额外计数
Queries
ujs.edu.cn: type A, class IN
Name: ujs.edu.cn
#请求的域名
[Name Length: 10]
[Label Count: 3]
Type: A (Host Address) (1)
#域名类型
Class: IN (0x0001)
#地址类型
[Response In: 9362]
- DNS服务器向终端返回IP地址
Domain Name System (response)
Transaction ID: 0xa418
Flags: 0x8180 Standard query response, No error
Questions: 1
Answer RRs: 1
Authority RRs: 0
Additional RRs: 0
Queries
Answers
ujs.edu.cn: type A, class IN, addr 202.195.160.7
#返回www.ujs.edu.cn的IP地址
[Request In: 9361]
[Time: 0.006913000 seconds]
- DNS首部各部分所占字节数:
图11
观察DNS数据包在网络层的报头信息:
图 12
DNS数据包在传输层采用的UDP协议。
- 小结
通过头部信息可以看出,该数据帧在应用层被封装为DNS数据包,在传输层被封装为UDP数据包,在网络层被封装为IP数据包,数据链路层使用的是Ethernet II协议进行封装,最终在物理层转化为二进制信号发送出去。
3.在WireShark中进行捕获,并在过滤器中输入ip.addr == 202.195.160.7获取待分析数据列表,可见终端获取域名www.ujs.edu.cn 的IP地址后,向其发送了4条请求响应,并收到其4次回复。
图 13
点击其中一个数据报文,观察其详细信息。
- 传输层数据报头信息:
Internet Control Message Protocol
Type: 8 (Echo (ping) request)
Code: 0
Checksum: 0x4d4c [correct]
[Checksum Status: Good]
Identifier (BE): 1 (0x0001)
Identifier (LE): 256 (0x0100)
Sequence Number (BE): 15 (0x000f)
Sequence Number (LE): 3840 (0x0f00)
[Response frame: 199]
Data (32 bytes)
- 网络层数据报头信息:
Internet Protocol Version 4, Src: 192.168.1.100, Dst: 202.195.160.7
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
Total Length: 60
Identification: 0xdc8b (56459)
Flags: 0x00
Fragment Offset: 0
Time to Live: 128
Protocol: ICMP (1)
#传输层/网络层协议为ICMP
Header Checksum: 0x0000 [validation disabled]
[Header checksum status: Unverified]
Source Address: 192.168.1.100
#源IP地址
Destination Address: 202.195.160.7
#目标IP地址
- 数据链路层数据报头信息:
Ethernet II, Src: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c), Dst: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b)
Destination: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b)
#目标MAC地址
Source: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c)
#源MAC地址
Type: IPv4 (0x0800)
#网际协议为IPV4
- ICMP首部各部分所占字节数
图 14
从图中可以看出,ICMP报文首部是被封装在IP数据报的数据部分,而在ICMP首部前面仍需增加IP首部,即
IP首部 |
ICMP首部 |
上层数据部分 |
- 小结
通过头部信息可以看出,ping命令终端所发送的数据帧在传输层被封装为ICMP数据包,到网络层被封装为IP数据包,数据链路层使用的是Ethernet II协议进行封装,最终在物理层转化为二进制信号发送出去,并且此过程中没有应用层协议。
- 总结
执行Ping www.ujs.edu.en命令首先终端会访问DNS服务器询问域名的IP地址,DNS服务器收到询问请求后发送包含域名IP信息的DNS数据包,此过程中应用层协议为DNS,传输层协议为UDP,网络层协议为IP。终端获得www.ujs.edu.cn的IP地址后,再向其寻求访问,www.ujs.edu.cn收到访问请求后发送回复数据帧,此过程中传输层/网络层协议为ICMP,在网络层封装为IP数据包。
(6)数据链路层的数据包与网络层数据包的异同
-
数据链路层
数据链路层在物理层提供的服务的基础上向网络层提供服务。数据链路层的作用:
1、IP数据模块发送和接收IP数据报;
2、为ARP模块发送ARP请求和接收ARP协议;
3、为RARP发送RARP请求和接受RARP应答。
以太网协议数据报头:
Ethernet II, Src: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c), Dst: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b)
#以太网协议版本,源地址:网卡地址,目的地址:网卡地址
Destination: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b)
#目的地址:网卡地址————占6个字节
Source: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c)
#源地址:网卡地址————占6个字节
Type: IPv4 (0x0800)
#帧内封装的上层协议类型为IPV4(十六进制码0800)————占2个字节
-
网络层
在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。
主要内容有:
1、虚电路分组交换和数据报分组交换
2、路由选择算法
3、阻塞控制方法
5、综合业务数据网(ISDN)
6、异步传输模式(ATM)及网际互连原理与实现。
ICMP数据报头:
Internet Protocol Version 4, Src: 192.168.1.100, Dst: 202.195.160.182
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
#IPV4协议————占1个字节
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
Total Length: 60
#IP首部长度————占2个字节
Identification: 0xdc8b (56459)
#差分服务字段————占2个字节
Flags: 0x00
#标记字段————占1个字节
Fragment Offset: 0
#偏移量————占1个字节
Time to Live: 128
#生存期————占1个字节
Protocol: ICMP (1)
#封装的上层协议为ICMP————占1个字节
Header Checksum: 0x0000 [validation disabled]
#效验码————占2个字节
[Header checksum status: Unverified]
Source Address: 192.168.1.100
#源IP地址————占4个字节
Destination Address: 202.195.160.182
#目标IP地址————占4个字节
- 小结
可见,数据链路层数据包报头和网络层数据包报头有很大不同,就比如数据链路层的源地址和目的地址存放的是6个字节的MAC地址;而网络层存放的是4个字节的IP地址,而这些区别取决于网络层与数据链路层面临问题不同,作用功能不同,采用的协议不同。