zoukankan      html  css  js  c++  java
  • wireshark抓包分析

    TCP协议首部:

    分析第一个包:

    源地址:我自己电脑的IP,就不放上来了

    Destination: 222.199.191.33 目的地址

    TCP:表明是个TCP协议

    Length:66 表明包的长度是66个字节 ??

    56739->443 :表明是从源地址的56739端口发送给目的地址的443端口

    [SYN]表明这是一个TCP的同步请求,是TCP握手的第一步

    Seq=0: TCP协议中的序号,这里为0.

    在TCP中第一个SYN 包所包含的 sequence 是随机的,而第一个 SYN+ACK包里的sequence 也是随机的,wireshark 为了你便于观察都使用相对值,初始化这两个随机值为0,后面的sequence 和 acknowledge 都在上面累加

    Win=8192: 发送报文段一方的接收窗口。TCP协议中的字段

    Len=0: 发送文件TCP报文段Datas段的长度

    MSS=1460: 最大报文段长度,指每个TCP报文段中数据字段的最大长度。它不包含首部长度。是TCP首部中,选项中的字段。

    WS=256:窗口扩大因子;只能在连接建立阶段确定;在连接期间他的值不能够改变;新的窗口值=首部中定义的窗口值乘以2的(窗口扩大因子)的次方;由于窗口值不够用。选项中的字段。 ??书上说,窗口扩大选项占3个字节,其中一个字节表示移位值S,S最大为14,新的窗口值等于TCP首部中的窗口位数从16增大到(16+S)。可这里WS怎么会等于256呢??

    答:这里的256是指窗口扩大了256倍,其S=8, 2的8次方 = 256. 符合S<=14. 打开软件下面TCP部分的详细说明,有介绍。

    SACK_PERM=1: 允许选择确认。 TCP选项中的字段。

     

    恩,总算了解一点点了,这些信息是TCP协议上的内容。

    下面,分析一下详细的内容,点击上面的包,下面会出现详细的信息,比如下面这样:

    分别是什么意思呢?

    经我思索了半天,才恍然大悟,这是根据网络分层模型显示的不同层的内容。

    Frame 551: 对应的是这个包的概略信息,里面有我们是否对其做过标记,怎么用彩色显示之类的内容。

    Ethernet II: 对应网络接口层,表明采用Ethernet II的太网标准帧格式。

    Internet Protocal Version 4: 对应网络层,表明采用IPv4

    Transmission Control Protocol:对应传输层,表明采用TCP协议。

     

    下面,一个一个点开,看看里面的详细内容。

    Ethernet II:

     

    可以看到源和目标的硬件地址。

    unicast表示单播。

    ??那一堆的...是什么? LG IG又是什么??

    答:那些点是指要标明的字段中非重要的信息未,重要的位的数字被显示出来了。

     

    IPv4:

    先把IP首部的格式放上来,有助于分析:

     

     

    开始说明了使用的协议版本是IPv4, 首部长度是20字节。

    Differentiated Services Field:区分服务字段

    (DSCP 0x00: Default; ECN:0x00) 表示一个特定的上层协议所分配的重要级别,默认的DSCP值是0,相当于尽力传送,ECN字段被分为ECN-Capable Transport(ECT)bit和CEbit, ECT bit设置为0,表明该传输协议将忽略CE bit. CE bit 将由路由器设置,设置为0说明对末端节点不挤塞。

    IP包的总长度为52字节,标志字段为1302

    标识字段为0x02,表明没有分片,片偏移量为0,生存时间为128,上层协议为TCP

    首部检验和下面的Good和Bad都是False, 我理解的是因为这是第一个包,不存在验证问题。

     

    TCP

     

     这里,看看这些包究竟在做什么

    是我的电脑跟某个网站交互的前4个包。

    其中前三个包可以明显看出是TCP的三次握手。

    那么,问题来了:

    为什么第三个包的长度比前两个短呢?在建立握手的过程中交换了什么信息呢?

    (我自己的理解,不一定对,欢迎指正)

    我们分析一下前三个包的信息,可以发现,只有TCP首部长度不同,前两个包用到了12个字节的TCP选项字段,而第三个包没有。

     

    就多在画圈的地方了,在选项字段,双方传递了自己的最大报文长度(MSS),窗口扩大选项(window scale)和可选择确认选项(SACK)。其实就是为双方之后传递数据的大小,确认方式等做了信息交换,保证双方能够正常的通信。

     

     转: http://www.cnblogs.com/dplearning/p/4820098.html

     

     

  • 相关阅读:
    遇见SQL(2)
    遇见SQL(1)
    JAVA自学笔记(10)—Stream流、方法引用
    JAVA自学笔记(9)——网络通信、函数式接口
    JAVA自学笔记(7)—文件
    JAVA自学笔记(6)—异常、线程、函数式编程
    Python--模块Module
    Python--软件目录结构
    Python--迭代器
    Python--生成器
  • 原文地址:https://www.cnblogs.com/web21/p/6374757.html
Copyright © 2011-2022 走看看