计算机网络-传输层(TCP协议特点和TCP报文段格式,TCP连接管理)

news2025/1/18 11:04:41

文章目录

  • 1. TCP协议特点,报文段格式
  • 2. TCP连接管理

1. TCP协议特点,报文段格式

  1. TCP是面向连接(虚连接)的传输层协议
  2. 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。
  3. TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达。
  4. TCP提供全双工通信。对应的主机会设计发送缓存和接受缓存。保证全双工和可靠性。
  5. TCP面向字节流,TCP把应用程序交下来的数据仅仅当作是一连串的无结构的字节流。

TCP报文段首部格式:
在这里插入图片描述

  • 填充:保证TCP报文长度是4字节的整数倍

  • TCP报文的首部分成两部分,固定长度为20字节+选项和填充字段

  • 序号:在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本报文段所发送数据的第一个字节的序号。

  • 确认号:期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1为止的所有数据都已正确收到。(一般存在于TCP确认报文段上,通知发送方)

  • 数据偏移(首部长度):TCP报文段的数据起始处距离TCP报文段的起始处有多远,以4B位单位,即1个数值是4B。(可以理解为报文首部长度(固定长度20B+选项填充字段))

    TCP头部最大长度为60字节(1111(B)*4B=60字节)

  • 紧急位URG: URG=1时,标明此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用在缓存里排队,配合紧急指针字段使用。(发送方优先处理)

  • 确认位ACK:ACK=1时确认号字段有效,在连接建立后所有传送的报文段都必须把ACK置为1。

  • 推送位PSH:PSH=1时,接收方尽快交付接收应用进程,不再等到缓存填满再向上交付。(接收方优先处理)

  • 复位RST:RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输链接。

  • 同步位SYN:SYN=1时,表明是一个连接请求/连接接受报文。

  • 终止位FIN:FIN=1时,表明此报文段发送方数据已发完,要求释放连接。

  • 窗口:指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量。

    跟据对方的接收窗口,控制发送放的发送速度。

  • 检验和:检验首部+数据,检验时要加上12B伪首部,第四个字段为6。(检验方式与UDP相同,这里不在赘述)

  • 紧急指针:URG=1时才有意义,指出本报文段数据部分中紧急数据的字节数。

  • 选项:长度可变,内容有:最大报文数据部分长度MSS、窗口扩大、时间戳、选择确认等。

2. TCP连接管理

TCP传输特点:建立连接 -> 数据传输 ->连接释放

TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫服务器。

TCP连接建立过程:

假设运行在一台主机(客户)上的一个进程想与另一台主机(服务器)上的一个进程建立一条连接

客户应用进程首先通知客户TCP,他想建立一个与服务器上某个进程之间的连接,客户中的TCP会用三次握手与服务器中的TCP建立一条TCP连接

在这里插入图片描述
握手过程:

  1. 客户端发送连接请求报文段,无应用层数据。这个报文段SYN=1,序号位(seq)为随机值x
  2. 服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,允许连接,无应用层数据。这个报文段SYN=1,ACK=1,seq为随机值y,确认号(ack)为上一个连接请求报文段的seq的值x+1
  3. 客户端收到服务器发送的确认报文段,客户端为该TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据。。这个报文字段SYN=0,ACK=1,seq=x+1,ack=y+1

SYN洪泛攻击:

SYN洪泛攻击发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。

攻击者发送TCP SYN,SYN是TCP三次握手中的第一个数据包,而当服务器返回ACK后,该攻击者就不对其进行再确试,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。这样更加会浪费服务器的资源。

攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。

可以通过设置SYN Cookie防止

TCP连接释放过程(四次挥手)

参与一条TCP连接的两个进程中的任何一个都能终止该连接,连接结束后,主机中的资源(缓存和变量)将被释放。

在这里插入图片描述

挥手过程:

  1. 客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接。报文段中FIN=1,seq=u。这个报文段没有数据
  2. 服务器端返回一个确认报文段,客户到服务器这个方向的连接就释放了(半关闭状态。)确认报文段中ACK=1,seq=v,ack=u+1。
  3. 服务器端发完数据,就发出连接释放报文段,主动关闭TCP连接。报文格式(FIN=1,ACK=1,seq=w,ack=u+1)
  4. 客户端收到服务器端连接释放报文后,回送一个确认报文段,再等到时间等待计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭。没有直接彻底关闭连接,为了避免服务器发送的释放报文段丢失导致服务器无法正常关闭连接。

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

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

相关文章

代码随想录61——额外题目【数组】:1365有多少小于当前数字的数字、941有效的山脉数组、1207独一无二的出现次数

文章目录1.1365有多少小于当前数字的数字1.1.题目1.2.解答2.941有效的山脉数组2.1.题目2.2.解答3.1207独一无二的出现次数3.1.题目3.2.解答1.1365有多少小于当前数字的数字 参考:代码随想录,1365有多少小于当前数字的数字;力扣题目链接 1.1…

MySQl(六):日志

Mysql:日志日志错误日志二进制日志查询日志慢查询日志事务日志日志 错误日志 Linux 实时查看尾部内容 创建一个错误,进入log去看 二进制日志 查询日志 慢查询日志 事务日志 数据库都具有事务日志,用于记录所有事务以及每个事务对数据库所做…

IAST技术进阶系列(五):共生进化,自适应云原生

伴随着云计算带来的基础设施变革以及应用技术架构的转变,云原生和云原生应用已经成为耳熟能详的词汇。Gartner预测,到2025年,云原生平台将成为95%以上新数字化计划的基础。伴随云原生场景的普及,云原生应用将引领下一个应用时代&a…

