2.1(TCP)

TCP—传输控制协议

是一种面向连接的可靠传输协议。可靠、有序、无丢弃和不重复。

特点:

  • TCP是面向连接(虚连接)的传输层协议
  • 每一条TCP连接有且只能有两个端点。
  • 可靠、有序、无丢弃和不重复。
  • TCP协议提供全双工通讯
    • 发送缓存
      • 存放发送方TCP准备发送的数据。
      • TCP已发送但是没有收到确认的数据。
    • 接收缓存
      • 存放发送端发送来的不按照顺序到达的数据
      • 按照顺序到达的数据,但并未被应用程序读取
  • TCP是面向字节流的。TCP将应用层数据仅看做是一串无结构的字节流。
TCP连接的四元组(源IP、源端口、目IP、目端口)--->唯一标识一条TCP连接。套接字--->IP:port
TCP报文:

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fhwh-1258460726.cos.ap-nan在这里插入图片描述

确认序列号:接收方期望收到发送方发送的下一个字节的序号。1.接收方希望接收到的报文序号;2.该序号之前的数据以全部接收。-----累积确认机制

选项字段:长度可变。MSS数值、窗口扩大因子、时间戳、选择确认机制。

确认位ACK:当ACK=1时,确认号有意义。在连接建立以后,所有传输的报文段都必须将该标志位置为1.
同步位SYN:SYN=1时,代表该数据段是一个连接请求报文。
终止位FIN:当FIN=1时,表明此报文段发送方数据已发送完毕,要求释放连接。复位RST:表明TCP连接出现严重错误,需要释放连接并重新建立连接。紧急位URG:代表该报文中存在高优先级的数据,应尽快处理。需要配合紧急指针使用。
推送位PSH:接收方应尽快将接收到的数据交付给对应应用程序。(现在接受的所有)

