文章目录
- 1. TCP 11种状态
- 1.1 三次握手
- 1.2 四次挥手
- 1.3 CLOSING 状态
- 1.4 查看TCP进程连接状态
- 1.5 TCP的状态转换
- 1.5.1 客户端
- 1.5.2 服务端
- 2. 网络管理命令
- 2.1 lsof
- 2.2 nmap
- 2.3 nc
- 2.4 网络测速:iftop
- 2.5 DNS解析:nslookup
- 2.6 fping
- 2.7 mtr
- 2.8 iperf
- 2.9 网络命令总结
- 3. 抓包
- 3.1 常见过滤表达式-wireshark
- 3.2 tcpdump
- 3.2.1 过滤协议
- 3.2.2 过滤指定端口号
- 3.2.3 过滤指定IP
- 3.2.4 过滤指定IP和端口
- 3.3 tcpdump+wireshark抓包流程
- 3.4 案例:远程连接失败与抓包分析
- 3.4.1 关闭公有云安全组的远程连接端口规则
- 3.4.2 wireshark抓取本地网卡数据包,并过滤公网云IP
- 3.4.3 去云服务器上用tcpdump -vvv -nnn port 22抓包
- 3.4.4 开放安全组,再抓包
- 4. IP与子网掩码
- 5. 思维导图
- 6. 踩坑记录
- 1. #########: command not found
- 2. 脚本和命令行的区别
- 3. 查看硬盘数量及信息
1. TCP 11种状态
1.1 三次握手

- LISTEN:监听状态,服务启动等待客户连接。
TCP三次握手状态转换:
- 建立连接之前服务器和客户端状态都为CLOSED
- 服务器创建socket后开始监听(启动服务),变为LISTEN状态
- 客户端发送SYN请求,状态变为SYN_SENT
- 服务端收到客户端的SYN报文后向客户端发送ACK和SYN报文,此时服务端的状态变为SYN_RCVD
- 客户端收到服务端的ACK和SYN报文,向服务端发送ACK,客户端状态变为ESTABLISHED
- 服务端收到ACK后,也变为ESTABLISHED
- 此时TCP三次握手完成,连接建立成功!
1.2 四次挥手

- MSL(Maximum Segment Lifetime,最大报文生存时间) 是一个关键的时间参数,用于确保网络中残留的旧数据包不会干扰新的 TCP 连接。
TCP四次挥手状态变化:
- 客户端向服务端发送FIN报文,请求断开连接,其状态变为FIN_WAIT1
- 服务端收到FIN后向客户端发送ACK,状态变为CLOSE_WAIT
- 客户端收到ACK后进入FIN_WAIT2状态
- 服务端发送FIN报文,此时服务端进入LAST_ACK状态
- 客户端收到服务端的FIN后,马上发送ACK报文,并进入TIME_WAIT状态,在过2MSL时间进入CLOSED状态
- 服务端收到ACK后,进入CLOSED状态
1.3 CLOSING 状态
客户端发送FIN后处于FIN_WAIT1状态,但是之后没有收到服务端的ACK确认字段,却收到了服务端的FIN字段。
此时客户端会进入CLOSING状态。
一般在网络阻塞严重时会发生。
1.4 查看TCP进程连接状态
- -a:all,显示所有网络连接
- -n:不解析服务名称
- -t:tcp
[root@iZ2ze7mths8vcox9zf7hkfZ ~]# ss -ant
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 80 127.0.0.1:3306 0.0.0.0:*
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 127.0.0.1:6010 0.0.0.0:*
LISTEN 0 511 127.0.0.1:9000 0.0.0.0:*
TIME-WAIT 0 0 127.0.0.1:9000 127.0.0.1:52482
ESTAB 0 0 172.28.248.55:58372 100.100.30.25:80
ESTAB 0 80 172.28.248.55:22 123.117.19.236:7329
TIME-WAIT 0 0 172.28.248.55:39968 100.100.18.120:80
TIME-WAIT 0 0 172.28.248.55:80 8.140.211.162:54884
TIME-WAIT 0 0 127.0.0.1:9000 127.0.0.1:52486
LISTEN 0 128 [::1]:6010 [::]:*
LISTEN 0 128 [::]:22 [::]:*
1.5 TCP的状态转换
1.5.1 客户端

1.5.2 服务端

