传输层TCP

报头
  


  
1.报头和有效载荷如何分离将,有效载荷向上交付?
tcp有个标准报头长度为20,那是不是以为我们可以像udp一样分离依靠报头大小去分离,我们仔细去看我们报头中还有个选项没包含到。


我们还有个首部长度,四位可以表示1111,最大为15,它要乘以4才能表示报头长度,也就是说报头长度必须是4的倍数,选项大小最大为40字节,所以我们再读取报头时,首先读前20个标准报头长度,再从首部中读取整个报头的长度。

16位窗口大小
  

  
当发送方发了很多数据,把对方的接受缓冲区填满了,但是发送方不知道对方缓冲区满了,发送方还要发,可能就造成了数据泄漏,为了使传输的效率变高,防止数据泄漏,我们就要解决这个问题的关键,就是让发送方知道对方的接受缓冲区被填满,强制停止发送
我们有个策略叫做流量控制,这个策略由tcp协议完成的,也就是说是OS中的tcp模块完成的,tcp协议也叫传输控制协议
所以我们根本不用去考虑接受缓冲区被填满的情况,在文件IO的原理是一样的
如何流量控制
  
  
发送方得知道接收方的接受能力,就是要知道接受方接受缓冲区的剩余空间。

我们在通信的时候不是单发面的发送,服务器接收到消息给客户端确认的消息(ACK)(确认应答机制),我们接收方缓冲区的剩余空间就会被填充到窗口大小,客户端也就知道了要缓慢发送还是停止发送。停止发送也就是说直接让客户端的发送方写满发送缓冲区,就让进程阻塞,直到OS重新给发送,这也就是同步机制


ACK


这个词也许很陌生,但我们在通信时就是发送报头+数据ACK肯定也是一种报文.
它的作用:是确认应答,表示接收方已经成功接收到某个数据段。
tcp保持可靠性
如果有应答,对于发送方,能保证上面的消息全部接受到。


关于确认应答和tcp数据发送模式

Tcp发送数据的方式
1.串型发送 一条一条发 (理解)
  
  
2.并行发送(常见)
发送时间,进行重叠,同一时刻发送多条报文
  
  
保证数据按序到达?
server收到的报文可能是乱序的,他是不可靠的——报文按序到达,依靠报头中的32位序号解决,32位序号,根据序号进行排序
服务端发送ACK也要一对一的回应给客户端那些报文被收到了,此时由32位确认序号保证,例如32位序号为100的报文的ACK中确认序号为101,确认序号之前的所有报文已经被收到,这样的设计有一个好处,就是允许了少量的ACK丢失。
既然有了32位序号,为什么又要有确认序号呢,他们两的值不能是一样的吗?
捎带应答,是指它既对报文进行了应答的同时又捎带了数据,为了防止乱序,就要填充自己的32为序号,又要给对方确认应答,所以又要填充自己的32位确认序号
由此可见:tcp保证可靠性,但不仅仅可靠性,还积极的提高了效率

标记位

server一定会接收到各种不同的报文

例如:三次握手syn,四次挥手fin

此时就得引入标记位
例如如果是syn报文,syn的标记位置为一

16位紧急指针

URG


标志位为URG
urg指针标记为一,当发送紧急报文时,紧急报文也得排队,但是需要尽快处理,所以得让它插队,紧急报文会携带紧急数据,而紧急指针表示的是数据的偏移量,接收方会优先去依靠紧急指针提供的便宜量查看数据中的紧急数据,
值得一提的是:紧急指针只存在1个字节

紧急指针有怎么使用呢?标识紧急任务,当上传任务可能上错了想要让他暂停,就把紧急数据变为1,让他赶紧暂停上传任务

psh


当我们的接收缓冲区满了之后,发送方会定时发送询问报文,而我们的接受方同时也会发送一个窗口大小更新报文。
询问报文:就是把psh标记为一,让服务器赶紧把数据向上层交付
psh不仅仅只在这种情况下使用,在任何需要让接收方尽快将数据进行上层交付的情景都可以使用
例如:我们在输入指令的时候,通常都是发送push的报文,让接收方尽快对报文进行解释

reset
tcp是保证可靠性的,那么三次握手是不是必须成功,错误的
我们的可靠性指的是我们发送消息,对方能确认收到,我们发的消息丢失对方收不到,对方也能知道对方没收到,这才叫可靠性。

