TCP首部(2)

TCP首部(2) 2012-12-21 16:47:27

分类: LINUX

  现在我们来看看TCP选项,以及TCP客户端发起连接请求时,发送的第一个TCP包(三次握手协议)的内容。
    TCP选项紧跟在基本TCP首部后面,计入首部中的“长度”字段。其基本格式定义是8bit类型+8bit长度+nbit内容,多个选项依次排列。类型用于说明该选项的类型,在2.6.16内核的实现中,有如下的类型定义:
    #define TCPOPT_NOP          1
    #define TCPOPT_EOL          0
    #define TCPOPT_MSS          2
    #define TCPOPT_WINDOW       3
    #define TCPOPT_SACK_PERM    4
    #define TCPOPT_SACK         5
    #define TCPOPT_TIMESTAMP    8
    TCPOPT_NOP表示无操作,作填充用;TCPOPT_EOL表示选项表结束;TCPOPT_MSS用于通告最大报文段长度;TCPOPT_WINDOW是窗口扩大因子;TCPOPT_SACK_PERM表示允许SACK(有选择的确认),TCPOPT_SACK表示禁止SACK。TCPOPT_TIMESTAMP表示时间戳选项。
    下面我们分析一下客户端发起的第一个TCP包的内容,它是一个只含有20字节TCP首部和20字节TCP选项的IP数据报,选项用于向服务端通告一些基本的设置信息,用于建立连接。我们剥去以太网首部和IP首部,只看TCP相关的部分,它总共有40字节:
    数据报内容                          含义
以下为基本TCP首部
    80 0c                               16位源端口(32780)
    13 88                               16位目的端口(5000)
    00 00 07 bc                         由协议栈随机生成的32位序号
    00 00 00 00                         32位确认序号
    a                                   首部长度(10*4=40)
    0 02                                4位保留,syn=1表示要发起建立一个新的连接
    16 d0                               16位窗口大小(5840)
    dd 51                               16位检验和
    00 00                               16位紧急指针
以下为TCP选项
    02 04 05 b4                         最大报文段长度为1460
    04 02                               允许SACK
    08 0a 00 0f 00 60 00 00 00 00       时间戳(时间戳为00 0f 00 60, 时间回显应答为0)
    01                                  无操作,填充
    03 03 02                            窗口扩大因子为2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值