网络协议与攻击模拟_05TCP协议

一、传输层知识回顾

1、传输层的功能

  • 定义应用层协议数据报文的端口号,流量控制
  • 对原始数据进行分段处理

2、传输层提供的服务

  • 传输连接服务
  • 数据传输服务、流量控制、差错控制、序列控制

3、传输层的协议

  • 面向连接的传输协议TCP
    要求数据在传输之前必须建立连接,数据传输完成后,必须释放连接
    仅支持单播传输,在两个终端之间建立点对点连接
  • UDP(用户数据报协议)

二、TCP协议

1、TCP协议

  • 面向连接的传输协议
  • 要求数据在传输之前必须建立连接,数据传输完成后,必须释放连接
  • 仅支持单播传输,在两个终端之间建立点对点连接

2、TCP报文结构

  • Source port:发送方端口号,随机端口
  • Destination:目标端口,HTTP协议,默认端口80
  • Sequence Number序列号
  • Acknowledgement number确认号
  • Header length:首部长度,32位
  • Reserved:为TCP将来发展预留的空间
  • Flags:控制位,常见的有urg、Ack、Push、Reset、Syn、Fin
    • urgent:用于标识发送数据时是否为紧急
    • Ack:确认控制位,服务器回复的确认
    • Push:是否将数据推到上一层
    • Reset:是否重置连接
    • Syn:建立连接时的控制位
  • Windows size value:窗口大小
  • Checksum 校验和
  • Urgent pointer:紧急指针
  • Options 选项

这里控制位为1表示现在正在发请求

Fin:数据发送完毕会有释放连接,当释放连接时Fin控制位为1

3、TCP报文字段

  • 序号seq:占32位,用于标识报文段所发送数据的第一个字节的编号。在TCP连接中,所传送的字节流的么一个字节都会按顺序编号。当SYN标记不为1时,这是当前数据分段的第一个字母的序列号;如果SYN的值为1时,这个字段的值就是初始序列值(ISN),用于对序列号进行同步。这时,第一个字节的序列号比这个字段的值大1,也就是ISN加1.
  • TCP确认号Acknowledgement numbe:占32位,它表示接收方期望收到发送方下一个报文段的第一个字节数据的编号,其值是接收计算机即将接收到的下一个序列号,也就是下一个接收到的字节的序列号加1.
  • TCP首部长度:数据偏移是指数据段中“数据”部分起始距离TCP数据段起始处的字节偏移量,占4位,其实这里的“数据偏移”也是在确定TCP数据段头部分的长度,告诉接收端的应用程序,数据从何处开始。
  • 保留Reserved:占4位,为将来TCP的发展预留的空间。目前必须全部为0.
  • URG:表示报文段中发送的数据是否包含紧急数据。URG为1表示有紧急数据,当URG为1时,后面的紧急指针字段才有效。
  • ACK:表示前面的确认字段是否有效。当ACK为1表示有效。只有当ACK为1时,前面确认号字段才有效。TCP规定,连接建立后,ACK必须为1.
  • PSH:告诉对方 收到该报文段是否立即把数据推送给上层。如果值为1,表示应当立即把数据交给上层,而不是缓存起来。
  • RST:表示是否重置连接。如果RST为1,说明TCP连接出现了严重错误(如主机奔溃),必须释放连接,然后再重新建立连接。
  • SYN:在建立连接的时候使用,用来同步序列号。当SYN为1,ACK为0时,表示这是一个请求建立连接的报文段;当当SYN为1,ACK为1时,表示对方同意建立连接。当SYN为1时,说明这是一个请求建立连接或同意建立连接的报文,只有再前两次我手中SYN才为1.
  • FIN:标记字段数据是否发送完毕。如果FIN为1,表示数据已经发送完成,可以释放连接。

4、TCP连接与释放

(1)三次握手

服务器上搭建有网站,开启了HTTP服务

TCP三次握手

  • 客户机向服务器发送请求建立连接,SYN控制位为1,报文有序列号seq假设为x。
  • 服务器收到客户端发来的建立连接请求后向客户端发出确认请求报文,ACK控制位为1,ack序列号为x+1,(ack=seq+1表示对上一条请求建立连接报文的确认),SYN控制位为1,报文有序列号seq记为y。
  • 客户端收到服务器发来的确认连接请求后,client向server回应确认请求报文,ACK控制位为1,ack序列号为y+1。seq 序列号为x+1.

Q:为什么是三次握手?不是两次或者四次呢?

  • 两次握手,会发生什么情况呢? 服务端在发出应答消息后无法确认客户端是否接受到消息了。

  • 四次握手,在三次握手中已经建立了一个稳定的传输流,为什么还要浪费性能再去发一次消息,第四次握手是一种性能浪费。

(2)四次挥手