在建立通信,三次握手中,第一次客户端syn发送出错时,我们是知道的,因为没有收到服务器的syn+ack,第二次客户端syn+ack发送出错时,我们也是知道的,因为此时连接没有建立好,当第三次ack发送时,因为它是最新的一条消息,他是没有应答的,我们不知道它到底发没发送成功,当客户端发送第三次握手ack时,服务端没收到,此时客户端是知道自己建立好了连接,但是服务端是不知道的,这叫建立连接认知不一致。


在此时,客户端不知道服务端没收到ack,客户端以为建立好了连接,接下来发送消息,服务器此时不知道建立好了连接,就会发送一个reset报文,告知客户端重新建立连接
  
  
  
建立连接认知不一致
,不一定是服务端不知道是否建立连接,网络传输的过程是非常复杂的,当服务器和客户端正常通信的时候,此时拔了客户端的网线,客户端知道了断开了连接,但是服务器是不知道的,此时客户端就需要发出reset报文了。

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

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

相关文章

【Axure高保真原型】分级树筛选中继器表格

今天和大家分享分级树筛选中继器表格的原型模板,点击树的箭头可以展开或者收起子级内容,点击内容,可以筛选出该内容及子级内容下所有的表格数据。左侧的树和右侧的表格都是用中继器制作的,所以使用也很方便,只需要在中…

SwiftUI:单个App支持设置多语言

SwiftUI 全新多语言方案 简化本地化的字符串- WWDC21 - 视频 本地化您的SwiftUI app - WWDC21 - 视频 构建全球化App:本地化的示例- WWDC22 - 视频 构建支持多语言的App - WWDC24 - 视频 单个App支持设置多语言 工程 Info.plist里添加 键值UIPrefersShowingLangua…

论1+2+3+4+... = -1/12 的不同算法

我们熟知自然数全加和, 推导过程如下, 这个解法并不难,非常容易看懂,但是并不容易真正理解。正负交错和无穷项计算,只需要保持方程的形态,就可以“预知”结果。但是这到底说的是什么意思?比如和…

【AI换装整合及教程】CatVTON:时尚与科技的完美融合

在当今数字化时代,时尚行业正经历着一场前所未有的变革,而 CatVTON 作为一款由中山大学、Pixocial 等机构联合研发的轻量化 AI 虚拟换装工具,无疑是这场变革中的璀璨明星。 一、独特的技术架构 CatVTON 基于 Stable Diffusion v1.5 inpainit…

css 切角实现(全)

效果 样式代码 <template><div class"container"><div class"clip-all-angle"> 4个角全部剪切 </div><div class"clip-two-angle"> 切底部两个角 </div><div class"clip-two-top-angle"> …

新鲜出炉,ECCV2024.9.25 首次提出基于 YOLO 目标检测的无源域自适应

原文标题&#xff1a;Source-Free Domain Adaptation for YOLO Object Detection 中文标题&#xff1a;基于 YOLO 目标检测的无源域自适应 论文地址&#xff1a; https://arxiv.org/abs/2409.16538 代码地址&#xff1a; GitHub - vs-cv/sf-yolo 1、Abstract 无源域自适应&…

ACL访问控制

要求&#xff1a; PC1与PC2不能通信。PC1可以和PC3通信。PC2可以和PC3通信。 1. VLAN配置 根据拓扑图的连接&#xff0c;PC1、PC2、PC3属于不同的VLAN。我们需要确保交换机上的端口已经正确划分到不同的VLAN。假设交换机接口的VLAN配置已经完成&#xff08;其他博文有)&…

【Linux】线程池详解及其基本架构与单例模式实现

目录 1.关于线程池的基本理论 1.1.线程池是什么&#xff1f; 1.2.线程池的应用场景&#xff1a; 2.线程池的基本架构 2.1.线程容器 2.2.任务队列 2.3.线程函数&#xff08;HandlerTask&#xff09; 2.4.线程唤醒机制 3.添加单例模式 3.1.单例模式是什么&…

多IP访问网站

1.创建挂载点 mount /dev/sr0 /mnt vim /etc/yum.repos.d/base.repo [BaseOS] nameBaseOS baseurlfile:///mnt/BaseOS gpgcheck0 [Appstream] nameAppStream baseurlfile:///mnt/AppStream gpgcheck0 2.关闭防火墙等 systemctl stop firewalld setenforce 0 3.下载nginx…

【我的 PWN 学习手札】setcontext + shellcode

