一、TCP理论概述:
1.1)TCP协议的可靠性(与UDP比较):
面向连接的传输;
最大报文字段长度;
传输确认机制;
首部和数据的校验和;
流量控制(滑动窗口机制);
1.2)TCP报文头格式:
Flags位:
①URG:紧急指针(直接发送处理)
②ACK:确认报文
③RSH :数据推送
④RST:连接重置
⑤SYN:建立连接报文
⑥FIN:结束报文
2.1)建立连接(三次握手):
2.2)断开连接(四次断开):
2.3)TCP十一个连接状态:
二、Linux系统TCP报文(tcpdump)
1)三次握手:
12:19:57.684776 IP 10.200.6.10.42973 > 10.200.6.1.ssh: Flags [S], seq 4075047016, win 14600, options [mss 1460,sackOK,TS val 1027796768 ecr 0,nop,wscale 7], length 0
12:19:57.684797 IP 10.200.6.1.ssh > 10.200.6.10.42973: Flags [S.], seq 3113040666, ack 4075047017, win 14480, options [mss 1460,sackOK,TS val 1897051220 ecr
1027796768,nop,wscale 7], length 0
12:19:57.684927 IP 10.200.6.10.42973 > 10.200.6.1.ssh: Flags [.], ack 1, win 115, options [nop,nop,TS val 1027796769 ecr 1897051220], length 0
时间 ID号 协议 源IP.端口 <传输方向> 目的IP.端口 Flags标志位 序列号 …
Flags标志位:S=SYN,F=FIN,P=PSH,ack=ACK,RST=RESET, 小数点.表示无标志。
三次握手Flags经过S、S.(SYN+ACK)、.(ACK)
2)数据传输:
12:19:57.691936 IP 10.200.6.10.42973 > 10.200.6.1.ssh: Flags [P.], seq 982:1006, ack 862, win 128, options [nop,nop,TS val 1027796775 ecr 1897051227], length 24
12:19:57.692987 IP 10.200.6.1.ssh > 10.200.6.10.42973: Flags [P.], seq 862:1014, ack 1006, win 129, options [nop,nop,TS val 1897051228 ecr 1027796775], length 152
12:19:57.693351 IP 10.200.6.10.42973 > 10.200.6.1.ssh: Flags [P.], seq 1006:1150, ack 1014, win 141, options [nop,nop,TS val 1027796777 ecr 1897051228], length 144
12:19:57.695655 IP 10.200.6.1.ssh > 10.200.6.10.42973: Flags [P.], seq 1014:1734, ack 1150, win 144, options [nop,nop,TS val 1897051230 ecr 1027796777], length 720
win:滑动窗口 ;options:选项
1)四次断开:
12:19:59.101981 IP 10.200.6.10.42973 > 10.200.6.1.ssh: Flags [F.], seq 2366, ack 2374, win 167, options [nop,nop,TS val 1027798186 ecr 1897052637], length 0
12:19:59.102023 IP 10.200.6.1.ssh > 10.200.6.10.42973: Flags [.], ack 2367, win 204, options [nop,nop,TS val 1897052637 ecr 1027798186], length 0
12:19:59.103077 IP 10.200.6.1.ssh > 10.200.6.10.42973: Flags [F.], seq 2374, ack 2367, win 204, options [nop,nop,TS val 1897052638 ecr 1027798186], length 0
12:19:59.103206 IP 10.200.6.10.42973 > 10.200.6.1.ssh: Flags [.], ack 2375, win 167, options [nop,nop,TS val 1027798187 ecr 1897052638], length 0
四次断开Flags经过:F.(FIN+ACK)、.(ACK)、F.、.
4)awk查看tcp状态并统计个数:
①ss -at|awk ‘NR>1{a[KaTeX parse error: Expected 'EOF', got '}' at position 5: 1]++}̲END{for(i in a)…NF]++}END{for(i in a)print i,a[i]}’
③lsof -i tcp|awk ‘NR>1{a[$NF]++}END{for(i in a)print i,a[i]}’
2018.09.29