打开http://www.youku.com 分析 TCP 数据包
在终端中执行:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-data-dir=/tmp/chrome --ssl-key-log-file=/tmp/.ssl-key.log
在Wireshark过滤器输入 http
在浏览器输入优酷网址,可以看到Wireshark中http数据包的Info有 youku的字样
右键,Follow -> TCP Stream,追踪TCP数据流
可以得到如下页面:
点击Statistics -> Flow
可以得到如下页面:
在其中的Flow Type中选择TCP Flows,并选择时间戳和我们要分析的TCP数据流一致的数据,点击Limit to display filiter,可以得到如下窗口:
可以看出我的IP地址为192.168.0.102
优酷的IP地址为59.82.31.118
在客户端和youku.com之间启动 TCP 连接的 TCP SYN 区段的相对 S e q u e n c e n u m b e r Sequence number Sequencenumber 是0,绝对 S e q u e n c e n u m b e r Sequence number Sequencenumber 是 2758883771 2758883771 2758883771,这是一个随机值
根据三次握手,客户端应该发送 SYN 请求请求建立连接,我找到发送的第一个请求并且发现客户端(我的电脑)将 SYN 标志标 0 用来请求建立连接。这一步也是三次握手的第一步
Youku.com发送给客户的
可以发现,服务器端的 A c k n o w l e d g e m e n t n u m b e r Acknowledgement\ number Acknowledgement number = 客户端的 S e q u e n c e n u m b e r + 1 Sequence\ number + 1 Sequence number+1
意思是服务器接收到我的连接请求并且发 SYN-ACK 确认,这是三次握手的第二步。
客户端再次发送TCP报文段给服务器端的
TCP服务器进程收到该确认报文段后也进入连接已建立状态
现在,TCP双方都进入了连接已建立状态,它们可以基于已建立好的TCP连接,进行可靠的数据传输
272号报文的信息:
Source IP Address
: 192.168.0.112Destination IP Address
: 192.168.0.101Source Port
: 21Destination Port
: 59353Fin
: 1Acknowledgment Number
: 2006995353 ,164(relative ack number)Sequence Number
:1380144531, 454 (relative sequence number)TCP连接释放报文段首部中
273号报文的信息:
Source IP Address
: 192.168.0.101Destination IP Address
: 192.168.0.112Source Port
: 59353Destination Port
: 21Acknowledgment Number
: 1380144532 ,455(relative ack number)是 272号报文的 Sequence Number + 1
Sequence Number
:2006995353, 164 (relative sequence number)和 272号报文的Acknowledgment Number
一致
TCP服务器进程收到TCP连接释放报文段后,会发送一个普通的TCP确认报文段并进入关闭等待状态
普通的TCP确认报文段首部中
TCP客户进程收到TCP确认报文段后就进入终止等待2状态,等待TCP服务器进程发出的TCP连接释放报文段
若使用TCP服务器进程的应用进程已经没有数据要发送了,应用进程就通知其TCP服务器进程释放连接
由于TCP连接释放是由TCP客户进程主动发起的,因此TCP服务器进程对TCP连接的释放称为被动关闭连接
274号报文的信息:
Source IP Address
: 192.168.0.101Destination IP Address
: 192.168.0.112Source Port
: 59353Destination Port
: 21Fin
:1Acknowledgment Number
: 1380144532 ,455(relative ack number)和 273 号报文的 Acknowledgment Number
一致Sequence Number
:2006995353, 164 (relative sequence number)和 273 号报文的Sequence Number
一致TCP服务器进程发送TCP连接释放报文段并进入最后确认状态
该报文段首部中
275号报文的信息:
Source IP Address
: 192.168.0.112Destination IP Address
: 192.168.0.101Source Port
: 21Destination Port
: 59353Acknowledgment Number
: 2006995354 ,165(relative ack number)是 274 号报文 的 Sequence Number + 1
Sequence Number
:1380144532, 455 (relative sequence number)和 274 号报文 的 Acknowledgment Number
一致TCP客户进程收到TCP连接释放报文段后,必须针对该报文段发送普通的TCP确认报文段,之后进入时间等待状态
该报文段首部中
TCP服务器进程收到该报文段后就进入关闭状态,而TCP客户进程还要进过2MSL后才能进入关闭状态