目录 一、setcontext gadget 二、setcontext shellcode &#xff08;一&#xff09;覆写__free_hook为setcontext53 &#xff08;二&#xff09;在堆块布置了一块sigframe &#xff08;三&#xff09;覆写__free_hook0x8__free_hook0x10 &#xff08;四&#xff09;从__…

流媒体协议.之(RTP,RTCP,RTSP,RTMP,HTTP)(一)

闲着没事做&#xff0c;记录一下开发项目用过的协议&#xff0c;项目中&#xff0c;大多是是实时显示播放的&#xff0c;通过私有协议&#xff0c;传输到上位机&#xff0c;实时播放&#xff0c;延时小于200ms&#xff0c;仿照这些协议&#xff0c;定义的数据格式。如果用这些协…

新王Claude 3.5的6大应用场景

Anthropic AI深夜发布了备受期待的Claude 3.5系列更新&#xff0c;包括了全新升级的Claude 3.5 Sonnet和首发的Claude 3.5 Haiku。 Claude 3.5 Sonnet能够理解细微的指令和上下文&#xff0c;识别并纠正自身错误&#xff0c;还能从复杂数据中生成深入的分析和洞察。 结合最先进…

10.22.2024刷华为OD C题型(三)--for循环例子

脚踝动了手术&#xff0c;现在宾馆恢复&#xff0c;伤筋动骨一百天还真不是说笑的&#xff0c;继续努力吧。 文章目录 靠谱的车灰度图恢复灰度图恢复 -- for循环使用例子 靠谱的车 https://www.nowcoder.com/discuss/564514429228834816 这个题目思路不难&#xff0c;就是要自…

手把手教你安装最强文生图工具ComfyUI

ComfyUI 是一款专为稳定扩散&#xff08;Stable Diffusion&#xff09;设计、基于节点的高效用户界面&#xff0c;因其高度的可定制性&#xff0c;正逐渐成为广大用户的新宠。本文教你如何在 Windows 和 Mac 上安装 ComfyUI&#xff0c;并提供一些快速上手的小贴士。 1 ComfyU…

【mysql进阶】4-7. 通用表空间

通⽤表空间 - General Tablespace 1 通⽤表空间的作⽤和特性&#xff1f; ✅ 解答问题 通⽤表空间是使⽤ CREATE tablespace 语法创建的共享InnoDB表空间 通⽤表空间能够存储多个表的数据&#xff0c;与系统表空间类似也是共享表空间&#xff1b; 服务器运⾏时会把表空间元数…

python爬虫——Selenium的基本使用

目录 一、Selenium的介绍 二、环境准备 1.安装Selenium 2.安装WebDriver 三、元素定位 1.常用定位元素的方法 2. 通过指定方式定位元素 四、窗口操作 1.最大化浏览器窗口 2.设置浏览器窗口大小 3.切换窗口或标签页 切换回主窗口 4. 关闭窗口 关闭当前窗口 关闭所…

博客搭建之路:hexo增加搜索功能

文章目录 hexo增加搜索功能本地搜索弊端algolia搜索 hexo增加搜索功能 hexo版本5.0.2 npm版本6.14.7 next版本7.8.0 作为一个博客&#xff0c;没有搜索功能&#xff0c;如何在大批文章中找到自己想要的&#xff0c;那在hexo中如何增加搜索功能呢&#xff1f; search:path: sea…

用接地气的例子趣谈 WWDC 24 全新的 Swift Testing 入门(一)

概述 从 WWDC 24 开始&#xff0c;苹果推出了全新的测试机制&#xff1a;Swift Testing。利用它我们可以大幅度简化之前“老态龙钟”的 XCTest 编码范式&#xff0c;并且使得单元测试更加灵动自由&#xff0c;更符合 Swift 语言的优雅品味。 在这里我们会和大家一起初涉并领略…

2.Linux按键驱动-创建字符设备,通过应用程序读取按键值

1.在上一个博客的基础上&#xff0c;添加一个字符设备 https://blog.csdn.net/weixin_40933496/article/details/143253515?spm1001.2014.3001.55012.在probe函数中注册字符设备 register_chrdev(包含对应的file_operations结构体) class_create device_create3.在中断处理函…

基于大模型的招聘智能体:从创意到MVP

正在考虑下一个 SaaS 创意&#xff1f;以下是我在短短几个小时内从创意到 MVP 的过程。 以下是我将在这篇文章中介绍的内容概述&#xff1a; 为什么这个想法让我产生共鸣我是如何开始构建它的我现在的处境以及我是否会真正推出 获得 SaaS 创意并构建它并不容易。就是这样。 …