zoukankan      html  css  js  c++  java
  • TCP协议的一些总结(三)

    八、  抓包实践

    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开始的数据。

  • 相关阅读:
    Gitlab邮箱配置
    Zabbix邮件告警提示Couldn't resolve host name解决办法
    Gitlab备份和恢复操作
    Gitlab权限管理
    编译安装Nginx
    [0] 数据库读写分离
    [0] C# & MongoDB
    [0] 平衡二叉树
    [0] 分布式存储 Memcached
    [0] MSSQL 分库查询
  • 原文地址:https://www.cnblogs.com/geekma/p/2735971.html
Copyright © 2011-2022 走看看