博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP协议的一些总结(三)
阅读量:6435 次
发布时间:2019-06-23

本文共 1680 字,大约阅读时间需要 5 分钟。

八、  抓包实践

1.    用Android自带浏览器访问m.sohu.com

 

访问DNS服务器221.130.33.60进行DNS解析,将m.sohu.com域名解析成IP:221.179.173.166。

在发送真正的HTTP请求前需要建立TCP连接,上图是与服务器221.179.173.166建立连接前的三次握手。客户端通告窗口为14600字节,发送的TCP数据长度为0,MSS为1460。服务端的通告窗口为5792,SYN ACK的TCP数据长度为0。

发送HTTP请求,从数据中可以看到请求的数据。

上图报文段6为http请求,报文段7为该http请求的ack报文,报文段8为服务器返回的数据的第一个报文段,报文段9为客户端对8的ack,报文段12为服务端的第二个数据报文段,报文段13为12的ack,一直到报文段33接收数据结束(从报文段19到报文段24都是其它tcp连接的数据),33为一个总结的记录,是一个http结构的数据。其中客户端的win一直在增加,每次增加大概为2880字节。

2.    重传

图:重传数据

服务器为221.130.199.20,客户端为10.200.82.148

报文190为服务端发送给客户端的tcp分段数据,长度1476,tcp数据为1408(1476-68)字节,发送的字节序号为11625~12672。

报文191为报文190的ACK,表明客户端需要的下个字节从12673开始。

报文194为服务端发送给客户端的tcp分段数据,长度1476,tcp数据为1408(1476-68)字节,发送的字节序号为12763~14080。

报文195表为报文194的ACK,表明客户端需要的下个字节从14081开始。

报文229为服务端发送给客户端的tcp分段数据,长度1476,tcp数据为1408(1476-68)字节,提示上一个报文段丢失,查看具体数据,如下图

可以看出接收到的数据序号为19713~21121,表明从14081~19712的数据没有在该报文之前到达,有两种可能:丢失或失序,继续往下看。

       报文230为229的ACK,这里有一个Dup 1标记,是由于之前的报文没有到达,所以继续请求14081开始的报文。

       报文231为服务端发送给客户端的tcp分段数据,长度1476,tcp数据为1408(1476-68)字节,字节序号为21121~22528。

       报文232为232的ACK,有Dup 2标记,继续请求从14081开始的数据。

       报文233为服务端发送给客户端的tcp分段数据,长度1476,tcp数据为1408(1476-68)字节,字节序号为22529~23937。

       报文234为233的ACK,有Dup 3标记,继续请求从14081开始的数据。这里,由于已经有三个重复请求14081的ACK报文,可以认定14081的报文丢失了。

       报文235~报文281为成对的报文发送和ACK,ACK一直在请求14081数据。

       报文282为服务器发给客户端的tcp分段数据,长度为1476,wireshark已经表明是一个失序的TCP报文,查看数据如下图:

可以看到,服务端终于将客户端需要的14081报文发送出去。

       报文283是281报文的ACK,由于还没收到282报文,所以还是继续请求14081数据。

       报文284是282报文的ACK,由于282已经发送了14081~15488,所以下一个需要的报文将从15489开始。

       报文285重传数据15489~16896。

       报文286为285的ACK确认,同时请求16897开始的数据。

       报文287重传数据16897~18304。

       报文288为287的ACK确认,同时请求18305开始的数据。

       报文302重传数据18305~19712。

       报文303为302的ACK确认,同时由于之前已经收到了32384字节,所以请求32385开始的数据。

转载于:https://www.cnblogs.com/geekma/archive/2012/10/23/2735971.html

你可能感兴趣的文章
vim 学习方法
查看>>
php token验证范例
查看>>
WebSocket的C++服务器端实现
查看>>
java中两种添加监听器的策略
查看>>
脑洞成现实!AI系统可提前10s预测地震
查看>>
Page页面生命周期——微信小程序
查看>>
Node.js编写CLI的实践
查看>>
Javascript数组对象的方法和属性
查看>>
TiDB 3.0.0 Beta.1 Release Notes
查看>>
oracle数据库的启动和停止
查看>>
《LoadRunner没有告诉你的》之七——使用 LoadRunner 连续长时间执行测试,如何保证参数化的数据足够又不会重复?...
查看>>
python easy_install django 安装
查看>>
读《图解HTTP》总结--第六章
查看>>
毕业就能拿到上万薪资的程序员他们都做了啥?
查看>>
最小的k个数
查看>>
Spring cloud Eureka(注册服务中心)
查看>>
FWSM-no connection SYN ACK
查看>>
wince c# 程序只能运行一次
查看>>
我的友情链接
查看>>
一些Mac OS X 10.9.3 4K的使用感受
查看>>