xcap 是一个免费的网络发包工具,可以使用xcap制造和发送报文,可用于DoS打流等
我们通过这个软件做网络分层实验,手动创建每层报文,理解 TCP/IP 模型中每一层的作用,直观感受每层 PDU(protocol data unit) 应包含的字段和层层包含的关系

目标:往ip地址为 199.168.138.252 的目标发送 80/tcp 端口 http 报文
前置条件,先创建报文组和报文


1 链路层 Ethernet #
这一层PDU为Frame,包含:源 MAC、目的 MAC、EtherType、Packet


通过路由表和目的地址 199.168.138.252 综合判断,发给目的IP为 199.168.138.252 的报文会通过网卡Intel(R) Ethernet Connection (7) I219-LM发出,来源IP为 192.168.18.19 ,并通过网关 192.168.18.254 发到外部网络
以太网(链路层)通过 MAC 地址进行通讯,并不感知IP地址:
- 同网段 → 目标主机的 MAC
- 跨网段 → 网关的 MAC
网关的MAC地址为 00:00:5E:00:01:12

本机网卡的MAC地址为00:D8:61:90:9A:92
所以,此时构造Ethernet报文填写的信息如下:

2 网络层 IPv4 #
这一层PDU为Packet,关键字段:来源 IP、目的 IP、TTL、协议号、Segment/Datagram
来源IP为192.168.18.19
目的IP为199.168.138.252

3 传输层 TCP #
这一层PDU为Segment(TCP)/Datagram(UDP),TCP关键字段:源端口、目的端口、SEQ、ACK、Flags标志位、应用层报文

4 应用层 HTTP #
常见协议:HTTP,最简单的HTTP报文GET / HTTP/1.0\r\n\r\n

5 对端抓包 #
启动网卡,选择网卡,发包



来源IP为223.108.79.97与192.168.18.19不一致,端口15387也与源端口不一致,但SEQ与来源是一致的,是因为中间有NAT转发