tcp数据报头解析

2023-11-20 16:18
文章标签 数据 报头 解析 tcp

本文主要是介绍tcp数据报头解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

tcp数据报报头解析:
        16bits:        源端口,即发送端的端口
        16bits:        目标端口,即到达端的端口
        32bits:        Seq,tcp数据报序号,tcp数据报太大超过ip数据报容许,需要分段,标记分段序号
        32bits:        Ack number,回应序号,确认码
        4bits:           tcp数据报报头大小,4个字节为一个单位
        6bits:          保留,尚未使用
        6bits:          控制标志码,0关闭,1启动
                                        URG:1紧急数据包,接收端紧急处理
                                        ACK:1响应数据报,和32bits,Ack number有关
                                        PSH:1要求对方立刻传送缓冲区内对应数据包,无需等待满再传送
                                        RST:1表示立刻结束连接,无需等待手续,此时发送方已强制断线
                                        SYN:1表示发送方希望建立连接,表示开始连接的意思
                                        FIN:1表示传送结束,通知对方完毕,是否同意断线,此时发送端还在等待回复
        16bits:        window(滑动窗口),告诉对方本机的缓存器还可以接收的数据,单位-字节,0表示满,应暂停传输数据
        16bits:        数据效验码,如若不等,表示数据报损毁,进而请求重发数据包
        16bits:        紧急数据位置,仅当URG=1时启用,表示紧急数据所在的位置
        nbits:          任意数据,一般表示接收端可以接收的最大数据容量等
        36-nbits:    补足任意数据,使达到32bits,tcp头部需要时32bits整数倍

tcp3次握手建立连接:
        first:               发送端发送一个        SYN=1;                 seq=n,ack=0      的数据报
        second:        接收端发送一个        SYN=1,ACK=1;seq=i,  ack=n+1 的数据报
        third:              发送端发送一个       ACK=1;                 seq=m,ack=i+1  的数据报    

这篇关于tcp数据报头解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/395863

相关文章

Redis 内存淘汰策略深度解析(最新推荐)

《Redis内存淘汰策略深度解析(最新推荐)》本文详细探讨了Redis的内存淘汰策略、实现原理、适用场景及最佳实践,介绍了八种内存淘汰策略,包括noeviction、LRU、LFU、TTL、Rand... 目录一、 内存淘汰策略概述二、内存淘汰策略详解2.1 ​noeviction(不淘汰)​2.2 ​LR

IDEA与JDK、Maven安装配置完整步骤解析

《IDEA与JDK、Maven安装配置完整步骤解析》:本文主要介绍如何安装和配置IDE(IntelliJIDEA),包括IDE的安装步骤、JDK的下载与配置、Maven的安装与配置,以及如何在I... 目录1. IDE安装步骤2.配置操作步骤3. JDK配置下载JDK配置JDK环境变量4. Maven配置下

Python中配置文件的全面解析与使用

《Python中配置文件的全面解析与使用》在Python开发中,配置文件扮演着举足轻重的角色,它们允许开发者在不修改代码的情况下调整应用程序的行为,下面我们就来看看常见Python配置文件格式的使用吧... 目录一、INI配置文件二、YAML配置文件三、jsON配置文件四、TOML配置文件五、XML配置文件

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespace id不一致处理

《mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespaceid不一致处理》文章描述了公司服务器断电后数据库故障的过程,作者通过查看错误日志、重新初始化数据目录、恢复备... 周末突然接到一位一年多没联系的妹妹打来电话,“刘哥,快来救救我”,我脑海瞬间冒出妙瓦底,电信火苲马扁.

golang获取prometheus数据(prometheus/client_golang包)

《golang获取prometheus数据(prometheus/client_golang包)》本文主要介绍了使用Go语言的prometheus/client_golang包来获取Prometheu... 目录1. 创建链接1.1 语法1.2 完整示例2. 简单查询2.1 语法2.2 完整示例3. 范围值

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2