• 传输层——TCP报文头介绍


    16位源端口号

    16位目的端口号

    32位序列号

    32位确认序列号

    4位头部长度

    保留6位

    U

    R

    G

    A

    C

    K

    P

    S

    H

    R

    S

    T

    S

    Y

    N

    F

    I

    N

    16位窗口大小

    16位检验和

    16位紧急指针

    可选项

    数据

    源端口:  长度为16位,2个字节。

    目的端口:  长度为16位,2个字节。

        IP实现了点到点的数据通信,而TCP实现的是端到端的通信。

        通信端用一个IP与端口号来唯一标识。(其实端口号就是用来标识同一主机中的不同进程。)

        IP协议负责将数据传输到目标主机,而TCP可以根据数据报中的端口号,将数据交给相应的程序进行处理。

    序列号: 长度32位,4个字节。

    确认序列号:长度32位,4个字节。

    头部长度:该字段占用4位,用来表示报文首部的长度,单位是4Byte。如:headLen = ((packet[12]>>4)&0x0F)*4;

    预留6位:长度为6位,作为保留字段,暂时没有什么用处。

     

    URG:长1位,表示紧急指针字段有效;

    ACK:长1位,置位表示确认号字段有效;

    PSH:长1位,表示当前报文需要请求推(push)操作;

    RST:长1位,置位表示复位TCP连接;

    SYN:长1位,用于建立TCP连接时同步序号;

    FIN:长1位,用于释放TCP连接时标识发送方比特流结束;

        ————该6位字段,理解不深,留作日后研究???

    窗口大小:长度为16位,2个字节。

    校验和:长度为16位,2个字节。

    紧急指针:长度为16位,2个字节。

    以上是TCP包头必须要有的字段,也称固有字段,长度为20个字节。

     

    可选项:此项是可选项(可有可无),解包时得具体分析(是TCP包头的一部分)。

     

     

     

     

  • 相关阅读:
    Miracast
    linux软中断与硬中断实现原理概述
    入门视频采集与处理(BT656简介)
    emms指令在MMX指令中的作用
    linux进程的地址空间,核心栈,用户栈,内核线程
    linux 线程的内核栈是独立的还是共享父进程的?
    进程内核栈、用户栈及 Linux 进程栈和线程栈的区别
    Gson JsonParser的使用
    封装JDBC事务操作,执行存储过程测试
    Oracle 存储过程,临时表,动态SQL测试
  • 原文地址:https://www.cnblogs.com/xiehy/p/3248280.html
Copyright © 2020-2023  润新知