在这里插入图片描述
在这里插入图片描述![

TCP的可靠性

确认、重传、排序、流控

排序:
MTU:最大传输单元--->以太网环境下1500字节--->数据包大小。MTU = IP + TCP/UDP + 数据(MSS)
MSS:最大数据段长度IPv4:分段后可以分片
IPv6:PMTU整条路经找最小
确认:

ACK

重传:
超时重传:
RTT--->往返时间(指发出端将数据发送后,到本端接收到对端反馈的确认报文的时间总和)
RTO--->超时重传时间RTO取值略大于RTT值。快速重传机制--->根据接收方的反馈信息进行数据重传。客户端需要连续接收到三次确认序列号相同的ACK报文,则认为数据丢失,需要进行数据重传。快速重传机制会导致部分数据重复传输,降低数据传输效率。解决思路:使用选择确认机制。--->在TCP首部的选项字段中,添加上未接收到的数据信息。发送方接收到该确认报文后,会根据选项字段内容,重新传输缺少的数据部分。选择确认机制是否可以执行是需要通讯双方进行协商的。--->在三次握手的前两次SYN报文中进行协商。

RTO数值是动态变化的数值超时,间隔,加倍

流控:(滑动窗口机制)
窗口:窗口的大小是可以指定的,窗口大小指的是无需等待确认报文,而可以直接发送的数据包的最大值。rwnd(接收窗口)---最开始等于整个缓存区的大小,浮动变化。

TCP要求发送方依据rwnd发送数据量。发送方的发送窗口大小是依据接收方的反馈信息中的接收窗口大小而设定的。

在这里插入图片描述

TCP连接的建立
TCP连接连接需要解决的问题:
1、知晓对端的套接字信息
2、允许双方进行参数的协商(窗口值、选择确认机制、是否使用窗口扩大因子)
3、对设备进行资源分配

在这里插入图片描述

c/s架构,谁先发送报文谁就是客户端1.服务(CLOSED-->LISTEN)创建接受缓存空间,等待客户端的连接请求2.客户(CLOSED-->SYN-SENT)创建接受缓存空间,发送请求报文(SYN=1,seq=x),不携带数据,x(初始序列号随机数且循         环)循环带来报文延迟与下一次循环的同序列号报文先后到达解决:时间戳(双向,在前俩次握手协商)  3.服务(LISTEN-->SYN-RCVD)发送接收并且请求的报文(ACK=1,ackeq=x+1,SYN=1,seq=y)4.客户(SYN-SENT-->EATABLISHED)收到报文进入下一状态,发送接收报文(ACK=1,ackeq=y+1,                                 seq=x+1),可以携带数据5.服务(SYN-RCVD-->EATABLISHED)接受到报文进入下一状态
当TCP连接建立成功,但是客户端突发故障。
此时服务端会等到2小时时间,若2小时时间内没有收到任何客户端的数据,则服务端发送一个探测报文,以后每隔75秒发送一次。若一连发送10次仍没有回复,则服务器认为客户端出现故障,关闭连接。
TCP连接释放
释放前提
1、TCP连接的释放实际上是在释放本地分配给TCP连接的资源
2、本地没有新的数据需要发送

三次握手、四次挥手以及TCP标志位的详细介绍_JHCan333的博客-CSDN博客_tcp握手标记

客户和服务都可以释放,但一般都是客户端1.客户(ESTABLISHED-->FIN-WAIT-1)发送报文(FIN=1,seq=m,ACK=1,ackeq=v)m非随机值,而是累计确认机制最后得到的值2.服务(ESTABLISHED-->CLOSE-WAIT)发送报文(ACK=1,ackeq=m+1,seq=v)3.客户(FIN-WAIT-1-->FIN-WAIT-2)接受到报文4.服务(CLOSE-WAIT-->LAST-ACK)发送报文(FIN=1,seq=p,ACK=1,ackeq=m+1)p非随机值,在此之前客户到服务的连接关闭,但       服务还可以发送数据,所有seq还在累计的增加5.客户(FIN-WAIT-2-->TIME-WAIT-->CLOSED)发送报文(ACK=1,ackeq=p+1,seq=m+1),在发送后,会等个2MSL时间后进入连接断开状态,MSL是报文段在网络中存活的时间,为两分钟。6.服务(LAST-ACK-->CLOSED)接受到报文
双方同时释放连接

在这里插入图片描述

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

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

相关文章

达科为生物领航,国产高端试剂“达优®”蓄势待发

在生物科技领域,每一次技术的突破都意味着行业前进的一大步。在即将盛大开幕的双博会上,深圳市达科为生物工程有限公司将携其国产高端试剂品牌“达优”闪亮登场,向世界展示中国生物科技的最新成果。而在这背后,是达科为生物多年来…

Docker【docker使用】

文章目录 前言一、概念二、常用方法1.镜像2.容器 三、镜像与镜像的关系,以及镜像构建和管理 前言 上一篇文章讲了docker的安装,本片文章我们来聊聊docker的一些常用操作。以及镜像、容器之间的关系 一、概念 docker三大核心概念:镜像 Imag…

力扣大厂热门面试算法题 43-45

43. 字符串相乘,44. 通配符匹配,45. 跳跃游戏 II,每题做详细思路梳理,配套Python&Java双语代码, 2024.03.18 可通过leetcode所有测试用例。 目录 43. 字符串相乘 解题思路 完整代码 Python Java 44. 通配符…

基于Spring Boot的中医学习服务管理系统

摘 要 随着世界经济信息化、全球化的到来和互联网的飞速发展,推动了各行业的改革。若想达到安全,快捷的目的,就需要拥有信息化的组织和管理模式,建立一套合理、动态的、交互友好的、高效的中医学习服务管理系统。当前的信息管理存…

汽车制造业供应商管理会面临哪些问题?要如何解决?

汽车行业的供应链是及其复杂的,并且呈全球化分布,企业在知识产权方面的优势很可能是阶段性的。企业需要持续保持领先,将面临巨大的挑战,尽快地将产品推向市场是保持领先的唯一途径。然而,如果没有正确的方式去实现安全…

matlab 最小二乘拟合圆柱

目录 一、算法原理1、算法简介2、参考文献二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 1、算法简介 圆柱拟合步骤主要包括两步: 一是确定柱面模型参数初始值; 二是…

线性电压调节器的使用---MC7915BTG

MC7915BTG是一款固定输出负线性电压调节器。还提供了MECL系统中常用的一种额外电压选项。MC7915BTG线性电压调节器15V的固定输出电压,采用限流、热关闭和安全区域补偿,使其在大多数操作条件下都非常坚固。有了足够的散热,它们可以提供超过1.0…

关系数据库标准语言SQL

1.SQL概述 1.1基本表(Base table) 实际存储在数据库中的表SQL中一个关系就对应一个基本表基本表可以有若干个索引基本表的集合组成关系模式,即全局概念模式(数据的整体逻辑结构) 1.2 存储文件 存储文件和相关索引组…

LeetCode 热题 100 | 回溯(三)

目录 1 131. 分割回文串 2 51. N 皇后 菜鸟做题,语言是 C,感冒好了 ver. 1 131. 分割回文串 题眼:给你一个字符串 s,请你将 s 分割 成一些子串。 根据题眼可知,我们需要做的是将字符串 s 连续分割 为几段&#…

二、C#选择排序算法

简介 选择排序算法的基本思想是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列…

Redis各场景应用集合

应用场景 1、缓存(Cache),分布式缓存 有一些存储于数据库中的数据会被频繁访问,如果频繁的访问数据库,数据库负载会升高,同时由于数据库IO比较慢,应用程序的响应会比较差。此时,如果引入Redis来…

面试笔记——Redis(使用场景、面临问题、缓存穿透)

Redis的使用场景 Redis(Remote Dictionary Server)是一个内存数据结构存储系统,它以快速、高效的特性闻名,并且它支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。它主要用于以下场景: 缓…

java新手练习-类的继承调用(接口,抽象类,构造函数)和枚举定义方法

1.继承 父类可以调用子类实例对象,(对于调用抽象类必须使用继承) 模版 //抽象定义一个父类抽象类 abstract class FatherAbstract{void showFatherAbstract(String color, String name, int age, double serail_abstract){System.out.println("color " color &…

Java基础-lambda表达式

lambda表达式 前言前置知识λ小故事函数式编程起源: λ演算法 概念Lambda && 匿名类无参类型的简写带参函数的简写 简写的依据自定义函数接口lambda && 匿名类JVM层面区别匿名内部类实现Lambda表达式实现推论,this引用的意义 lambda && 集合Collection…

代码随想录阅读笔记-字符串【右旋字符串】

题目 字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。 例如,对于输入字符串 "a…

【STL源码剖析】【2、空间配置器——allocator】

文章目录 1、什么是空间配置器?1.1设计一个简单的空间配置器,JJ::allocator 2、具备次配置力( sub-allocation)的 SGI 空间配置器2.1 什么是次配置力2.2 SGI标准的空间配置器,std::allocator2.2 SGI特殊的空间配置器,std::alloc2.…

录视频的软件推荐,助力视频内容创作

随着网络技术的发展和在线教育的兴起,录制视频教程的需求日益增加。无论是制作教学课程、分享办公技巧,还是录制游戏过程,一款好用的录屏软件都至关重要。本文将深入介绍三款录视频的软件,帮助读者了解它们的特点和操作步骤&#…

OSPF外部路由及外部路由引入过程

OSPF自治域(同运行了OSPF协议的设备);O_ASE——代表OSPF的外部路由(优先级150);1类LSA除了描述本身的直连状态、还描述本身的设备角色。 ASBR——自治系统边界路由器;同种路由协议也可做路由引…

谁能成为OpenAI的现实竞争对手吗?

文 | BFT机器人 前言: 自从与ChatGPT一起出现以来,OpenAI一直主导着人工智能市场,但它仍处于早期阶段。人工智能的历史可以追溯到几十年之前。但2022年11月ChatGPT的发布使生成式人工智能 (GenAI) 成为人们关注的焦点。从那时起,…

汽车研发项目管理数字化平台之阀门管理

阀门管理,在汽车研发流程中占据着举足轻重的地位,是确保项目精细化、系统化的关键所在。这一机制的核心在于通过设立“阀门”来控制和管理研发流程中的关键节点,从而确保项目在质量、进度和资源等方面均符合预期目标。在汽车行业高度竞争和持…