抓包与分析

作业目的
(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文档提交本次作业报告。

(四)实现过程

  1. 数据包的捕获
  • 在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

可见网络是分层构成的,由低到高,分别为物理层,数据链路层,网络层,传输层,应用层。

  1. 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]

  1. 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地址

  1. 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]

  1. 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

  1. ICMP首部各部分所占字节数

抓包与分析

 图 14

从图中可以看出,ICMP报文首部是被封装在IP数据报的数据部分,而在ICMP首部前面仍需增加IP首部,即

IP首部

ICMP首部

上层数据部分

  • 小结

通过头部信息可以看出,ping命令终端所发送的数据帧在传输层被封装为ICMP数据包,到网络层被封装为IP数据包,数据链路层使用的是Ethernet II协议进行封装,最终在物理层转化为二进制信号发送出去,并且此过程中没有应用层协议。

  1. 总结

执行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. 数据链路层
    数据链路层在物理层提供的服务的基础上向网络层提供服务。数据链路层的作用:
    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. 网络层
    在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。
    主要内容有:
    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个字节

  1. 小结

可见,数据链路层数据包报头和网络层数据包报头有很大不同,就比如数据链路层的源地址和目的地址存放的是6个字节的MAC地址;而网络层存放的是4个字节的IP地址,而这些区别取决于网络层与数据链路层面临问题不同作用功能不同,采用的协议不同

上一篇:通过matlab程序编写电动汽车蒙特卡洛模型,得到汽车行驶里程的概率分布曲线和充电功率曲线


下一篇:iOS safari 苹果手机如何阻止页面弹性“橡皮筋效果”?