1. tcp的11種狀態
ss -ant
-a 表示看所有狀態
-n 表示不將ip解析為主機名
-t 表示tcp
1.1. closed狀態(客戶端、服務端)
1.2. listen狀態(服務端)
- 服務端軟件運行的時候狀態:監聽狀態,服務端等待建立連接
1.3. syn_sent狀態(客戶端)
- 客戶端發送SYN請求連接后,由closed狀態-->syn_sent狀態
1.4. syn_rcvd狀態(服務端)
- 服務端收到客戶端SYN請求,回復了ACK,服務端狀態listen-->syn_rcvd(recevide)
1.5. established狀態(客戶端、服務端)
- 客戶端收到了ACK,SYN后發出ACK,客戶端狀態由syn_sent-->established(建立連接)
- 服務端收到客戶端的ACK后,服務端狀態變化為:established狀態
1.6. fin_wait1狀態(客戶端)
- 客戶端先向服務端發送FIN報文,請求斷開連接,狀態由established狀態-->fin_wait1狀態
1.7. close_wait狀態(服務端)
- 服務端收到FIN后向客戶端發送ACK,服務端狀態由established狀態-->close_wat狀態
1.8. fin_wait2狀態(客戶端)
- 客戶端收到ACK后就由fin_wait1狀態-->fin_wait2狀態,此時連接已經斷開了一半,如果服務器還有數據要發送給客戶端,就會繼續發送
1.9. last_ack狀態(服務端)
- 數據傳完后,服務端就發送FIN報文,請求斷開連接,此時服務器就由close_wait狀態-->last_ack狀態
1.10. time_wait狀態(客戶端、服務端)
- 客戶端收到服務端的FIN后,給服務器發送ACK,此時客戶端進入time_wait狀態,再過2MSL的時間(MSL最大生存時間,一般是1分鐘)后,進入closed狀態,
- 服務端收到ACK后也進入closed狀態
1.11. 特殊狀態closing
- 客戶端發送FIN請求斷開連接后,由于網絡故障原因沒有收到服務端發送的ACK,直接收到了服務端發送來的FIN斷開連接請求,此時客戶端進入closing狀態
2. 查看tcp狀態
ss -ant
-a 查看所有狀態
-n 不反向解析
-t TCPss -lntup
netstat -lntup
-l 查看處于監聽狀態的服務
-n 不反向解析
-t TCP
-u UDP
-p 進程#統計TCP狀態
ss -ant | awk '{print $1}' | sort | uniq -c | sort -rnk1
3. 面試題:查看端口是否存在
ss -lntupnetstat -lntuptelnet 10.0.0.210 80nmap -p 22,80 10.0.0.210filtered 過濾(防火墻攔截)lsof -i:22lsof 查看所有打開的文件信息
4. 查看網絡速度
iftop -nNBP -i ens33-n不將ip解析為主機名字-P顯示端口-N不將端口解析為服務名字-B將bit轉換為Byte-i指定網卡-ts 1非交互模式,每隔1S
5. 鏈路帶寬測試工具
#服務端開啟測試,等待客戶端連接
ipres -s#客戶端連接服務端測試帶寬速度
ipres -c 10.0.0.210
6. mtr命令
mtr www.baidu.commtr --tcp -r -c 2 www.baidu.com--tcp表示使用tcp協議-r表示生成報告模式(非交互模式),測試完顯示在屏幕上-c 2表示測試兩次
7. wireshark抓包過濾規則
7.1. 抓取指定協議
icmp #ping 數據包
tcp
udp
http
https數據包:tls(http over tls)
7.2. 抓取指定端口
#過濾出源端口或目的端口口是tcp/80的數據包
tcp.port == 80#過濾出源端口或目的端口口是udp/53的數據包
udp.port ==53#過濾src source 源端口是tcp/80
tcp.srcport == 80#過濾dst destitation 目標端口是tcp/80
tcp.dstport == 80#過濾src source 源端口是udp/53
udp.srcport == 53#過濾dst destitation 目標端口是udp/53
udp.dstport == 53#過濾tcp端口為80并且包含www.baidu.com
tcp.port == 80 and http ~ "www.baidu.com"
7.3. 抓取指定ip的數據包
#過濾源ip或目標ip為百度的數據包
ip.addr == 39.156.66.10 #過濾出源ip或目標ip是10.0.0.200數據包#ip.src表示源ip
ip.src == 10.0.0.200 #過濾出源ip 10.0.0.200數據包#ip.dst表示目標ip
ip.dst == 10.0.0.200 #過濾出目標ip 10.0.0.200數據包
7.4. 不固定內容的過濾-比較大小
#過濾出端口小于等于1024的數據包
tcp.dstport <= 1024
7.5. 與或非
#過濾端口號大于等于20 小于等于1024
tcp.port >=20 && tcp.port <=1024
tcp.port >=20 and tcp.port <=1024&& and 并且
or || 或者
! 取反
7.6. tcpdump抓包
tcpdump -vvv -nnn -w all.pcap-vvv 表示顯示詳細的抓包信息-nnn 表示不要做反向解析#抓取icmp協議數據包
tcpdump -vvv -nnn icmp#抓取80端口數據包
tcpdump -vvv -nnn port 80
tcpdump -vvv -nnn src port 80
tcpdump -vvv -nnn dst port 80#抓取指定ip的數據包
tcpdump -vvv -nnn host 10.0.0.200
tcpdump -vvv -nnn src host 10.0.0.200
tcpdump -vvv -nnn dst host 10.0.0.200
8. 修改網卡名字
1.修改/boot/grub2/grub.cfg配置,在以linux開頭的行(有兩行),結尾添加
net.ifnames=0 biosdevname=0
sed -ri.bak '/\t+linux/s#$# net.ifnames=0 biosdevname=0#g' /boot/grub2/grub.cfg2.修改網卡配置文件
NAME=eth0
DEVICE=eth03.修改網卡名字
mv ifcfg-ens33 ifcfg-eth0重啟linux
1.修改/boot/grub2/grub.cfg配置,在以linux16開頭的行,結尾添加
net.ifnames=0 biosdevname=02.修改網卡配置文件的網卡名
NAME=eth0
DEVICE=eth0重啟linux
1.修改/boot/grub/grub.cfg
在第170行,第189行,第226行,增加biosdevname=0 net.ifnames=0sed -i '/linux.*vmlinuz/s#$# biosdevname=0 net.ifnames=0#g' /boot/grub2/grub.cfg2.修改網卡配置文件的網卡名
sed -i 's#ens33#eth0#g' /etc/netplan/00-installer-config.yaml重啟linux
