# tcpdump 抓包

### 参数简介

| 参数       | 说明                       |
| -------- | ------------------------ |
| -i       | 指定网卡                     |
| port     | 指定端口                     |
| src port | 指定源端口                    |
| dst port | 指定目标端口                   |
| host     | 指定 IP                    |
| src host | 指定源 IP                   |
| dst host | 指定目标 IP                  |
| -n       | 不把ip解析成主机名               |
| -nn      | 不把端口解析成应用层协议             |
| -c       | 抓指定数量的包                  |
| -S       | 不把随机序列和确认序列解析成绝对值        |
| -v       | verbose output           |
| -vv      | Even more verbose output |
| -vvv     | Even more verbose output |
| -w       | 导出文件（将结果写入文件）            |

### 抓包案例演示

#### 抓tcp某端口的数据包

```bash
tcpdump -i ens33 tcp port 21 -nn
```

#### 抓udp某端口的数据包

```bash
tcpdump -i ens33 udp port 53 -nn
```

#### 抓icmp的数据包并导出

```bash
tcpdump -i ens33 icmp -nn -w /opt/result.cap

# 导出的数据包可以使用Wireshark打开分析
```

### 拓展：常用服务及协议端口

| 服务名称   | 协议端口    |
| ------ | ------- |
| http   | tcp 80  |
| ftp    | tcp 21  |
| ssh    | tcp 22  |
| telnet | tcp 23  |
| smtp   | tcp 25  |
| dns    | udp 53  |
| ntp    | udp 123 |