day2【代码随想录】移除元素

文章目录一、移除数据元素1、暴力求解2、双指针法3、相向双指针法二、删除有序数组中的重复项三、删除有序数组中的重复项II四、移动零一、移除数据元素 一个数组 nums 和一个值 val,需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不…

GitHub热榜 这份《亿级流量并发手册》彻底揭开阿里高流量的秘密

我们知道,高并发代表着大流量,高并发系统设计的魅力就在于我们能够凭借自己的聪明才智设计巧妙的方案,从而抵抗巨大流量的冲击,带给用户更好的使用体验。这些方案好似能操纵流量,让流量更加平稳得被系统中的服务和组件…

从零开始学前端:DOM、BOM、焦点事件、键盘事件 --- 今天你学习了吗?(JS:Day20)

从零开始学前端:程序猿小白也可以完全掌握!—今天你学习了吗?(JS) 复习:从零开始学前端:CSSOM视图模式 — 今天你学习了吗?(JS:Day19) 文章目录从…

一致性哈希算法【图解理论 + 代码实现】

一致性哈希算法📖1. 普通哈希算法存在的问题📖2. 一致性哈希算法概念📖3. 代码实现📖1. 普通哈希算法存在的问题 在介绍一致性哈希算法前,我们先来看两个场景: 场景一: 现在,假如有…

liunx 磁盘分区格式报错问题及挂载步骤

磁盘分区 1.lsblk查看未分区空间 2.执行fdisk /dev/vda进行分区 3.n(小写n开始分区)-(顺序,可以默认顺序)-(分区的多少,默认是剩下所有)-(分区大小,默认是G)-w&#xf…

WebRTC系列 -- iOS 音频采集之 ADM、APM和AudioState

文章目录 1. adm和apm1.1 adm类关系简介1.2 adm及apm的创建2. AudoState在WebRTC的音频模块有三个比较重要的模块,ADM、APM和AudioState,其中ADM是audio device model 也就是负责处理音频采集和播放数据的模块,APM是Audio Processing model ,AudioState主要是为了处理多个c…

十六、Lua 文件 I/O的学习

Lua 文件 I/O Lua I/O 库用于读取和处理文件。分为简单模式(和C一样)、完全模式。 简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。完全模式(complete …

公众号免费查题接口调用

公众号免费查题接口调用 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(…

行业安全解决方案|腾讯游戏安全一站式防护,助力对抗外挂和DDoS攻击

近年来,在技术革新、监管加强、用户需求提升的三重作用下,游戏行业进入发展转型期,并涌现出游戏精品化、产业跨界升级、游戏出海三大趋势。随着游戏行业的繁荣,游戏厂商面临越来越多的黑灰产攻击、内容违规等游戏安全难题&#xf…

使用python画柱状图(matplotlib.pyplot)-- 你想要的设置这张图基本都包括

本人写论文时画的图,总结一下方法: 安心看下去,你应该就可以画出一个好看的柱状图,基本上需要的设置都有哦!!! 目录 1 首先引入画图所需要的包Matplotlib 2 Matplotlib Pyplot 3 画柱状图 …

宿舍管理系统的设计与实现/学生宿舍管理系统

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&a…

反向散射耦合RFID系统的原理及特点,带你更深入的了解

一.反向散射耦合RFID系统 1.反向散射 雷达技术为RFID的反向散射耦合方式提供了理论和应用基础。当电磁波遇到空间目标时,其能量的一部分被目标吸收,另一部分以不同的强度散射到各个方向。在散射的能量中,一小部分反射回发射天线,并…

Cadence orcad 原理图导出带书签目录的办法

Cadence orcad 导出pdf,方便软件工程师或者其他人员查看,但是Cadence自带的导出pdf的办法不能同时导出书签目录,不利于查看,这片文章就是介绍怎么使用Cadence orcad 原理图导出带书签目录的pdf,这里以cadence16.6举例。…

G1 垃圾回收器

引用: G1垃圾收集器详解_fyygree的博客-CSDN博客 深入解析G1垃圾收集器与性能优化_铁锚的博客-CSDN博客 垃圾回收器之 G1 垃圾回收器_嘿,鱼骨头^O^的博客-CSDN博客 G1是一款增量式的分代垃圾收集器 G1 物理上不分代,默认会将整个内存区域…

React - Jsx 概述

React - Jsx 概述 JSX 概述 目标: 了解 JSX 是什么、与 React.createElement 之间的关系 JSX 语法是另一种在 React 中创建元素的方式 使用他创建元素更加的简单 直接。 JSX 是 javaScript XML 简写 可以理解为在 JavaScript 中写 XML 格式的代码 const list (&…

力扣(LeetCode)808. 分汤(C++)

动态规划 如图,本题的状态表示,是二维 dpdpdp f[i,j]f[i,j]f[i,j] , iii 表示剩余的 aaa , jjj 表示剩余的 bbb , f[i,j]f[i,j]f[i,j] 表示 aaa 先取完的概率 。 按照 i/ji/ji/j 的剩余数量做集合划分 ①当 i≤0,j≤0…

代码冲突的产生以及解决方式

Git代码冲突解决 为什么会产生代码冲突? 远程仓库的某个文件内容发生了修改,而本地没有及时进行pull拉取,那么就会导致本地的分支落后。当修改完本地代码再push到远程的时候,就会产生代码冲突。如何避免产生代码冲突?…