2.1(TCP)

news2024/9/20 6:40:35

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.coloradmin.cn/o/1528154.html

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

相关文章

Linux--Docker容器引擎

1、Docker是什么 Docker是在Linux容器里运行应用的开源工具,是一种轻量级的 “虚拟机”。诞生于2013年,最 初的发起者是dotCloud公司。后来改名为Docker Inc,专注于Docker相关技术和产品的开发。Docker 项目目前已经加人啊Linux基金会&#x…

迅雷网盘推广拉新怎么申请授权怎么赚钱?

迅雷网盘作为国内知名的云存储服务提供商,拥有庞大的用户群体和稳定的服务质量。为了进一步扩大市场份额,迅雷网盘推出了拉新项目,通过给予推广者一定的佣金,鼓励他们向更多的人推广迅雷网盘。 网盘功能强大:作为国内比…

【送外卖的你】送外卖对程序员的职业发展有影响吗

送外卖对程序员的职业发展可能会有一些影响,具体取决于个人情况和职业目标。以下是一些可能的影响: 1. 时间管理:送外卖可能需要花费较多的时间和精力,这可能会对程序员的工作时间和项目进度产生一定的影响。需要合理安排时间&…

Zookeeper(三)一致性算法Paxos

目录 1. Paxos算法是什么2. Paxos算法产生背景2.1. 拜占庭将军问题2.2. Paxos算法由来2.3 产生背景 3. 算法详解3.1 角色 & 提案提案 (Proposal)角色 3.2. 问题描述3.2.1. 一致性算法的前置条件3.2.2. 不同角色通过发送消息进行通信 3.3. 推导过程3.3.1. 只有一个Acceptor3…

【四 (6)数据可视化之 Grafana安装、页面介绍、图表配置】

目录 文章导航一、Grafana介绍[✨ 特性]二、安装和配置1、安装2、权限配置(账户/团队/用户)①用户管理②团队管理③账户管理④看板权限 3、首选项配置4、插件管理①数据源插件②图表插件③应用插件④插件安装方式一⑤安装方式二 三、数据源管理1、添加数…

程序计数器

程序计数器 JVM中的程序计数器(Program Counter Register)并非是广义上所指的物理寄存器,是对物理PC寄存器的一种抽象模拟 PC寄存器(程序计数器) PC寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码。由执行引擎读取下一条指令。 它是一块很…

机器人在果园内行巡检仿真

文章目录 创建工作空间仿真果园场景搭建小车模型搭建将机器人放在仿真世界中创建工作空间 mkdir -p ~/catkin_ws/src cd ~/catkin_ws仿真果园场景搭建 cd ~/catkin_ws/src git clone https://gitcode.com/clearpathrobotics/cpr_gazebo.git小车模型搭建 DiffBot是一种具有两个…

视频技术2:把rtsp转为各种格式,包括webrtc

前题是启动ABLMediaServer,把ini里的hls_enable1 1、添加rtsp到视频服务器 http://127.0.0.1:7088/index/api/addStreamProxy?secret035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost_defaultVhost_&appMedia&streamCamera_00001&enable_hls1&ur…

HTML5+CSS3小实例:具有悬停效果的3D闪耀动画

实例:具有悬停效果的3D闪耀动画 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, init…

电学基础知识

目录 电流 前言 电流的产生 电流的单位安培&#xff08;A&#xff09; 电路和电池 开路和闭路 电灯泡原理 对电池容量的理解 毫安时 毫瓦时 直流电和交流电 AC交流电 DC直流电 直流电和交流电对比 电压 对电器的电压和电流的理解 电阻 电压电阻电子的关系 欧…

Vulnhub - Raven2

希望和各位大佬一起学习&#xff0c;如果文章内容有错请多多指正&#xff0c;谢谢&#xff01; 个人博客链接&#xff1a;CH4SER的个人BLOG – Welcome To Ch4sers Blog Raven2 靶机下载地址&#xff1a;https://www.vulnhub.com/entry/raven-2,269/ 0x01 信息收集 Nmap扫描…

