聊聊TCP协议-------协议头详解

最近工作不是特别忙,又开始学习一些东西,之前因为对netstat命令显示的tcp状态不是很了解,加上之前看了一下tcp/ip那本黑色的书,准备整理一下tcp的相关内容。



首先看一下tcp header 的内容,大概有这么几个字段

source port: 2字节,也就是16位,表明发送端的端口号

destination port:2字节,16位,标示接收端的端口号

tcp作为一个端到端的协议,只需要关注端口号,是不需要关注具体ip的,IP地址封装在ip层,这点也是我觉得tcp/ip协议栈的美妙之处,一层包含着一层,将整个网络抽象的非常好,以致应用层不需要太关心底层协议。

sequence no:表示tcp数据中第一个数据字节的编号

acknowledgment no: 表示对上次收到包的确认,和下次期待收到的包。

offset: 4bit,tcp头的的大小,单位是4字节。这个最小为5 ,就是不包含任何数据和tcp option的大小。

reserve:6 bit 保留字段,现在没用

tcp flags: tcp 控制位 6 bit,从左到右分别是:

    URG:  紧急标示位,同urgent pointer一块使用,标示从sequence no 指示的位置偏移urgent pointer 位 为紧急内容,之后是正常内容
    ACK:  表示是确认包
    PSH:  表明不是用tcp缓存,尽快把包给应用层

    RST:  tcp 复位标识,用于异常终止连接,或者检测半打开

    SYN:  Synchronize sequence numbers 同步序号,用于tcp建立

    FIN:  No more data from sender 表示没有数据需要发送


window: 2字节 发送者期望接收的字节流的大小,用于滑动窗口协议

checksum: 2字节 tcp头和tcp数据段的校验和

urgent pointer: 2字节 和control flag的urg 一块使用,表示紧急数据的偏移量,计算方式是sequence no + urgent pointer

tcp options: 多个字节,不太常用,要结合具体指令来看

Padding:填充,主要用来保证tcp头部是4字节的整数倍 ,对应offset


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值