12 tcp协议详解

news2024/11/23 22:52:43
1、tcp的本性

tcp是一个悲观者,生下来就不信任网络,任务会发生丢包等,所以要从算法层面来保证可靠性。

2、TCP 包头格式

tcp的包头格式比UDP要复杂的多。
在这里插入图片描述

1.源端口号和目标端口号是不可少的,这一点和 UDP 是一样的。如果没有这两个端口号。数据就不知道应该发给哪个应用。
2.包的序号:是为了解决乱序的问题。不编好号怎么确认包到达的前后顺序。
3.确认序号:发出去的包需要ack,不然我也不知道有没有收到,如果没有收到,就应该重发,直到收到为止。
  //这个可以解决不丢包的问题
4.状态位:
  SYN:是发起一个连接
  ACK 是回复
  RST 是重新连接
  FIN 是结束连接
  //TCP 是面向连接的,因而双方要维护连接的状态,这些带状态位的包的发送,会引起双方的状态变更

注意:tcp虽然是靠谱的协议,但是网络环境不好的时候,对于IP层丢不丢包,它也没有办法,tcp唯一能做的就是不断地重试。

3、tcp的握手和技能
  1. tcp如何保证对于连接的信任呢,为什么需要握手呢,这就好比人与人之间不会第一次见面就信任对方吧,怎么也得握手几次吧。
  2. tcp做流量控制:通信双方各声明一个窗口,标识自己当前能够的处理能力,别发送的太快,也别发的太慢。
  3. tcp拥塞控制:对于网络是否拥堵,tcp是无能为力的,唯一能做的就是控制自己,也即控制发送的速度。
  4. tcp需要关注的点如下:
1.顺序问题 ,稳重不乱
2.丢包问题,承诺靠谱
3.连接维护,有始有终
4.流量控制,把握分寸
5.拥塞控制,知进知退
4、TCP 的三次握手

tcp连接的建立,又称3次握手,这是一个连接维护的问题,这样比较便于理解。
就是一个:“请求 -> 应答 -> 应答之应答

A: 您好,我是A
B: 您好,我是B
A:  您好,B

为啥不是2次,4次?

1.假设网络环境不好,A发出了一个请求,包有可能会丢失或者请求超时了,于是A一直补发,直到B收到了请求,但是B收到的请求的时候,A可能不直到,所以A还会再发。
  如果B收到了请求:
    一是B不愿意建立练级,A会在一定时间后放弃
    二是B愿意建立连接,像A发送一个ack,但是B发出去的包也会像石沉大海一样,也不知道A有没有收到。
另外还有一种可能,就是之前A发送包出去绕了一圈回来了,B接收到了,同样认为这是一个正常的请求,于是给出了响应,这事听起来也是挺离谱的。
so,2次握手是不可靠的!

2. 为啥不是4次?
不是4次不行,400次都行,只是这样会没完没了,理由如下:
B发出的消息可能会发送多次,A只要收到一次,就认为连接建立了,自己的请求有了响应,A发送一个应答的应答。
而B也在等这个消息,才能确认连接是否建立,只有等到了这个消息,对于B来说,这个消息是有始有终的。
对于应答的应答,也有可能会丢,会绕路,甚至B都宕机了,是不是需要B再这个基础之上再应答,如此的话,就是没完没了了。

只要双方的消息都有去有回,就基本可以了

1.大部分情况下,AB 建立了连接之后,A 会马上发送数据的,这个时候很多问题就得到了解决。
//例如 A 发给 B 的应答丢了,当 A 后续发送的数据到达的时候,B 可以认为这个连接已经建立,或者 B 压根就挂了,A 发送的数据,会报错,说 B 不可达,A 就知道 B 出事情了。
2.如果A 比较坏,就是不发数据,建立连接后空着。我们在程序设计的时候,可以要求开启keepalive 机制,即使没有真实的数据包,也有探活包。
3.我们作为服务的提供者来说,如果A一直不发包,则可以主动关闭这个连接
5、包的序号问题
  1. 三次握手除了双方建立连接外,主要还是为了沟通一件事情,就是TCP 包的序号的问题。
  2. 每个连接都要有不同的序号。这个序号的起始序号是随着时间变化的。
  3. 序号,可以看成一个 32 位的计数器,每 4ms 加一。
  4. IP 包头里面有个 TTL,也即生存时间。
