TCP 包分析

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

推荐阅读更多精彩内容

  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 4,802评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 12,556评论 6 174
  • 1、TCP状态linux查看tcp的状态命令:1)、netstat -nat 查看TCP各个状态的数量2)、lso...
    北辰青阅读 8,767评论 0 11
  • 传输层-TCP, TCP头部结构 ,TCP序列号和确认号详解 TCP主要解决下面的三个问题 1.数据的可靠传输...
    抓兔子的猫阅读 4,119评论 1 45
  • 简介 传输控制协议TCP(Transmission Control Protocol)[RFC 768]、 TCP...
    巫师学徒阅读 320评论 0 1