2. 网络管理命令
2.1 lsof
lsof(List Open Files)是一个强大的 Linux/Unix 命令,用于列出系统中被进程打开的文件- 常用于查看未彻底删除的文件
- 检查是否存在22端口:
[root@iZ2ze7mths8vcox9zf7hkfZ ~]# lsof -nPi :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 303891 root 3u IPv4 2832659 0t0 TCP *:22 (LISTEN)
sshd 303891 root 4u IPv6 2832661 0t0 TCP *:22 (LISTEN)
sshd 305669 root 4u IPv4 2851391 0t0 TCP 172.28.248.55:22->123.117.19.236:7329 (ESTABLISHED)
- -i:监听指定地址
- -n:不解析ip
- -P:不解析端口
2.2 nmap
Nmap(Network Mapper)是一款开放源代码的网络探测和安全审核工具。它用于快速扫描一个网络和一台主机开放的端口,还能使用TCP/IP协议栈特征探测远程主机的操作系统类型。
# 扫描指定域名的端口是否开启
[root@oldboy99-Kylin /server/scripts]# nmap -p 22,80,443 baidu.com
Starting Nmap 7.92 ( https://nmap.org ) at 2025-06-03 20:47 CST
Nmap scan report for baidu.com (39.156.66.10)
Host is up (0.00034s latency).
Other addresses for baidu.com (not scanned): 110.242.68.66PORT STATE SERVICE
22/tcp filtered ssh
80/tcp filtered http
443/tcp filtered httpsNmap done: 1 IP address (1 host up) scanned in 10.39 seconds
2.3 nc
- 功能强大的网络管理命令
- 查看端口是否开启
- -v:显示命令执行过程
[root@oldboy99-Kylin /server/scripts]# nc 10.0.0.200 80 -v
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to 10.0.0.200:80.
2.4 网络测速:iftop
- 流量监控工具
- -i:指定网卡
- -n:不解析ip
- -P:显示端口
- -N:不解析端口
- -B:单位变成字节

- 非交互式模式
[root@iZ2ze7mths8vcox9zf7hkfZ ~]# iftop -PnNB -ts 1
interface: eth0
IP address is: 172.28.248.55
MAC address is: 00:16:3e:40:c5:43
Listening on eth0# Host name (port/service if enabled) last 2s last 10s last 40s cumulative
--------------------------------------------------------------------------------------------1 172.28.248.55:58372 => 1.04KB 1.04KB 1.04KB 2.08KB100.100.30.25:80 <= 40B 40B 40B 80B2 172.28.248.55:33022 => 312B 312B 312B 624B100.100.18.120:80 <= 274B 274B 274B 548B3 172.28.248.55:47615 => 36B 36B 36B 71B100.100.2.138:53 <= 78B 78B 78B 157B4 172.28.248.55:22 => 50B 50B 50B 100B123.117.19.236:7329 <= 60B 60B 60B 120B
--------------------------------------------------------------------------------------------
Total send rate: 1.43KB 1.43KB 1.43KB
Total receive rate: 452B 452B 452B
Total send and receive rate: 1.87KB 1.87KB 1.87KB
--------------------------------------------------------------------------------------------
Peak rate (sent/received/total): 1.43KB 452B 1.87KB
Cumulative (sent/received/total): 2.86KB 905B 3.74KB
============================================================================================
2.5 DNS解析:nslookup
- 解析域名;Linux和Windows都能使用
# kylin
[root@oldboy99-Kylin /server/scripts]# nslookup jd.com
Server: 223.5.5.5
Address: 223.5.5.5#53Non-authoritative answer:
Name: jd.com
Address: 106.39.171.134
Name: jd.com
Address: 211.144.27.126
Name: jd.com
Address: 111.13.149.108
Name: jd.com
Address: 211.144.24.218
;; connection timed out; no servers could be reached# windows
[D:\~]$ nslookup jd.com
非权威应答:
服务器: public1.114dns.com
Address: 114.114.114.114名称: jd.com
Addresses: 106.39.171.134211.144.27.126211.144.24.218111.13.149.108
2.6 fping
- 批量ping
[root@iZ2ze7mths8vcox9zf7hkfZ ~]# fping baidu.com jd.com 211.144.27.126
baidu.com is alive
jd.com is alive
211.144.27.126 is alive
2.7 mtr
mtr(My Traceroute)是一个结合了traceroute和ping功能的动态网络诊断工具,用于实时监测网络路径的连通性和延迟情况。
- -r:报告模式
- -c:指定发送的数据包数量
- 默认有路由追踪功能

[root@oldboy99-Kylin /server/scripts]# mtr --tcp -r -c 2 www.baidu.com
Start: 2025-06-03T21:22:59+0800
HOST: oldboy99-Kylin Loss% Snt Last Avg Best Wrst StDev1.|-- _gateway 0.0% 2 0.8 0.5 0.3 0.8 0.42.|-- ??? 100.0 2 0.0 0.0 0.0 0.0 0.03.|-- 110.242.69.21 50.0% 2 1183. 1183. 1183. 1183. 0.0
2.8 iperf
iperf是一个用于测量网络带宽性能的开源工具,支持 TCP 和 UDP 流量测试。它采用客户端-服务器模式,能够准确评估网络吞吐量、延迟和丢包率。
服务端:iperf -s
[root@iZ2ze7mths8vcox9zf7hkfZ ~]# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
[ 1] local 172.28.248.55 port 5001 connected with 123.117.19.236 port 10133
[ ID] Interval Transfer Bandwidth
[ 1] 0.0000-22.0049 sec 1.25 MBytes 477 Kbits/sec
客户端:iperf -c 服务端ip
[root@oldboy99-Kylin /server/scripts]# iperf -c 8.140.211.162
------------------------------------------------------------
Client connecting to 8.140.211.162, TCP port 5001
TCP window size: 425 KByte (default)
------------------------------------------------------------
[ 3] local 10.0.0.200 port 58398 connected with 8.140.211.162 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-12.1 sec 1.25 MBytes 869 Kbits/sec
2.9 网络命令总结
| 命令 | Linux | Windows |
|---|---|---|
| 查询IP地址 | ip a ifconfig | ipconfig |
| 检查端口号 | ss netstat lsof nc telnet nmap | netstat -ant |
| 检查连接情况 | ss/netstat -ant | netstat -ant |
| 测速 | iftop nethogs | |
| DNS解析 | dig host nslookup | nslookup |
| 路径追踪 | traceroute -nI mtr | tracert |
| 检查链路是否畅通 | ping fping | ping |
| 检查路由表 | ip ro route -n | route print |
| 测试带宽 | iperf |
3. 抓包
- wireshark过滤各种协议时,注意https的底层协议是tsl
3.1 常见过滤表达式-wireshark
与:and/&&
或:or/||
非:!
- 过滤53端口:
tcp.port==53 or udp.port==53 - 过滤80端口,并且是百度的域名:
tcp.port==80 and http ~ "www.baidu.com" - 原端口和目标端口:
tcp.srcport==80,tcp.dstport==80 - 过滤指定ip:
ip.addr==10.0.0.100 - 过滤原ip和目标ip:
ip.src==10.0.0.100,ip.dst==10.0.0.200
3.2 tcpdump
网络抓包分析工具,能够捕获和解析网络接口上的数据包
- -i:指定网卡
3.2.1 过滤协议
- tcpdump tcp
- tcpdump -vvv -nnn tcp
- -vvv:三级详细模式:显示基本信息、更底层的协议信息
- -nnn:禁用名称解析(主机名、端口),完全禁用所有解析,确保输出为原始数字格式,提升解析速度
3.2.2 过滤指定端口号
- tcpdump -nnn port 80
- tcpdump -nnn src port 80,过滤原端口为80的数据包
- tcpdump -nnn dst port 80,过滤目的端口为80的数据包
3.2.3 过滤指定IP
- tcpdump -nnn host 10.0.0.200
3.2.4 过滤指定IP和端口
- tcpdump -nnn src host 10.0.0.200 and port 12345
- tcpdump -nnn dst host 10.0.0.200 and port 12345
3.3 tcpdump+wireshark抓包流程
pcap(Packet Capture)是存储网络原始数据包的标准文件格式,由tcpdump、Wireshark等工具生成,用于记录和分析网络流量。- -w:将命令结果保存为文件
[root@oldboy99-Kylin /server/scripts]# tcpdump -nnn src host 10.0.0.200 and port 12345 -w test.pcap
dropped privs to tcpdump
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
^C3 packets captured
5 packets received by filter
0 packets dropped by kernel
[root@oldboy99-Kylin /server/scripts]# ls -l test.pcap
-rw-r--r-- 1 tcpdump tcpdump 382 6月 3 22:21 test.pcap
- 将test.pcap文件导入wireshark,直接打开文件即可

3.4 案例:远程连接失败与抓包分析
3.4.1 关闭公有云安全组的远程连接端口规则

3.4.2 wireshark抓取本地网卡数据包,并过滤公网云IP

3.4.3 去云服务器上用tcpdump -vvv -nnn port 22抓包

- 无数据包
3.4.4 开放安全组,再抓包

- 抓包成功
4. IP与子网掩码
- IP地址的组成:网络位+主机位
- 根据网络位不同划分IP地址
| 类别 | IP取值范围 |
|---|---|
| A类型 | 1.0.0.0~126.255.255.254 |
| B类型 | 128.0.0.1~191.255.255.254 |
| C类型 | 192.0.0.1~223.255.255.254 |
| D类型 | 224.0.0.1~239.255.255.254 |
| E类型 | Research |
- 子网掩码可以查看网络中最多能有多少主机
5. 思维导图
【金山文档】 思维导图 https://www.kdocs.cn/l/co3I7PtpTYQX
6. 踩坑记录
1. #########: command not found
脚本:

- note存储的不是命令,而是命令的结果,即‘‘####’’
- 所以最后${note}表示执行####,所以命令行报错:无此命令
改进:

或者

2. 脚本和命令行的区别
问题现象:

- 原因
脚本中命令先按字符串存储,再解析;
命令行会直接解析并输出
3. 查看硬盘数量及信息
lsblk -d -o NAME,ROTA,SIZE,MODEL
[root@oldboy99-Ubuntu ~]# lsblk -d -o NAME,ROTA,SIZE,MODEL
NAME ROTA SIZE MODEL
loop0 1 63.8M
loop1 1 87M
loop2 1 63.8M
loop3 1 89.4M
loop4 1 44.4M
loop5 1 50.9M
sda 1 1G VMware Virtual S
sdb 1 100G VMware Virtual S
sr0 1 2G VMware Virtual SATA CDRW Drive
