基于tcp的应用层协议还原技术是网络安全每个领域都需要的一种基础技术。

首先,我们需要认识到tcp协议的两个特征:

  1. tcp是一种流协议。发送者以字节流的形式传递给接收者。
  2. tcp协议本身没有固有的”报文”或”报文边界”的概念。(参考:https://blog.csdn.net/gengzhikui1992/article/details/83865596)

tcp协议的特征1意味着,在还原应用层协议之前,我们需要首先将一个个的tcp数据包组装成一个字节流,即tcp流重组

  1. 初始化TCP Session的Hash表,针对每一次TCP连接都建立一个TCP Session 。
  2. 收到一个数据段,首先按照此数据段的(四元组)计算所属TCP会话是否已经在表中存在,若存在,则根据序列号将其插入到所属会话上下文的适当的位置。不存在的话,建立一个TCP Session节点并存储到HASH表中。
  3. 在此过程中,如果收到的数据包与链表中某一个数据包的序列号和数据长度相同的话,说明是重发包,做丢弃处理,保证链表中每一个数据包的序列号连续,且第一个数据包为SYN包,最后一个包为FIN包(或RST包);

tcp协议的特征2意味着,在tcp流重组的基础上,应用层协议还原还需要考虑到:

  1. 一个完整的应用层协议数据包,可能同时存在于多个tcp数据包中。
  2. tcp的数据包边界和应用层数据包边界不一定重合。

那么我们如何确定一个tcp流中,每个应用层数据包的边界呢?

  1. 一般的应用层协议,首部都会有一个标识应用层数据包长度的字段。(比如http协议的content_length字段)
  2. 有些应用层协议,可能会通过一些特殊的标记符号,用于规定应用层数据包的边界。(比如换行符)

基于tcp的应用层协议还原相关推荐

  1. 基于TCP的应用层协议 与基于UDP的应用层协议分别有哪些

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 基于TC ...

  2. 基于TCP的应用层协议、与基于UDP的应用层协议分别有哪些?

    参考:https://zhidao.baidu.com/question/337954440.html 基于TCP的有FTP.Telnet.SMTP.HTTP.POP3与DNS 基于UDP的有TFTP ...

  3. 基于TCP或UDP协议的应用层协议

    TCP和UDP都是传输层协议,上面是应用层,下面是网络层 TCP与UDP区别: TCP(传输控制协议)提供的是面向连接.可靠的字节流服务.当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连 ...

  4. 服务器ipv4协议认证,基于TCP/IP应用层密码认证协议的研究

    Internet在全世界盛行,它的基础协议就是传输控制协议/网际协议(TCP/IP).TCP/IP是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来以及传送方式 ...

  5. java面向服务架构_面向服务的体系架构 SOA(一) --- 基于TCP、HTTP协议的RPC

    1.1 基于TCP协议的RPC 1.1.1 RPC名词解释 RPC的全称是Remote Process Call,即远程过程调用,RPC的实现包括客户端和服务端,即服务调用方和服务提供方.服务调用方发 ...

  6. udp协议没有粘包问题、基于socketserver实现并发的socket(基于tcp、udp协议)、基于udp协议的套接字、操作系统原理以及进程知识

    基于udp协议的套接字通信服务端 from socket import *server=socket(AF_INET,SOCK_DGRAM) #数据报协议->udp server.bind((' ...

  7. 基于TCP或UDP的应用层协议有哪些?——Linux网络编程

    参考博文01:https://blog.csdn.net/Wu000999/article/details/89293717 博文02 https://blog.csdn.net/u014082714 ...

  8. 常见的基于TCP或UDP的应用层协议

    基于TCP的应用层协议有:SMTP.TELNET.HTTP.FTP 基于UDP的应用层协议:DNS.TFTP(简单文件传输协议).RIP(路由选择协议).DHCP.BOOTP(是DHCP的前身).IG ...

  9. 36 张图详解应用层协议:网络世界的最强王者

    上帝视角 应用层 我们前面介绍过 TCP/IP 模型的下三层,分别是网络接入层.网络层和传输层.它们都是为应用层服务的,传输应用层的各种数据,现在我们就来看看最高层的应用层. 应用层 在 TCP/IP ...

最新文章

  1. 基于单片机的水壶自动加热系统_基于烟雾检测火灾自动报警系统
  2. jvm性能调优实战 -33每日百亿数据量的实时分析引擎,如何定位和解决频繁Full GC问题
  3. 用C++实现二分查找
  4. php多条件筛选顺序_php多条件组合筛选
  5. Flutter底部导航栏BottomNavigationBar页面状态保持解决方案
  6. Snake Ladders bfs
  7. DevOps组织IO专业人员新角色分析与技能提升
  8. 2022-03-28 术语MES、WMS
  9. Mandelbrot vs Julia
  10. Python抽象类(abc模块)
  11. 阿阳网客:steam搬砖项目超完整版实操分享
  12. 批量将txt文件转为csv文件
  13. stm32将flash虚拟成U盘来下载程序
  14. 算法竞赛零散知识点记录
  15. K近邻(k-Nearest Neighbor,KNN)算法,一种基于实例的学习方法
  16. web期末网站设计 HTML5+CSS大作业——汽车自驾游(10页) 自驾游主题HTM5网页设计作业成品
  17. mysql的锁机制,你真的了解吗?进来吧!用图表告诉你
  18. 获取中国移动光猫H2-2超管密码
  19. 快速上手 Kotlin 开发系列之数据类和枚举
  20. #Python #2022卡塔尔世界杯 #FIFA World Cup Qatar 2022 # 机器学习 #数据分析 用Python预测世界杯决赛

热门文章

  1. python的matplotlib的函数_在Python中使用matplotlib绘制条件函数
  2. linux中特殊字符反引号,linux中的特殊符号$ ‘’ 反引号 反斜杠
  3. 设计模式:000设计模式与面向对象介绍
  4. 射击比赛(java)
  5. android 9.0 权限管理_你真的了解Android权限机制吗?
  6. linux 挂iscisc存储,基于arm的嵌入式linux操作系统的移植研究-通信与信息系统专业论文.docx...
  7. 源服务器未能找到目标资源的表示或者不愿,java - 源服务器没有找到目标资源的当前表示,或者不愿意透露一个存在。 关于部署到 tomcat - 堆栈内存溢出...
  8. python空条件_python – 如何在SQLAlchemy中指定一个条件,其中一个条件要求列为空?...
  9. java匿名内部对象_JavaSE 学习参考:匿名内部类和匿名对象
  10. 双y轴设置 颜色_项目实战:Qt多段Y轴折线图框架(双Y轴段折线、支持拽拖、浮动游标显示X值各段Y值、实时下位机数据)...