精华内容
下载资源
问答
  • Wireshark抓包TCP包头分析

    千次阅读 2019-10-07 14:19:44
    TCP包头分析 注释:    端口号范围:0-65535    源端口号:是客户端进程随机生成的,一般是从50000开始的    目标端口号:一般是服务器固定的。如:mysql:3306 ...
    TCP包头分析
    • 注释:
         端口号范围:0-65535
         源端口号:是客户端进程随机生成的,一般是从50000开始的
         目标端口号:一般是服务器固定的。如:mysql:3306
         序列号seq:TCP为每个字节都进行了编号。
         确认号ack:通过ack来确认每个字节是否收到,判断是否需要重传!
         控制位:SYN:请求建立连接位
             FIN:请求断开连接位
            RST:重置位,强制对方断开连接,释放会话
            PSH:推送位,推送数据到应用层,为1时为有应用层数据
            ACK:确认位,该位为开关,为1时,ack号有效,为0时,ack无效。
             URG:紧急位,为1时,
               代表有些字节为紧急数据,需要第一时间推送到应用层,需要与紧急指针配合。
         窗口大小:win窗口,用于通知发送方自己的缓存大小。
         校验和:校验整个TCP段
    • 在这里插入图片描述

      wireshark的TCP包头分析

      在这里插入图片描述
      在这里插入图片描述
      TCP三次握手,建立连接,原理图

      在这里插入图片描述

      Wireshark分析
    • 图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。
    • 第一次握手数据包
    • 第二次握手数据包
    • 第三次握手数据包
      图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。
    • 在这里插入图片描述

      第一次握手数据包

      在这里插入图片描述

      第二次握手数据包

      在这里插入图片描述

      第三次握手数据包

      在这里插入图片描述

      三次握手完成后

      在这里插入图片描述

      TCP的四次握手断开连接

      在这里插入图片描述 在这里插入图片描述
      点击下面获取学习链接


      wireshark安装及网卡配置
      wireshark数据包过滤
      Wireshark 窗口介绍
      Wireshark抓包TCP包头分析
      Wireshark数据流追踪和信息说明
      Wireshark抓包页面的登录信息

    展开全文
  • TCP包头详解

    千次阅读 2019-07-14 08:57:12
    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,...

    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)限制。之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。


    src port:源端口,2个字节,是一个大于1023的16位数字,由基于TCP应用程序的用户进程随机选择

    dst port:目的端口,2个字节,指明接收者所用的端口号,一般由应用程序来指定

    Sequence number:顺序号,4个字节,用来标识从 TCP 源端向 TCP 目的端发送的数据字节流,它表示在这个报文段中的第一个数据字节的顺序号。如果将字节流看作在两个应用程序间的单向流动,则 TCP 用顺序号对每个字节进行计数。序号是 32bit 的无符号数,序号到达 (2^32) - 1 后又从 0 开始。当建立一个新的连接时, SYN 标志变 1 ,顺序号字段包含由这个主机选择的该连接的初始顺序号 ISN ( Initial Sequence Number )

    Acknowledgement number:确认号,4个字节,包含发送确认的一端所期望收到的下一个顺序号。因此,确认序号应当是上次已成功收到数据字节顺序号加 1 。只有 ACK 标志为 1 时确认序号字段才有效

    Offset:报头长度,4位,给出报头中 32bit 字的数目。需要这个值是因为任选字段的长度是可变的。这个字段占 4bit , 即TCP 最多有 60(15*4) 字节的首部

    Resrvd:保留区域,6位,保留给将来使用,目前必须置为 0

    Control Flags(6位)控制位包括

    **URG**:为 1 表示紧急指针有效,为 0 则忽略紧急指针值
    
    **ACK**:为 1 表示确认号有效,为 0 表示报文中不包含确认信息,忽略确认号字段
    
    **PSH**:为 1 表示是带有 PUSH 标志的数据,指示接收方应该尽快将这个报文段交给应用层而不用等待缓冲区装满
    
    **RST**:用于复位由于主机崩溃或其他原因而出现错误的连接。它还可以用于拒绝非法的报文段和拒绝连接请求。一般情况下,如果收到一个 RST 为 1 的报文,那么一定发生了某些问题
    
    **SYN**:同步序号,为 1 表示连接请求,用于建立连接和使顺序号同步( synchronize )
    
    **FIN**:用于释放连接,为 1 表示发送方已经没有数据发送了,即关闭本方数据流

    Window Size:窗口大小,2个字节,表示从确认号开始,本报文的源方可以接收的字节数,即源方接收窗口大小。窗口大小是一个 16bit 字段,因而窗口大小最大为 65535(2^16 - 1)

    Checksum:校验和,2个字节,对整个的 TCP 报文段(包括 TCP 头部和 TCP 数据),以 16 位字进行计算所得。这是一个强制性的字段,要求由发送端计算和存储,并由接收端进行验证

    Urgent Pointer:紧急指针,2个字节,是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。 只有当URG 标志置 1 时紧急指针才有效

    Option and Pad:选项和填充,n*4字节,常见的可选字段是最长报文大小 MSS(Maximum Segment Size) 。每个连接方通常都在通信的第一个报文段(为建立连接而设置 SYN 标志的那个段)中指明这个选项,它指明本端所能接收的最大长度的报文段。选项长度不一定是 32 位字的整数倍,所以要加填充位,使得报头长度成为整字数

    Data:数据,不定长度,为上层协议封装好的数据

    最大报文段长度MSS(Maximum Segment Size)

    指明自己期望对方发送TCP报文段时那个数据字段的长度。比如:1460字节。数据字段的长度加上TCP首部的长度才等于整个TCP报文段的长度。MSS不宜设的太大也不宜设的太小。若选择太小,极端情况下,TCP报文段只含有1字节数据,在IP层传输的数据报的开销至少有40字节(包括TCP报文段的首部和IP数据报的首部)。这样,网络的利用率就不会超过1/41。若TCP报文段非常长,那么在IP层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片装配成原来的TCP报文段。当传输出错时还要进行重传,这些也都会使开销增大。因此MSS应尽可能大,只要在IP层传输时不需要再分片就行。在连接建立过程中,双方都把自己能够支持的MSS写入这一字段。MSS只出现在SYN报文中。即:MSS出现在SYN=1的报文段中
    MTU和MSS值的关系:MTU=MSS+IP Header+TCPHeader
    通信双方最终的MSS值=较小MTU-IP Header-TCP Header

    展开全文
  • TCP包头分析

    千次阅读 2009-03-06 12:35:00
    TCP包头分析:SYN同步序号,用来发起一个连接。syn位用于建立连接的过程(如TCP三次握手)。ACK建立连接和数据发送,关闭连接都用。 ack位被设置为1表示ack_seq是有效的。如果ack为0,则该数据段不包含确认信息,...

     TCP包头分析:

    SYN
    同步序号,用来发起一个连接。syn位用于建立连接的过程(如TCP三次握手)。
    ACK
    建立连接和数据发送,关闭连接都用。 ack位被设置为1表示ack_seq是有效的。如果ack为0,则该数据段不包含确认信息,所以,ack_seq域应该被忽略。
    RST
    连接异常。
    FIN
    用于释放一个连接。它表示发送方已经没有数据要传输了。
    SEQ
    等于该主机选择本次连接的初始序号加上报文段中第一个字节在整个数据流中的序号。在连接建立的时候,会随机选择一个初始序号。序号是32 bit的无符号数。
    WINDOW
    16 位滑动窗口的大小,单位为字节。接受方用来通知发送方接受 buffer 的大小,发送方不能过分的发送,导致接受方的 buffer 溢出。
    PSH
     接收方在收到数据后应立即请求将数据递交给应用程序,而不是将它缓冲起来直到整个缓冲区接收满为止(这样做的目的可能是为了效率的原因)
    URG
    发送紧急数据。这个设施可以代替中断信息。


    TCP 的重传机制 Go-Back-N
        接受方不断发送 ACK 信息和 32 位的 acknowledge seq number, 用来通知发送方,期望接收到数据包的序号,同时也表示已经正确接收的数据。acknowledge seq number 不一定要连续。

    Delayed ACK
        TCP 并不是对收到的数据立即发送 ACK 信息,而是希望ACK 信息随着数据一起发送。如果在 200 ms 内,没有数据需要发送,那么就发送一个不含数据的 ACK 数据包。这个数据包不应该增加 TCP 的顺序编号,接受方应该从数据长度上判断出这个包是一个控制包。
        还有一种算法是如果接收到一个数据包之后,启动一个计时器,在计时器超时之前没有可供 piggy back 的数据发送,那么就发送一个 纯 ACK ,一个不带数据包的 ACK 消息。

    滑动窗口
        当收到 ACK 的时候,发送方的窗口变大,也叫开窗, 当发送数据的时候,发送方的窗口变小,也叫关窗。在窗子完全关闭的时候,不能在发送数据了。

    下面要用到的一些术语的定义:
    数据段(segment):一个数据段就是任意的TCP/IP数据或确认包(或两者兼备)。
    发送端最大数据段尺寸(SMSS):SMSS是发送端能发送的最大数据段的尺寸。
    接收端最大数据段尺寸(RMSS):RMSS是接收端愿意接收的最大数据段的尺寸。
    满尺寸数据段:一个包括允许最大数目数据的数据段(也就是说,一个包括SMSS字节数据的数据段)。

    拥塞窗口(the congestion window:cwnd):是对发送端收到确认(ACK)之前能向网络传送的最大数据量的一个发送端限制。
    接收端窗口(rwnd):是对未完成数据量的接收端限制。Cwnd和rwnd的最小值决定了数据传送。
    慢启动阀值(ssthresh),被用来确定是用慢启动还是用拥塞避免算法来控制数据传送。

    初始窗口(iw):初始窗口是三次握手完成后发送端的拥塞窗口的尺寸。
    丢失窗口(lw):丢失窗口是在一个TCP根据它的重传定时器检测到了数据丢失之后,拥
    塞窗口的尺寸。
    重启窗口(rw):重启窗口是TCP在一段闲置期之后重新开始传送后拥塞窗口的尺寸(如
    果使用慢启动算法;参见4.1节以获取更多的讨论)。
    传送尺寸:已经被发送但还没有确认的数据的总量。


    拥塞控制算法
       (四种:慢启动,拥塞避免,快速重传和快速恢复)
        1.慢启动和拥塞避免
        慢启动算法在cwnd<ssthresh时使用,拥塞避免算法在cwnd>ssthresh时使用。当cwnd和ssthresh相等时,发送端既可以使用慢启动也可以使用拥塞避免。
    cwnd<ssthresh时
        慢启动
        发送方收到一个 ACK ,增加cwnd 。
        cwnd = cwnd + MSS    (MSS < SMSS)
        cwnd = min(cwnd,rwnd)
        如果是 DUPACK ,那么也应该增加。一个 segment 的大小是可变的,假设是个固定值,当出现 3 个DUPACK 的时候,进入 Fast Recovery 过程。当出现超时重传,则进到 Congestion Avoid 的过程。
    cwnd>ssthresh时:
        拥塞避免
        收到一个 ACK 的时候,增加 cwnd。
        cwnd = cwnd + MSS*MSS/cwnd
        如果有 3 各重复的 ACK ,那么应该进入 FastRecovery 的过程。如果有重传,那么应该进入 Slow Start 的过程。可以重传第一个 Unacknowledged segment ,也可以重传许多。DUP ACK 不能增加

        2.快速重传/快速恢复
        快速重传算法以三个重复ACK的到达(收到四个一样的ACK,其间没有任何其他包到达)为一个数据段已经丢失的标志。在收到三个重复ACK之后,TCP不等重传定时器超时就重传看来已经丢失的数据段。
      
        当一个TCP用重传定时器检测到数据段丢失时,ssthresh的值必须设定大于等式中给出的值:
       ssthresh = max (FlightSize / 2, 2*SMSS)     (FlightSize是仍在网络中传送的数据量)

        快速重传
        当收到 3 各 DUPACK 的时候会进入 Fast Recovery .重传第一个 unacknowledged segment.
        改变 ssthres , sshres = max(flightsize/2, 2*SMSS)
        改变 cwnd , cwnd = 3*SMSS
        重置重传定时器。
        如果还有新的 DUPACK 到来,那么 cwnd 还会增加, 每次增加 SMSS, 当有 ACK 确认最新的数据,那么 cwnd 设置成为 sshres , 进入 Congestion Avoid 的过程。

        如果在 fast Recovery 的过程中,出现重传, 应该进入 Slow Start 的过程。
        发生重传的处理
        cwnd = MSS
        sshres = max(flightsize/2, 2*MSS)
        重置对于 DUPACK 的计数器
        RTO = min(2*RTO, 64 seconds)
        如果一个包超过重传 4 次,那么 TCP 连接关闭。
        重置关于重传的计时器。
        停止测量 RTT 和 RTO 。
        不再发送新的数据包
        当所有 on the fly 的包都得到确认之后,启动关于重传的计时器,进入 slow start 的过程

        如果在重传的过程中,还发生了重传,也就是计时器超时。
        重新分组。发送方不一定重传和原来一模一样的包,也可以在重传的包内包含新的数据,以增加吞吐量. 尤其是有很多小包的时候。应该发送出去多少个重传的包呢?
        如果在 slow start 的时候超时,应该传送一个 cwnd 那么多的包,cwnd = MSS.
        如果在 congestion avoid 的时候超时,应该传送一个 cwnd 那么多的包,cwnd = MSS.
        如果因为三个 dup ack ,那么应该发送 1 个包。
        如果在 fast recover 的过程中, 每收到一个 DUP ACK ,增加 cwnd 一个 MSS ,发送一个新包。
        RTO 和 RTT 的测量
        RTT_Err = RTT_Delay - RTT_Ave
        RTT_Ave = RTT_Ave + 0.125 × RTT_Err
        RTT_Dev = 0.75 × RTT_Dev + 0.25 × | RTT_Err |
        RTO = RTT_Ave + 4 × RTT_Dev

        根据实现不同,可能所有的包都作测量,也可能选择某些包作测量。

        乱序的包
        如果收到乱序的包,那么就应该立即发送 ACK ,以确保对方知道 DUPACK ,然后及时重传。

    展开全文
  • tcp协议包头分析

    千次阅读 2013-03-21 18:55:23
    相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助.    而且对于有网络协议工程师之类笔试,几乎是必考的内容....

    相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助.

     
       而且对于有网络协议工程师之类笔试,几乎是必考的内容.企业对这个问题热情之高,出乎我的意料:-)。有时上午面试前强调这个问题,并重复讲一次,下午几乎每一个人都被问到这个问题。
     
    因此在这里详细解释一下这两个过程。
     
    TCP三次握手
     
    所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。
     
    三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。
     
     
     
     
    • 第一次握手:
      客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。
    • 第二次握手:
      服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。

     

    • 第三次握手.
      客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1

    SYN攻击

       在三次握手过程中,服务器发送SYN-ACK之后,收到客户端的ACK之前的TCP连接称为半连接(half-open connect).此时服务器处于Syn_RECV状态.当收到ACK后,服务器转入ESTABLISHED状态.

      Syn攻击就是 攻击客户端 在短时间内伪造大量不存在的IP地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直 至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。

     Syn攻击是一个典型的DDOS攻击。检测SYN攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击.在Linux下可以如下命令检测是否被Syn攻击

    netstat -n -p TCP | grep SYN_RECV

    一般较新的TCP/IP协议栈都对这一过程进行修正来防范Syn攻击,修改tcp协议实现。主要方法有SynAttackProtect保护机制、SYN cookies技术、增加最大半连接和缩短超时时间等.

    但是不能完全防范syn攻击。

    TCP 四次挥手

    TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。

     

     

     

    参见wireshark抓包,实测的抓包结果并没有严格按挥手时序。我估计是时间间隔太短造成。

    展开全文
  • TCP包头格式详解

    万次阅读 2015-08-18 09:28:53
    网络数据包的结构,以及协议分析。如:网络监控,故障排查等……   IP包是不安全的,但是它是互联网的基础,在各方面都有广泛的应用。由IP协议衍生的协议族有10数种(据我所知),以后还会出现 更多的基于...
  • 本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析。 一、概述 TCP是面向连接的可靠传输协议,两个进程互发数据之前需要建立...
  • 引言 我们在学习TCP的时候,都知道TCP的三次握手。书本上的三次握手很是理论,下面...抓包工具 - Wireshark(详细介绍与TCP三次握手数据分析) 使用WireShark抓包工具深入理解TCP连接的三次握手以及知识延伸 ...
  • TCP/IP包头详解

    千次阅读 2017-05-09 17:56:53
    TCP包头至少包含20个字节。每个byte=8bit
  • TCP/IP协议栈概述及各层包头分析

    千次阅读 2015-08-14 17:16:04
     对之前几篇博文涉及到的网络通信协议进行分析,概述出TCP/IP的协议栈模型,最后根据实例对各层包头进行分析。   二、标准TCP/IP协议栈模型  标准TCP/IP协议是用于计算机通信的一组协议,通常被称为TCP/IP协议...
  • 网络数据[TCP包头]分析很不错的文档
  • IP协议是TCP/IP协议族中最为核心的协议。它提供不可靠、无连接的服务,也即依赖其他层的协议进行差错控制。在局域网环境,IP协议往往被封装在以太网帧中传送。而所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中...
  • 一、TCP粘包产生的原理 1.TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。出现粘包现象的原因是多方面的,它既可能由发送方造成,也可能由接收方...
  • IP包头分析

    千次阅读 2020-07-02 16:54:07
    除可选项外一共5行,每一行占32位(bit),IP包头最小长度占20字节,其中可选项的最大长度可占上图的10行,每行32bit,占40字节,也就是说IP包头的长度是可变的:IP包头的最小长度为20字节,最大长度为60字节,通常可...
  • wireshark抓tcp包并分析

    千次阅读 2021-11-30 10:52:08
    首先,我们要确认我们抓包网站的ip,这里用nslookup查看,这里要查看的原因是我们要分析tcp的包,要知道连接的两台机器的IP,不然你连IP都不知道还这么分析呢?(虽然你可以随便抓一个来分析);这里我们访问百度: ...
  • TCP协议分析和详细解析

    千次阅读 2017-06-21 10:10:43
    TCP协议是传输层协议,传输层要解决的问题是主机间进程之间的通信。 TCP提供的是面向连接的服务,它解决的问题是保证传输中数据的有序、可靠、无丢失、不重复的问题。它是面向字节传输的,是全双工通信。 一、TCP...
  • TCP头部分析与确认号的理解 1、TCP的特点: 基于字节流 面向连接 可靠传输 缓冲传输 全双工 流量控制 2、头部格式和说明 图源百度。如下图示,就是TCP包的头部结构。可以看到这个头部最少有4x5=20个字节。 ...
  • tcp/ip包头设置

    2011-10-30 21:42:20
    来自:... 下面是抓包分析.我自建虚拟机 ip通信如下192.168.1.1-&gt;192.168.1.2 IP头部: 45 00 00 30 52 52 40 00 80 06 2c 23 c0 a8 01 01 c0 a8 01 02 TCP头部:0...
  •  本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析。 一、概述  TCP是面向连接的可靠传输协议,两个进程互发数据之前需要建立...
  • 某直播APP逆向TCP协议分析

    千次阅读 2019-06-19 11:04:03
    该直播APP采用TCP协议,TCP连接建立之后,首先进行基础连接认证,认证通过之后,进行帐号认证,完成即可进行获取角色信息、进入房间等各类操作。发送数据先进行ProtoBuf序列化,接着采用CRC32循环加密,添加包头...
  • 2、 通过跟踪TCP应用通信,能结合报文对整个通信过程进行分析。 3、 理解与掌握TCP协议、UDP协议通信机制 4、 熟悉UDP协议报文结构、领会UDP协议通信机制 5、 对比TCP、UDP协议主要特点 二. 实验环境 1、 头歌基于...
  • TCP协议常规报文抓包分析

    千次阅读 2019-05-15 14:21:56
    二、报文及对应的包头信息: 1.tcp连接建立:三次握手 报文抓包 交互流程 第一次握手:主机A---SYN---->主机B 主机A发送连接请求。主机A想要与主机B进行TCP通信,首先他需要向B发送一个syn同步序列编号...
  • 4)TCP包头分析: 5)TCP的三次握手建立连接 6)TCP的四次握手断开连接 7)UDP协议特点 8)UDP协议包头: 一、传输层协议: 1)TCP/IP协议族的传输层协议主要有两个: TCP(Transmission Control Protocol )...
  • 利用sniffer工具,分析TCP头的结构,并分析TCP的三次握手过程 1.分析TCP头的结构 (1)重新设置过滤器 步骤:点击菜单栏Capture→Define Filter,再选择Advance,勾选IP选项,在勾选IP项的时候,先将其展开,下拉,...
  • 本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析。 一、概述 TCP是面向连接的可靠传输协议,两个进程互发数据之前需要建立...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,980
精华内容 5,192
关键字:

TCP包头分析