DC-DC 变换集成电路芯片MC34063A,内含温度补偿的参考电压源(1.25V)、比较器、能有效限制电流及控制工作周期的振荡器,驱动器及大电流输出开关管等

MC34063A 为一单片 DC-DC 变换集成电路&#xff0c;内含温度补偿的参考电压源&#xff08;1.25V&#xff09;、比较器、能有效限制电流及控制工作周期的振荡器&#xff0c;驱动器及大电流输出开关管等。外配少量元件&#xff0c;就能组成升压、降压及电压反转型 DC-DC 变换器。…

三菱FX3U/FX5U的采集方式有哪些?如何快速采集?

在工业自动化领域&#xff0c;PLC&#xff08;可编程逻辑控制器&#xff09;扮演着至关重要的角色。三菱FX3U和FX5U作为三菱电机公司推出的两款经典PLC产品&#xff0c;广泛应用于各种工业自动化控制系统中。为了更好地实现对这些PLC设备的数据采集与远程控制&#xff0c;我们引…

危险废物处理不容忽视,环保企业责任在肩|中联环保圈

铝熔炼企业产生的大量铝灰渣&#xff0c;属于危险废物&#xff0c;其处理问题引起了广泛关注。在江西省抚州市&#xff0c;生态环境局副局长祝志辉强调&#xff1a;“铝灰渣的处理必须委托有资质的第三方进行。”他进一步解释说&#xff0c;铝灰的主要成分为金属铝和铝氧化物&a…

软考真题详解-系统架构设计师-计算机基础知识(1)

题目1&#xff1a;计算机系统中硬件层之上的软件通常按照三层来划分&#xff0c;如下图所示&#xff0c;图中①②③分别表示&#xff08;1&#xff09;。 A.操作系统、应用软件和其他系统软件 B.操作系统、其他系统软件和应用软件 C.其他系统软件、操作系统和应用软件 D.应…

递推算法C++

所谓递推&#xff0c;是指从已知的初始条件出发&#xff0c;依据某种递推关系&#xff0c;逐次推出所要求的各中间结果及最后结果。其中初始条件或是问题本身已经给定&#xff0c;或是通过对问题的分析与化简后确定。从已知条件出发逐步推到问题结果&#xff0c;此种方法叫顺推…

第一阶段回顾

一、IP、网络等初步认知 L1~L3&#xff08;物理层到网络层&#xff09;以及端到端如何走&#xff1f;&#xff01; 1.1 OSI七层参考模型 方向 方向分为上下和左右 上下流向&#xff08;南北&#xff09;&#xff1a; 左右流向&#xff08;南北流向&#xff09;&#xff1a; 注意…

堆叠与集群

8.1堆叠与集群概述 随着企业的发展&#xff0c;企业网络的规模越来越大&#xff0c;这对企业网络提出了更高的要求&#xff1a;更高的可靠性、更低的故障恢复时间、设备更加易于管理等。传统的园区网高可靠性技术出现故障时切换时间很难做到毫秒级别、实现可靠性的方案通常为一…

高架学习笔记之信息系统分类概览

目录 零、前言 一、业务处理系统(TPS) 概念 功能 特点 二、管理信息系统(MIS) 概念 功能 组成 三、决策支持系统(DSS) 概念 功能 特点 组成 1. 数据仓库 2. 数据挖掘工具 3. 决策模型 4. 可视化界面 四、专家系统(ES) 概念 特点 组成 求解过程 专家系统…

开箱即用之 windows部署jdk、设置nginx、jar自启

jdk安装 官网下载对应的安装包&#xff0c;解压之后放在本地指定的文件夹下 传送门https://www.oracle.com/java/technologies/downloads/#jdk21-windows 我比较喜欢下载zip方式的&#xff0c;解压之后直接能用&#xff0c;不需要安装了 配置环境 JAVA_HOME 添加path路径 …