6、TCP 四次挥手

在这里插入图片描述

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

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

相关文章

ICCV 2023|PViC:构建交互谓词视觉上下文,高效提升HOI Transformer检测性能

文章链接:https://arxiv.org/abs/2308.06202 代码仓库:https://github.com/fredzzhang/pvic 在今年的计算机视觉顶会上,基于视觉Transformer(ViT)的工作仍然占有非常重要的地位。目前最受研究者青睐的,莫过…

JVM Native内存泄露的排查分析(64M 问题)

我们有一个线上的项目,刚启动完就占用了使用 top 命令查看 RES 占用了超过 1.5G,这明显不合理,于是进行了一些分析找到了根本的原因,下面是完整的分析过程,希望对你有所帮助。 会涉及到下面这些内容 Linux 经典的 64M…

2023最新版Android逆向教程——第4天:真机环境的配置

目录 一、安卓逆向设备推荐二、真机环境配置(刷机基础教程)2.1 刷机方式的分类2.2 刷机包的分类2.3 谷歌手机工厂镜像2.4 简单配置2.5 进入 Bootloader 模式2.6 刷机详解 二、真机环境配置(root)三、真机环境配置(其他)3.1 调整时间3.2 关闭 wifi 信号上的3.3 停用设置向导 安卓…

HBase基础编程

文章目录 HBase基础编程一、实验目标二、实验要求及注意事项三、实验内容及步骤 附:系列文章 HBase基础编程 一、实验目标 掌握如何通过HBase shell命令来设计HBase表结构实例,从而理解HBase的列式存储结构掌 握 java编程创建HBase表和删除HBase表。 …

新能源汽车高压线束是如何快速连接到测试设备上进行电性能测试的

快速连接形成稳定的电测试在新能源行业里面是很常见的测试场景,比如说在新能源汽车行业的电池包、电机、电控制器的电性能测试中会有很多高压线束,需要将这些线束和电池包、电控制器、电机与测试设备快速连接在一起进行相关的EOL/DCR测试。 新能源汽车高…

内网隧道搭建( 内网穿透)

