什么是网络数据包:
是计算机在网络中传输的基本单位。它是一种数据的封装形式,包含源地址、目标地址、协议类型、数据长度等信息
数据包组成:
TCP/IP协议数据包,一般由应用层、传输层、网络层、数据链路层封装而成。
数据包封装:
-
应用层:数据被封装为应用层协议的数据。例如,HTTP 请求中包含了请求头和请求体,SMTP 邮件中包含了邮件内容等。
-
传输层:在传输层,应用层的数据被封装为传输层协议的数据段。常用的传输层协议有TCP和UDP。在封装时,会加入源端口和目标端口等控制信息。
-
网络层:在网络层,传输层的数据段被封装为网络层协议的数据包。常用的网络层协议是IP协议。在封装时,会加入源IP地址和目标IP地址,以及路由和分片等相关信息。
-
数据链路层:在数据链路层,网络层的数据包被封装为数据帧。例如,以太网帧是常见的数据链路层协议。在封装时,会加入源MAC地址和目标MAC地址等信息。
-
物理层:在物理层,数据链路层帧被封装为比特流,以便通过物理介质进行传输。
封装的顺序是自上而下,即从应用层开始逐层封装至物理层。
数据包解封装:
-
物理层:接收端将比特流转换为数据链路层帧。
-
数据链路层:在数据链路层,接收端将网络层数据包解封装为数据链路层帧,即还原为原始的以太网帧或其他数据链路层协议。
-
网络层:在网络层,接收端将数据链路层帧解封装为网络层数据包,即还原为原始的IP数据包。
-
传输层:在传输层,接收端将网络层数据包解封装为传输层数据段,即还原为TCP或UDP数据段。
-
应用层:在应用层,接收端将传输层数据段解封装为应用层协议的数据,即还原为原始的应用层数据。
解封的顺序是自下而上,即从物理层开始应用层结束。
四层协议各自作用:
数据链路层实现了网卡接口的驱动程序。
网络层实现了数据包的选路和转发。
传输层为两台主机上的应用程序提供端到端(end to end)的通信。
应用层负责处理应用程序的逻辑。
工作原理:
-
数据封装:当一个应用程序需要发送数据时,数据会被封装成一个或多个网络数据包。在传输层(如TCP或UDP)中,数据会添加传输层首部信息,包括源端口和目标端口等。然后,在网络层(如IP协议)中,数据包会添加网络层首部信息,包括源IP地址和目标IP地址等。这样,数据包就形成了一个完整的网络数据包。
-
路由选择:一旦数据包被封装好,它就会根据目标IP地址被发送到网络中。在这个过程中,路由器会根据路由表中的信息,确定数据包应该通过哪个路径进行传输。路由器会查找目标IP地址,并根据最优路由选择将数据包转发到下一个网络节点。
-
数据传输:一旦路由器确定了数据包的下一个节点,它就会将数据包发送到相应的目标节点。数据包会经过一系列的网络设备(如路由器、交换机等),通过不同的链路进行传输,直到到达目标设备。
-
数据解封:当数据包到达目标设备后,它会经过相反的过程进行解封。目标设备会根据数据包中的协议类型字段,确定如何处理数据。首先,网络层(如IP协议)会解析网络层首部信息,获取源IP地址和目标IP地址等信息。然后,传输层(如TCP或UDP)会解析传输层首部信息,获取源端口和目标端口等信息。最后,应用程序会接收到数据,并进行相应的处理。
分析:
网络数据包中包含了大量的信息,可以通过网络分析工具进行解析和分析。网络分析工具有Wireshark(大白鲨)、tcpdump、tshark等。
-
可以了解网络传输的细节和性能状况。
-
可以查看源地址和目标地址,了解数据的发送和接收方。
-
可以查看传输协议类型
-
可以查看数据包的大小、时间戳、传输延迟等信息,以及数据包的有效载荷(即实际传输的数据内容)。
-
可以检测网络问题、排查网络故障、进行性能优化等。
用途:
- 网络安全分析
可以通过分析数据包来检测和阻止网络攻击,如入侵检测、DDoS攻击等。
- 网络性能优化
可以分析数据包来识别网络瓶颈、优化网络拓扑、改善应用性能等。
- 协议分析
可以深入了解各种网络协议的工作原理、通信过程和数据格式。
抓包分析及应用:
-
发送方和接收方的IP地址和端口号:可用于确定网络通信的参与方,识别网络流量的来源和目标。可用于追踪攻击者的IP地址或确定通信双方的身份。
-
协议类型:可确定网络通信使用的协议类型,如TCP、UDP、ICMP等。这对于协议分析和网络安全分析非常有用,可用于检测恶意协议使用、识别不同协议的行为等。
-
数据包大小和传输延迟:可用于网络性能优化。通过分析数据包大小和传输延迟,可以确定网络传输的瓶颈,找到导致网络延迟的原因,并进行相应的优化。
-
数据包的时间戳:可用于分析网络流量的时间特征。通过时间戳,可以确定网络流量的峰值和低谷,识别网络中的高负载时段,进而进行网络规划和优化。
-
数据包的有效载荷(Payload):可用于分析传输的实际数据内容。这对于协议分析和漏洞分析非常有用。通过分析有效载荷,可发现网络中的漏洞,识别恶意软件传播特征,甚至还可以恢复被加密的通信内容。
-
协议头部和选项:可用于深入分析各种协议的工作原理和通信过程。通过分析协议头部和选项,可以了解协议的各个字段的含义和作用,进而实现协议分析、网络安全检测等目的。
抓包工具:
-
Wireshark:是一种开源的网络分析工具,具有强大的捕获和分析功能。它可以在各种操作系统上运行,并支持多种协议解析。
-
tcpdump:是一种命令行网络抓包工具,可用于捕获和显示网络数据包。它在各种操作系统上都有版本,并提供灵活的过滤选项。
-
tshark: 是 Wireshark 的命令行版本,具有类似的功能。它可以以文本或 JSON 格式输出捕获到的数据包,适用于自动化和脚本化的分析任务。
-
Fiddler:是一个用于捕获和分析 HTTP/HTTPS 流量的跨平台工具。它可以显示请求和响应的详细信息,并提供强大的过滤和调试功能。
-
Charles: 是一种用于捕获和分析 HTTP/HTTPS 流量的代理工具。它可以拦截和修改网络请求,并提供详细的请求和响应信息。
-
Burp Suite: 是一套用于渗透测试和应用程序安全评估的工具。它包括一个代理服务器,可用于捕获和修改网络流量,并提供丰富的分析和扫描功能。
-
NetworkMiner: 是一种网络分析工具,可以自动重组捕获到的数据包,并提取出其中的文件、图像和其他有用的信息。
-
Capsa:是一种专业的网络分析和诊断工具,具有强大的捕获和分析功能。它可以监控和分析实时的网络流量,并提供详细的统计信息和报告。
工具优缺点:
-
Wireshark:优:功能强大,支持多种协议解析。缺:对于非技术人员来说可能不太友好,需要一定的学习成本。
-
tcpdump:优:简单易用,适合快速抓包。缺:只提供命令行界面,不够直观。
-
tshark:是 Wireshark 的命令行版本,优:适合自动化和脚本化的分析任务。缺:对于非技术人员来说可能不太友好。
-
Fiddler:优:用于捕获和分析 HTTP/HTTPS 流量,具有强大的过滤和调试功能,适合开发人员和测试人员使用。缺:对于其他协议的分析支持较弱。
-
Charles:优:用于捕获和分析 HTTP/HTTPS 流量,具有强大的请求和响应信息显示,适合开发人员和测试人员使用。缺:对于其他协议的分析支持较弱。
-
Burp Suite:优:用于渗透测试和应用程序安全评估,具有强大的分析和扫描功能,适合安全测试人员使用。缺:对于非技术人员来说可能需要一定的学习曲线。
-
NetworkMiner:优:自动重组捕获的数据包,提取有用的信息,适合分析恶意活动。缺:对于非技术人员来说可能不太友好。
-
Capsa:优:用于网络分析和诊断,提供详细的统计信息和报告,适合网络管理员和安全专家使用。缺:对于非技术人员来说可能需要一定的学习曲线。
数据组装/拆解过程:
数字代表上层协议的类型
完整数据包为:
传输数据包内容 = 链路层包头 + 网络层包头 + 传输层包头 + 应用层数据
Ethernet(MAC)封包格式 ARP/RARP/IP封包 TCP/UDP/ICMP/IGMP封包
接受到的为MAC完整包, 根据每层的包头里面的类型码,确定上一层为什么协议
完整的数据包接收到数组msg[]后,每个字节为数组的一个位置,通过数组位置的后移,可以对应数据包内的所有数据
系统接收到的首先为MAC包
完整的数据包接收到数组msg[]后,每个字节为数组的一个位置,通过数组位置的后移,可以对应数据包内的所有数据
eg:
msg[0] msg[1] msg[2] mag[3] msg[4] mag[5] 装的内容为 目的MAC地址 mag[12] msg[13] 为上一层协议的类型号
根据类型号,确定数据内的网络层为哪一类,逐层解析每个协议的内容即可