TCP连接的状态详解以及故障排查

查看Linux系统中进程的网络连接特别重要,可以帮助系统管理员排查网络中存在的问题。本文将介绍如何查看Linux系统中进程的网络连接,以及在查看过程中一些常用的命令。

首先,要找出某一给定进程的网络连接,可以使用`netstat`命令。在命令行中可以输入以下命令:

netstat -nap | grep 进程名

。它会显示该进程正在建立的TCP连接:

 Active Internet connections (servers and established)
 Proto Recv-Q Send-Q Local Address           Foreign Address         State
 PID/Program name
 tcp        0      0 172.31.34.178:80        49.43.75.2:5160        ESTABLISHED 4009/nginx

另外,还可以使用`lsof`命令来查看Linux系统中进程的网络连接。只需输入以下命令:`lsof -i ` 。它会显示进程的网络连接:

COMMAND  PID   USER   FD   TYPE        DEVICE SIZE/OFF   NODE NAME
nginx    4009 root    4u  IPv4 0x2e42e203f2b11df      0t0  TCP 172.31.34.178:80->49.43.75.2:5160 (ESTABLISHED)

此外,还可以使用`ss`命令查看Linux系统中进程的网络连接,它比`netstat`命令更加高效。以下是用于查看进程网络连接的命令:`ss -p –info | grep ` 。它会显示进程的TCP连接:

State      Recv-Q Send-Q      Local Address:Port               Peer Address:Port              
ESTAB      0      0           172.31.34.178:80                 49.43.75.2:5160               

 

最后,可以使用`tcpdump`命令来抓取网络中当前所有连接之间的数据包,包括某一给定进程的网络连接。输入以下命令:`sudo tcpdump -i any -nn -s 0 -A -c 50 ‘dst port ‘` 。它会显示当前在该端口上传输的数据包:

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
21:17:43.203587 IP 172.31.34.178.80 > 49.43.75.2.5160: Flags [.], ack 138, win 8220, length 0
21:17:43.203619 IP 172.31.34.178.80 > 49.43.75.2.5160: Flags [P.], seq 2508:2523, ack 138, win 8220, length 15
21:17:43.203637 IP 172.31.34.178.80 > 49.43.75.2.5160: Flags [P.], seq 2523:2537, ack 138, win 8220, length 14

总结

linux查看tcp的状态命令:
1)、netstat -nat 查看TCP各个状态的数量
2)、lsof -i:port 可以检测到打开套接字的状况
3)、 sar -n SOCK 查看tcp创建的连接数
4)、tcpdump -iany tcp port 9000 对tcp端口为9000的进行抓包
5)、tcpdump dst port 9000 -w dump9000.pcap 对tcp目标端口为9000的进行抓包保存pcap文件wireshark分析。
6)、tcpdump tcp port 9000 -n -X -s 0 -w tcp.cap 对tcp/http目标端口为9000的进行抓包保存pcap文件wireshark分析。

你可能感兴趣的:(tcp/ip,网络协议,网络)