一、使用代理工具 ew_for_win 1、环境准备: (1)一台双网卡虚拟机(作为跳板),能同时与攻击者主机和受害者主机通信: (2)一台攻击者主机: (3&…

【陈老板赠书活动 - 17期】- 她以亲身经历证明,程序员借助AI做副业可以有多成功!

陈老老老板🦸 👨‍💻本文专栏:赠书活动专栏(为大家争取的福利,免费送书) 👨‍💻本文简述:生活就像海洋,只有意志坚强的人,才能到达彼岸。 👨‍&am…

最新Next14 路由处理器 Route Handlers

四、使用Next路由处理程序 Next.js Route Handlers I. Next中路由处理程序是什么 ​ 路由处理程序是在用户访问站点路由时执行的功能。它们负责处理对定义的URL或路由的传入HTTP请求,以生成所需的数据。从本质上讲,当用户访问Next.js应用程序中的特定页…

全新智能后备保护器综合产品解决方案

SCB后备保护器是一种用于浪涌保护器(SPD)的专用外置脱离器,它可以有效地防止SPD因故障或短路而引起的火灾和设备损坏,同时保证SPD在雷电流冲击下不误动作,维持电气设备的防雷保护状态。地凯科技将介绍后备保护器的应用…

pycharm remote host显示nothing to show

远程服务器remote host右侧消失解决方法_dl_风禾的博客-CSDN博客文章浏览阅读727次。remote host打开方法https://blog.csdn.net/weixin_43959436/article/details/127818707?ops_request_misc%257B%2522request%255Fid%2522%253A%2522169940685316800197099235%2522%252C%252…

软件开发项目文档系列之十三如何撰写用户操作手册

目录 1 引言1.1 目的1.2 系统概述1.3 参考资料1.4 文档格式 2 系统运行环境2.1 系统硬件环境2.2 系统软件环境 3 系统设置说明3.1 公告发布3.2 角色管理3.3 通用管理 4 用户账户与访问说明4.1 注册与登录4.2 密码管理 5 数据管理说明5.1 数据导入与导出5.2 数据备份与还原 6 帮…

二维码智慧门牌管理系统升级解决方案:高效、安全、便捷

文章目录 前言一、用户管理二、菜单管理三、角色管理四、字典管理五、权限管理六、日志管理 前言 随着科技的不断发展,传统门牌管理系统已经无法满足现代管理的需求。为了提高管理效率,降低安全风险,并实现便捷的日志管理,二维码…

JAVA综合知识点总结-基础篇(4)

三十一、平时浏览的书籍..................................................................................... 三十二、java Exception体系结构......................................................................... 三十三、session和cookie的区别...........…

小白学爬虫:通过商品ID或商品链接封装接口获取淘宝商品销量数据接口|淘宝商品销量接口|淘宝月销量接口|淘宝总销量接口

淘宝商品销量接口是淘宝开放平台提供的一种API接口,通过该接口,商家可以获取到淘宝平台上的商品销量数据。使用淘宝商品销量接口的步骤如下: 1、在淘宝开放平台注册并创建应用,获取API Key和Secret Key等必要的信息。 2、根据淘宝…

可完美兼容迪文的串口屏?

如何让屏幕识别迪文协议,下面介绍淘晶驰USART HMI上位机用法 首先在工程输入0000-fffe 然后在program.s输入recmod2,在控件列表里就会刷新带有_vp的控件 带_vp的控件可以像迪文一样使用地址 导入字库,输入项目地址,根据通信协议来…

舞台灯光专用电机驱动及应用方案

舞台灯光的运用是舞台艺术中不可或缺的重要手段,达到突出重点、塑造人物形象、烘托环境气氛的目的;在舞台灯光的使用过程中,会对灯光的角度有较多的要求而步进电机具有较好的调节性;且控制方式更加灵活多样;能满足舞台…

配置阿里云镜像加速器 -docker

1.百度aliyun 2.找到镜像服务ACR 3.搞一个个人版,身份验证一下就行了很简单 4.找到镜像加速器Centos 5.在xshell执行下面4条命令:4条命令直接从上面操作文档中粘贴,不容易出错 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json…

企业如何选型iPaaS平台

企业数字化转型已是大势所趋,伴随着我国数字化转型改革的不断深入,加快推进企业数字化转型是新发展格局下实现经济高质量发展的必由之路。 企业在数字化转型过程中会搭建众多应用系统,以解决不同业务部门的需求。但系统之间如果互不连通&…

康其农业:西藏“高原红”苹果,成就世界屋脊的乡村振兴典范

金秋,阳光打在青藏高原,贡嘎山坡上的苹果树更显挺拔葱茏。清风拂过,一个个鲜红欲滴的苹果挂在枝叶之间,轻盈摇曳,像是在朝人们的味蕾招手。 康其农业集团董事长朱秋林抚摩着累累果实,笑容在双颊上绽开。 …

【慢SQL性能优化】 一条SQL的生命周期 | 京东物流技术团队

一、 一条简单SQL在MySQL执行过程 一张简单的图说明下,MySQL架构有哪些组件和组建间关系,接下来给大家用SQL语句分析 例如如下SQL语句 SELECT department_id FROM employee WHERE name Lucy AND age > 18 GROUP BY department_id其中name为索引&a…