TCP四次挥手

  • 客户端发送一个FIN+ACK标记的包,告诉服务器需要关闭连接,表示自己不用发送数据了,但是还可以接收数据。发送完成后,客户端进入FIN_WAIT_1状态。
  • 服务端发送一个ACK的确认包,告诉客户端接收到关闭的请求,但是还没有准备好。发送完成后,服务端进入CLOSE_WAIT状态,客户端收到这个包后,进入FIN_WAIT_2,等待服务器关闭连接。
  • 服务端准备好关闭连接时,发送FIN+ACK标记的包,告诉客户端准备关闭了。发送完成后,服务端进入LAST_ACK状态,等待客户端确认
  • 客户端接收到服务端的关闭请求,再发送ACK标记的确认包,进入TIME_WAIT状态,等待服务端可能请求重传的ACK包。服务端接收到ACK包后,关闭连接,进入CLOSED状态。

    客户端在等待固定时间(两个最大段生命周期)后,没有接收到服务的ACK包,认为服务器已关闭连接,自己也关闭连接,进入CLOSED状态。
     

Q:为什么是三次握手,却是四次挥手?三次挥手不可以吗?

假设是三次挥手,在服务器接收到客户端发送关闭的请求后,把SYN和ACK包一起发过去。这样会造成服务端还有数据没有发送完,造成了数据的丢失。所以中间的这一段时间,等待服务器把剩余的数据发送完是很有必要的。

(3)TCP半关闭

  • 客户机向服务器发送FIN表示客户机想要断开连接,但是服务器还在给客户机发送数据。
  • 客户机向服务器发送重新建立连接请求,客户机表示可以重新建立与服务器的连接。
  • 服务器向客户机发送了FIN+ACK断开连接的请求。
  • 客户机又向服务器发送重新建立连接的请求。 

(4)TCP半连接

半连接是SYN Flood的原理所在,SYN Flood是DDOS的一种。

  • 三次握手过程中客户机向服务器发了SYN请求
  • 服务器正常响应。标识与客户机建立连接,客户机已经占用了服务器资源。
  • 客户机不进行第三次握手,称为半连接,会造成一直占用服务器的连接资源。

5、常见的TCP端口号

  • 21 FTP
  • 22 SSH
  • 23 Telnet
  • 25 Smtp
  • 53 DNS
  • 80 HTTP
  • 110 POP3
  • 143 IMAP4
  • 443 HTTPS
  • 3306 MYSQL
  • 3389 RDP

dns是基于UDP的,但是如果有两台DNS服务器,要把一台DNS服务器上的数据同步到另一台DNS服务器上(即主DNS和辅助DNS的数据要实时同步),需要可靠连接的,所以会建立TCP连接。

三、winshark抓包分析

1、三次握手

2、四次挥手

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/621495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt6入门教程 5:添加资源和应用程序图标

目录 一.Qt资源系统(Qt Resource System) 1.Resource Collection Files(.qrc) 2.External Binary Resources 3.Compiled-In Resources 4.Resource Compiler (rcc) 5.在程序中使用资源 二.添加.qrc文件 1.添加.qrc 2.编辑…

AI剪辑助手:轻松剪辑专注创意,视频批量AI智剪的方法

随着科技的飞速发展,人工智能(AI)在许多领域都展现出了强大的能力。在视频剪辑领域,AI剪辑助手的出现,给内容创作者带来了前所未有的便利。它不仅能快速、高效地完成视频剪辑工作,还能释放创造力。今天一起…

【HarmonyOS】网络数据请求连接与数据持久化操作

从今天开始,博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”,对于刚接触这项技术的小伙伴在学习鸿蒙开发之前,有必要先了解一下鸿蒙,从你的角度来讲,你认为什么是鸿蒙呢?它出现的意义又是…

【SpringBoot实战专题】「开发实战系列」深入迁出探索剖析SpringBoot服务容器特性的利器之Actuator(Web端点)

深入迁出探索剖析SpringBoot服务容器特性的利器之Actuator 内容简介内容大纲Actuator Web端点洞察应用程序内部状况的关键Actuator提供了13个端点启用ActuatorMaven依赖Gradle依赖 Actuator透视组件装配过程获得Bean装配报告(/beans)Bean属性概览Bean报告…

目标跟踪算法的目标丢失与遮挡处理 - 注意力机制

目标跟踪算法在处理目标遮挡和丢失情况时,采用了多种技术和策略。这些技术主要集中在提高算法的鲁棒性和适应性上,使其能够在复杂环境中有效跟踪目标。以下是一些常见的处理方法: 多模型融合:通过结合多个跟踪模型或特征表示&…

Linux安装texlivetexstudio

linux下写paper神器,简单好用,装就完了,不要多问 一、安装Texlive texlive镜像下载,传送门。这里我们选择texlive2023-20230313.iso下载。cd到下载目录,挂载镜像sudo mount -o loop texlive2023-20230313.iso /mnt #…

数据脱敏(一) 基本概念

定义 数据脱敏,是对敏感数据进行变形处理,其目的是保护隐私数据等信息的安全。也称为数据漂白、数据去隐私化或数据变形,是一种技术机制,用于在给定的规则、策略下对敏感数据进行变换、修改,以隐藏敏感信息。数据脱敏的…

如何提升演讲能力

