当前位置: 首页 > news >正文

TCP的理解

一.报头特点

共64kb,报头20kb,剩下的40多kb是在选项中选择去使用

二.重要特点(部分)

1.确认应答

当客户端发送数据给服务器时服务器在收到数据后会返回一个ack来让客户端知道它发的数据已经被收到了。

2.超时重传

两种情况

第一种是数据没传过去

当客户端给服务器发送数据后服务端没有收到那么自然就不会返回ack在一定的时间内那么客户端也就能得到服务器是不是没有收到数据那么就会再一次将数据进行传输此时客户端就得到ack。

第二种是ack没传过去

当客户端给服务器发送数据后服务端收到了但是在返回ack的时候没有传送过去,那么在一定的时间内客户端会再次发送数据那么服务器就会反回ack

那么以上这两种情况就叫做超时重传

3.连接管理

1.“三次握手”

那这明明有四次连接的过程那为什么叫三次握手呢?(一定是客户端先发起)

因为中间的syn和ack可以当成一次传输为了提高效率,因为它们都是内核进行的计算所以能同一时间来进行传输

那么它的作用和意义呢?

1.能够首先检查此次网络传输的通道是否是畅通无阻的能够顺利传送数据

2.能够来检查接受端和发送端的能力

其中的1能代表服务器知道自己的接受能力没问题,客户端的发送能力没问题,2能代表客户端知道自己的发送能力没问题,接受能力也没问题,服务器的发送能力也没问题,3.能代表服务器能够知道自己的发送能力没问题。

3.能够协商一些必要的参数(往往在报头的选项中体现)

当第一次连接时若有数据没有传送过来,但它们的连接已经建立到了第二次此时第一次的数据才来那么这个数据显然不是第二次想要那么有了在选项中协同一些相同的选择那么第一次的数据能够被显然认出来根本不是第二次想要的那么就可以对其进行删除(就比如清朝的人一来到现代我们也能立马认出因为穿的衣服,头发等都有巨大的差别)

2.“四次挥手”(随便哪个先提出都可以的)

那么是为什么这次的中间两个不能在一起发送来提高效率呢?

因为这个fin是在应用层上的也就是在写代码的时候来决定是否发送所以有可能有时候可以有时候不可以一起传送

这些中有表明状态的分别为LISTENING ,ESTABLING,CLOSE_WAIT,TIME_WAIT。

LISTENING  等待客户端发来连接,准备建立TCP连接

ESTABLING 是客户端与服务端已经建立了连接

CLOSE_WAIT 被断开的一方(表示 “被动等待关闭”。此时该方需要先处理完自身应用层的剩余数据,再决定是否发送自己的 FIN 报文。)

TIME_WAIT 主动断开的一方 (它的作用在于防止最后一个ack报文丢失)why?因为若当客户端发起fin那么服务器会返回fin和ack若客户端此时的ack没有传输到服务端那么服务端就会进行超时重传若没有这个状态那么就会一直这样那么就不能关闭连接。

四.滑动窗口

因为传送数据时一个一个的传送效率不高因此采用这个能提高效率,当发送端收到一个ack后也能继续往下执行,若当在传输中丢失了一段数据那么就会进行快速重传让发送端知道缺少了那个数据就会进行快速重传

五.流量控制

因为在socket中有一个缓冲区,若当客户端发来数据时那么它先会发来一小段数据来得知服务器最多能够处理多少数据那么得知过后就发送最大数据到缓冲区中从而来提高效率

有两个问题分别是数据没有传过来和没有返回ack

第一个问题数据没有传过来:那么发送端就没有收到ack那么就会快速重传,从而得到ack。

第二问题ack没有被返回:那么发送端会再次发送数据过去,此时会可能得到ack,那么此时的数据就有两份了该怎么办呢?因为有缓冲区所以不用着急若还没被缓冲区读走那么就可以直接删除新来的,若已经读取走了那么可以得到下次传过来的ack的开头数据若已经是超过了比如上面这个滑动窗口的图若此时数据传送过来的是2001但我们这个数据是1~1000那么说明已经有了只是被读取走了因此我们就删除新来的数据

六.拥塞控制

中间这些相当于各种网络通信设备这些把它们看成一个整体

先传送一部分数据过去看有没有丢包这些,若没有就再以指数倍的增长,以指数倍的增长后达到一个阈值再以一个线性增长的方式去传送当达到一定阈值后可能就会出现丢包了此时在后重复即可

七.延时应答

当发送端发来数据后接受端先不用立即返回ack而是等一会在反应让这个缓冲区里能有能多的时间去读这些缓存从而扩大滑动窗口从而来提高效率

八.捎带应答

指在 TCP 通信中,接收方在有应用层数据需要发送给发送方的时候,会将原本应该立即发送的 ACK 确认报文延迟,与应用层数据一起打包发送给对方

九.粘包问题

就是接收方不知道怎么对缓冲区的东西来进行划分

怎么解决呢?

1.利用特殊的分隔符

2.指定出包的长度

十.异常处理

1.当客户端与服务器正常连接,进程销毁了

那么他们会进行完四次挥手然后取消连接

2.当一方正常关机

有可能四次挥手挥得完若没有的话那么有一方就没有得到ack的反应那么就会导致一方进行超时重传若过了一定的超时上限那么就会关机

3.突然一方关机

若是接收端关机,那么最开始发送端会继续进行发送,若重传多次仍失败,会根据 TCP 保活机制(需提前开启,不是所有场景都默认开启)那么就会发送 “保活探测报文”来检查对方是否还在

若是发送端关机,那么接收端会进行重启后来再次与你进行连接若还是持续没有连接上那么就会关机

4.网线断了

那么就是3中的两个情况一起来

http://www.dtcms.com/a/423841.html

相关文章:

  • 鸿蒙应用主题模式切换实现详解
  • Matplotlib `imsave()` 函数详解
  • NFC技术如何破解电子制造领域的效率瓶颈与追溯难题
  • sk06.【scikit-learn基础】--『监督学习』之决策树
  • 银川怎么做网站wordpress炫酷站
  • 网站说明页命名大连响应式网站建设
  • 程序综合实践第二次递归与dfs
  • 半双工 vs 全双工:对讲机与电话的根本区别
  • 华茂达建设集团网站公司注册网上核名业务如何终止
  • 从虚拟背景到绿幕替换:人像分割功能在直播美颜sdk中的落地应用
  • 建设电影网站论文微信营销模式有哪些
  • Spring的配置(使用注解)
  • Codex CLI 配置 Azure OpenAI GPT-5-codex 指南
  • SAP与阿里巴巴战略合作升级:四大核心云解决方案落地阿里云
  • 用网站模板做新网站网络营销实训报告
  • Spring Ai Alibaba开发指南
  • 建立什么网站赚钱淘宝交易指数换算工具
  • Sirius 开源免费的漏扫工具
  • 网站可以做被告嘛wordpress 设置404
  • flink api-datastream api-transformation算子
  • 自己做的网站如何发布什么公司可以做网站等级保护
  • 怎么做网站自动响应新手做淘宝客网站教程
  • 深度解析ZStack Cloud v5.4.0 LTS 基础架构三大核心突破
  • markitdown,面向AI输入的文档转换工具
  • C4D储卡器底部塑料壳建模之内部结构详解
  • 泉州网站搭建统计局网站集约化建设方案
  • Hanlp 配置
  • 网站开发实例拍拍网站源码
  • 湖北省建设厅信息网站模板建设网站
  • 计算机网络4