数据链路层(MAC)、网络层(IP)、传输层(TCP/UDP)抓包分析

目录

  • OSI七层模型
  • 数据包逐层封装头部
  • 抓包分析
    • 数据包概况
    • 数据链路层抓包
    • 网络层抓包(IP协议抓包)
    • UDP抓包
    • 数据负载抓包
  • Linux cooked-mode capture

OSI七层模型

OSI模型(OSI model),开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI)。
抓包通常抓取数据链路层、网络层、传输层的包。
数据链路层(MAC)、网络层(IP)、传输层(TCP/UDP)抓包分析_第1张图片

数据包逐层封装头部

OSI主要关注5层,数据从上至下逐级封装,加入每层的头部信息,在物理层转换为比特率发送;
接收端使用逆向顺序把数据逐级解封装,发送给应用层。
数据链路层(MAC)、网络层(IP)、传输层(TCP/UDP)抓包分析_第2张图片

抓包分析

linux下使用tcpdump抓包,抓取指定网卡,端口为50005 的包,保存到123.pcap,抓包完成后使用wireshark打开分析。

sudo tcpdump -i ens33 port 50005 -w 123.pcap -vvvv

下面抓一个UDP包进行分析。
TCP抓包分析看这里:https://blog.csdn.net/weixin_40355471/article/details/131187114?spm=1001.2014.3001.5502
在这里插入图片描述

数据包概况

点击第二条记录,wireshark分析抓包的第一条信息,是整个包的信息概况:
数据链路层(MAC)、网络层(IP)、传输层(TCP/UDP)抓包分析_第3张图片

数据链路层抓包

数据链路层头部共14个字节,前6字节是目的MAC地址,随后6字节是源MAC地址,最后2字节是以太网帧所携带的上层数据类型:

IPv4: 0x0800
ARP:0x0806
PPPoE:0x8864
802.1Q tag: 0x8100
IPV6: 0x86DD
MPLS Label:0x8847

数据链路层(MAC)、网络层(IP)、传输层(TCP/UDP)抓包分析_第4张图片
通常第二条是数据链路层抓包,分别是目的MAC,源MAC,数据类型。
在这里插入图片描述
转换为16进制。

00 0c 29 59 de c5 00 0c 29 66 95 33 08 00   

网络层抓包(IP协议抓包)

数据传输网络层使用IP协议。

IP指网际互连协议,Internet Protocol的缩写,是TCP/IP体系中的网络层协议。实现大规模、异构网络的互联互通;分割顶层网络应用和底层网络技术之间的耦合关系。IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。

IP数据包包头:20个字节。
数据链路层(MAC)、网络层(IP)、传输层(TCP/UDP)抓包分析_第5张图片

第1个字节(45) ,前4位4表示的是IP协议的版本,即IPv4;后4位,IHL(Internet Header Length 报头长度),表示IP报文头部按32位字长(32位,4字节)计数的长度,也即报文头的长度等于IHL的值乘以4。
第2个字节 是区分服务。
第3,4个字节 是指首部和数据之和的长度,即 IP数据包包头和IP数据之和,不包括以太帧头部的字节
第5,6个字节 是一个数据报被分片后的标识,便于正确的重装原来的数据报。
第7,8个字节 分前3位为标志位和后13位为片偏移,其中标识位只有两位有意义。
第9个字节 表示的是数据报在网络中的寿命。
第10个字节 指出数据报携带的数据时使用的协议类型(01表示ICMP协议; 06表示TCP协议; 11表示UDP协议)。
第11,12个字节 表示首位检验和,对数据报的保留与丢弃进行判别。
第13,14,15,16个字节 表示发送者的IP地址(源IP)。
第17,18,19,20个字节 表示接收者的IP地址(目的IP)。

抓包分析:
数据链路层(MAC)、网络层(IP)、传输层(TCP/UDP)抓包分析_第6张图片

导出16进制。

45 00 00 26 55 df 40 00 40 11 d3 20 c0 a8 48 32 c0 a8 48 44

UDP抓包

UDP,用户数据报协议(User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。

udp头部格式比较简单。
数据链路层(MAC)、网络层(IP)、传输层(TCP/UDP)抓包分析_第7张图片

源端口号:发送方端口号。
目标端口号:接收方端口号。
包长度:整个UDP数据报的长度 = 报头+载荷。
校验和:检测UDP数据(包含头部和数据部分)报在传输中是否有错,有错则丢弃。

数据链路层(MAC)、网络层(IP)、传输层(TCP/UDP)抓包分析_第8张图片

导出16进制。

c3 55 b7 1f 00 12 69 ce

数据负载抓包

在这里插入图片描述
导出16进制,转换为十进制,对照ASCII 码表,就是hello back。

68 65 6c 6c 6f 20 62 61 63 6b

ASCII 码表:

Linux cooked-mode capture

Wireshark分析抓包时,数据链路层显示Linux cooked-mode capture,这是Linux上libpcap所使用的伪协议,因为不是所有的网卡接口都具有相同的链路层协议。抓包时不指定网卡会出现(tcpdump -i any)。

数据链路层(MAC)、网络层(IP)、传输层(TCP/UDP)抓包分析_第9张图片

转换成16进制如下:

00 00 00 01 00 06 c4 70 ab fc 1b a9 00 00 08 00

前6字节代表上图中的前三项,随后6字节是源MAC地址,后面2字节全0未使用,最后2字节0800代表以太网帧所携带的上层数据类型。

你可能感兴趣的:(开发知识,macos,tcp/ip,udp)