强大输入体系 固定时间进行同领域阅读,类似1万小时定律 提升输出能力 输出写作时,梳理你的业务逻辑,倒逼输入,遇到困难时输出,知识体系会更加完善 心流状态 写提纲一、二、三,提示整个链路 故事化 学…

常用的Docker命令

以下是一些常用的Docker命令&#xff1a; 镜像相关命令&#xff1a; 搜索镜像&#xff1a;docker search <镜像名称>拉取镜像&#xff1a;docker pull <镜像名称>列出本地镜像&#xff1a;docker images删除本地镜像&#xff1a;docker rmi <镜像ID> 容器相…

centos docker-compose安装教程-2024最新版 亲测可用

目录 长时间不安装,生疏了,再次记录下 1.下载 2.修改名称 3.提权 4.测试验证 长时间不安装,生疏了,再次记录下 1.下载 官网地址 docker-compose官网地址&#xff1a;https://docs.docker.com/compose/compose-file/compose-file-v3/ #进入目录 cd /usr/local/bin#下载 wg…

大数据学习(32)hive优化方法总结

&&大数据学习&& &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 承认自己的无知&#xff0c;乃是开启智慧的大门 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一下博主哦&#x1f91…

js解构方式

//这两种写法哪个更好 const { signInfo: { isdist, signType } {} } data || {}; const { signInfo: { isdist, signType }} data;这两种写法都是解构赋值的方式&#xff0c;用于从对象中提取嵌套属性。它们的区别在于当data为undefined或者null时的行为不同。 第一种写法…

xtu oj 1251 Colombian Number

题目描述 对于正整数n,不存在整数k,使得n等于k加上k的数码累加和&#xff0c;我们称这样的数是哥伦比亚数或者自我数。 比如 11就不是一个哥伦比亚数&#xff0c;因为10加上10的数码累加和1等于11;而20则是一个哥伦比亚数。 输入 第一行是一个整数K(K≤10,000)&#xff0c;表…

NI PXIe-6386国产替代,8路AI(16位,14 MS/s/ch),2路A​O,24路DIO,PXI多功能I/O模块

PXIe-6386 PXIe&#xff0c;8路AI&#xff08;16位&#xff0c;14 MS/s/ch&#xff09;&#xff0c;2路A​O&#xff0c;24路DIO&#xff0c;PXI多功能I/O模块 PXIe-6386是一款同步采样的多功能DAQ设备。该模块提供了模拟 I/O、数字I/O、四个32位计数器和模拟和数字触发。板载N…

每日一练 | 华为认证真题练习Day164

1、当两台BGP邻居协商的HOLD Time参数为0时&#xff0c;则不发送Keeplive报文。 A. 正确 B. 错误 2、ospf路由协议中&#xff0c;bandwidth-reference命令的单位是mbps。 A. 正确 B. 错误 3、在OSPF广播或者NBMA网络类型中&#xff0c;ROUTER PRIORITY大的设备不一定会成为…

C++排序算法概览

1. 冒泡排序 (1) 基本思路 冒泡排序是一种简单的、但效率极低的排序算法&#xff0c;基本思路是重复地遍历待排序的序列&#xff0c;通过相邻元素的比较和交换&#xff0c;将较大&#xff08;或较小&#xff09;的元素逐步"冒泡"到右侧&#xff08;或左侧&#xff0…

Qat++,轻量级开源C++ Web框架

目录 一.简介 二.编译Oat 1.环境 2.编译/安装 三.试用 1.创建一个 CMake 项目 2.自定义客户端请求响应 3.将请求Router到服务器 4.用浏览器验证 一.简介 Oat是一个面向C的现代Web框架 官网地址&#xff1a;https://oatpp.io github地址&#xff1a;https://github.co…

[网络安全]DHCP 部署与安全

一 、DHCP作用 (Dynamic HOst Configure Protocol ) 动态IP配置协议 作用:动态自动分配IP地址 二、DHCP相关概念 地址池/作用域: (IP、子网掩码、网关、DNS、周期) 三、DHCP优点 减少工程量 避免IP避免 提高地址利用率 四、DHCP原理 成为DHCP租约过程 步骤: 1.发送 DHC…

13.Kubernetes部署Go应用完整流程:从Dockerfile到Ingress发布完整流程

本文以一个简单的Go应用Demo来演示Kubernetes应用部署的完整流程 1、Dockerfile多阶段构建 Dockerfile多阶段构建 [root@docker github]# git clone https://gitee.com/yxydde/http-dump.git [root@docker github]# cd http-dump/ [root@docker http-dump]# cat Dockerfile …

15个为你的品牌增加曝光的维基百科推广方法-华媒舍

维基百科是全球最大的免费在线百科全书&#xff0c;拥有庞大的用户群体和高质量的内容。在如今竞争激烈的市场中&#xff0c;利用维基百科推广品牌和增加曝光度已成为许多企业的重要策略。本文将介绍15种方法&#xff0c;帮助你有效地利用维基百科推广品牌&#xff0c;提升曝光…