http://blog.chinaunix.net/uid-29056899-id-4206568.html
http://blog.csdn.net/gatieme/article/details/50827776
http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html
1、TCP中的Flag标志
* F : FIN - 结束; 结束会话
* S : SYN - 同步; 表示开始会话请求
* R : RST - 复位;中断一个连接
* P : PUSH - 推送; 数据包立即发送
* A : ACK - 应答
* U : URG - 紧急
* E : ECE - 显式拥塞提醒回应
* W : CWR - 拥塞窗口减少
2、TCP三次握手建立链接
2.1 客户端发送Sync同步包给服务端;2.1服务端发送确认包同时发送同步信息给客户端;2.2客户端发送确认
3、TCP四次挥手断开链接
3.1 客户端发送关闭连接请求 3.2服务端发送Ack 3.3 服务端发送关闭连接请求 3.4 客户端发送Ack。
建立连接的时候本质上也是四个回合,只是服务端发送同步和Ack任何情况下都可以整合成一次包发送。
断开连接普遍情况是四个回合,因为TCP是双向连接的,一端主动关闭只是关闭单向的。特殊情况下,断开连接也可能只要三个回合,
主要取决于上层应用。如果服务端收到对端关闭后,也马上关闭本端连接的话,这种情况只需要三次回合。
4、linux系统中分析TCP包
用命令字 tcpdump -i any tcp and port 9200 (-xlnnps0 打印详细的报文信息)
每天信息都会有 sorhost.port > dsthost.port Flags[S].
sorHost.port: 数据源
dstHost.port:数据目的
Flags[s]: flag表示类别和TCP协议包的Flag差不多[看本文的开始部分]。但是还有一点点区别,如果是Ack报文,Flag并没有用A表示,而是在随后内容中添加ack。
seq:报文的序列号。同步报文用掉一个序列号。数据报文是个区间 [start,end),包括起始序列号,但是不包括结束序列号。
win(接收缓冲端口): 和接收端的处理能力有关
mss(Max Segment Size):和网络的最大发包长度有关。以太网的MTU是1500,减去IP和TCP头部,最大报文长度MSS1460
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
20:24:51.342231 IP 10.100.64.26.49505 > 10.50.114.116.wap-wsp: Flags [S], seq 3647486953, win 14280, options [mss 1428,sackOK,TS val 1240102593 ecr 0,nop,wscale 8], length 0
20:24:51.373773 IP 10.50.114.116.wap-wsp > 10.100.64.26.49505: Flags [S.], seq 77175520, ack 3647486954, win 14480, options [mss 1460,sackOK,TS val 133441597 ecr 1240102593,nop,wscale 8], length 0
20:24:51.373790 IP 10.100.64.26.49505 > 10.50.114.116.wap-wsp: Flags [.], ack 1, win 56, options [nop,nop,TS val 1240102601 ecr 133441597], length 0
20:24:51.373811 IP 10.100.64.26.49505 > 10.50.114.116.wap-wsp: Flags [P.], seq 1:166, ack 1, win 56, options [nop,nop,TS val 1240102601 ecr 133441597], length 165
20:24:51.405313 IP 10.50.114.116.wap-wsp > 10.100.64.26.49505: Flags [.], ack 166, win 61, options [nop,nop,TS val 133441605 ecr 1240102601], length 0
20:24:51.405906 IP 10.50.114.116.wap-wsp > 10.100.64.26.49505: Flags [P.], seq 1:147, ack 166, win 61, options [nop,nop,TS val 133441605 ecr 1240102601], length 146
20:24:51.405923 IP 10.100.64.26.49505 > 10.50.114.116.wap-wsp: Flags [.], ack 147, win 60, options [nop,nop,TS val 1240102609 ecr 133441605], length 0
20:29:00.209639 IP 10.100.64.26.49505 > 10.50.114.116.wap-wsp: Flags [F.], seq 3647487119, ack 77175667, win 60, options [nop,nop,TS val 1240164810 ecr 133441605], length 0
20:29:00.241201 IP 10.50.114.116.wap-wsp > 10.100.64.26.49505: Flags [F.], seq 1, ack 1, win 61, options [nop,nop,TS val 133503812 ecr 1240164810], length 0
20:29:00.241212 IP 10.100.64.26.49505 > 10.50.114.116.wap-wsp: Flags [.], ack 2, win 60, options [nop,nop,TS val 1240164817 ecr 133503812], length 0
20:30:13.882430 IP 10.100.64.26.49695 > 10.50.114.116.wap-wsp: Flags [S], seq 3314501555, win 14280, options [mss 1428,sackOK,TS val 1240183228 ecr 0,nop,wscale 8], length 0
20:30:13.914539 IP 10.50.114.116.wap-wsp > 10.100.64.26.49695: Flags [S.], seq 3151585407, ack 3314501556, win 14480, options [mss 1460,sackOK,TS val 133522230 ecr 1240183228,nop,wscale 8], length 0