TCP - 传输控制协议

TCP - 传输控制协议

是一种面向连接的可靠传输协议。

特点:
  • TCP是面向连接(虚连接)的传输层协议。

  • 每一条TCP连接有且只能有两个端点。

  • 可靠、有序、无丢弃和不重复。

  • TCP协议提供全双工通讯

    • 发送缓存
      • 存放发送方TCP准备发送的数据。
      • TCP已发送但是没有收到确认的数据。
    • 接收缓存
      • 存放发送端发送来的不按照顺序到达的数据。
      • 按照顺序到达的数据,但并未被应用程序读取。
  • TCP是面向字节流的。TCP将应用层数据仅看成是一串无结构的字节流。

TCP连接的四元组(源IP、源端口、目的IP、目的端口)
套接字 - IP:port

请添加图片描述

确认序列号: 接收方期望收到发送方发送的下一个字节的序号。(序号+数据大小)1、接收方希望接收到的报文序号;2、该序号之前的数据全部接受。— 累计确认机制

请添加图片描述

数据偏移:4字节;保留位:6bit;

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

确认位ACK:当ACK=1时,确认号有意义。再连接建立后,所有传输的报文段都必须将该标志位置设为1。
同步位SYN:SYN=1时,代表该数据是一个连接请求报文。
终止位FIN:FIN=1时,表明此报文段发送方数据已发送完毕,要求释放连接。

复位RST:表明TCP连接出现严重错误,需要释放连接并重新建立连接。

晋级位URG:代表该报文中存在高优先级的数据,尽快处理。需要配合紧急指针使用。
推送位PSH:接收方应尽快将接收到的数据交付给对应应用程序。

TCP的可靠性

确认、重传、排序、流控。

确认机制

在TCP中,当发送端的数据达到接收主机时,接收端主机会返回一个已收到消息的通知,这个消息叫做ACK(确认应答)。

请添加图片描述

TCP通过肯定的ACK实现可靠的数据传输。当发送端将数据发出之后会等待对端的确认应答,如果有确认应答,说明数据已经成功到达,如果没有,那么数据有可能丢失了
如下图所示,在一定时间内没有等到确认应答,发送端就可以认为数据已经丢失,就会进行重发。
请添加图片描述

未收到确认应答也并不意味着数据一定丢失,有时也有可能是因为数据收到,但是ACK却在传输的途中丢了。因此这种情况也会导致发送端因没有及时收到ACK,而认为数据没有到达目的地,从而进行重传

请添加图片描述

为此就必须要引入一种机制,使其能够识别是否已经接受数据,又能判断是否需要接受

序列号和确认应答号

序列号:1 确认应答号:1+数据长度。

重传机制

MTU:最大传输单元 - 以太网环境下1500字节 - 数据包大小。
MSS:最大数据段长度

RTT - 往返时间(即从发送方发送数据开始,到发送方接收到来自接收方的确认消息所经过的时间。)
RTO - 超时重传时间。

RTO略高于RTT。

快速重传机制 - 根据接收方的反馈信息进行数据重传。客户端连续接收到三次确认序列号相同的ACK报文,则认为数据丢失,需要进行数据传输。
快速重传机制会导致部分数据重复传输,降低数据传输效率。

解决思路:选择确认机制。 - 在TCP首部的选项字段中,添加上未接收到的数据信息。接收方接收到该确认报文后,会根据选项字段内容,重新传输缺少的数据部分。
    是否执行进行协商 - 根据三次握手的前两次SYN报文中进行协商。
    
RTO数值是动态变化的数值。超时间隔加倍。

流控机制

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

TCP要求发送方依据rwnd发送数据量

请添加图片描述

TCP连接的建立

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

探测报文

当TCP连接建立成功,但是客服端突发故障。

服务器会等待2小时,若2小时候没收到任何客户端的数据,服务器发送一个探测报文,以后每隔75秒。
TCP连接的释放
1、TCP连接释放实际是释放本地分配给TCP连接的资源
2、本地没有新的数据需要发送

请添加图片描述

静态路由

请添加图片描述

方法一:[r1]ip route-static 23.0.0.0 24 12.0.0.2  点到多点
方法二:[r1]ip route-static 23.0.0.0 GE0/0/1  点到点(一条导线上只能有两个节点)
     ARP代理:当收到ARP报文后,路由器冒充真实应答者回复ARP报文,将自己接口的MAC地址进行回复。
     限制条件:应答路由器必须是网络可达的
     静态ARP表项(下一跳)
     [r1]ARP ststic 12.0.0.1 00e0-fcd3-1943
方法三:[r1]ip route-static 23.0.0.0 24 GE0/0/0/1 12.0.0.2
方法四:[r1]ip route-static 192.168.3.0 24 23.0.0.3(前置条件全部实现) - 下两跳

路由器下一跳写的是我自己,则认为是直连关系;

子网划分和子网汇总

172.16.0.0/16
子网划分:主机位借给网络位,借的位叫子网位,子网位可变
172.16.00000000.0
172.16.10000000.0

子网汇总:取相同,去不同
172.16.1.0/24
172.16.2.0/24
172.16.3.0/24

172.16.0.0/22

缺省路由 0.0.0.0 1.1.1.1

环路接口的解决

解决方法:TTL(生存时间)

空接口:NULL0(路由最长掩码匹配规则)

修改优先级 pre
静态路由与BFD的联动
[r1]bfd ---激活BFD协议
[r1]bfd aa bind peer-ip 10.1.12.1
[r1-bfd-session-aa]discriminator local 10
[r1-bfd-session-aa]discriminator remote 20
[r1-bfd-session-aa]commit ---提交配置
接着配置r2BFD
[r1]display bfd session all

[r1]ip route-static 10.9.9.0 24 10.1.12.1 track bfd-session aa


[r1-bfd-session-aa]discriminator remote 20
[r1-bfd-session-aa]commit ---提交配置
接着配置r2BFD
[r1]display bfd session all

[r1]ip route-static 10.9.9.0 24 10.1.12.1 track bfd-session aa

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Springboot笔记-01

简化spring应用开发,约定大于配置 简化Spring应用开发的一个框架; 整个Spring技术栈的一个大整合; J2EE开发的一站式解决方案; 优点: 快速创建独立运行的spring项目以及于主流框架集成 使用嵌入式的Servlet容器&#x…

Reactor线程模型

线程模型 一、背景1.socket网络通信2.IO模型与线程模型3.线程模型分类3.1 阻塞模型3.2 Reactor模型3.3 Proactor模式 二、阻塞模型1.代码示例 三、Reactor模型1.单Reactor单线程1.1 处理过程1.2 优缺点1.3 代码示例 2.单Reactor多线程2.1 处理机制2.2 优缺点 3.主从Reactor3.1 …

深度学习_卷积

卷积 卷积(Convolution)是数学和计算机科学中的一个重要概念,特别在信号处理和图像处理中应用广泛。在信号处理领域,卷积是两个函数之间的一种数学操作,它表示两个函数的重叠部分的积分量。 在图像处理中&#xff0c…

JavaScript数组排序sort自定义函数不生效

背景 刷LeetCode时,遇到一道简单的数组排序题: 问题 想着直接用js的数组sort自定义排序即可,奈何测试用例运行总是不通过,返回的一直都是原数组。 代码排查 复制代码到Firefox浏览器控制台运行,结果输出的是正确结果&a…

搭建Hadoop集群(完全分布式运行模式)

目录 一、准备模板机(最小化安装)二、配置一台纯净的模板机修改主机名固定IP地址通过yum安装方式安装必要的软件关闭防火墙且禁止自启修改hosts映射文件创建普通用户 并让他能用sudo命令在/opt下创建software和module完成 三、搭建完全分布式运行模式3.1克隆第一台机器hadoop10…

基于PCA(主成分分析)的人面识别,Matlab实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

Vue学习日记 Day7 —— json-server工具、基于VueCli自定义创建项目、postcss插件

一、前一天Vuex总结 1、state作用:存放数据定义:state:{//数据 }使用://放在data下(1)根节点直接访问this.$store.state.数据名(2)模块直接访问this.$store.state.模块名.数据名(3)根节点辅助函数mapState([所需要的数据])(4)模块辅助…

JDK21虚拟线程

目录 虚拟线程 话题 什么是平台线程? 什么是虚拟线程? 为什么要使用虚拟线程? 创建和运行虚拟线程 使用线程类和线程创建虚拟线程。生成器界面 使用Executor.newVirtualThreadPerTaskExecutor()方法创建和运行…

【一】【单片机】有关LED的实验

点亮一个LED灯 根据LED模块原理图,我们可以知道,通过控制P20、P21...P27这八个位置的高低电平,可以实现D1~D8八个LED灯的亮灭。VCC接的是高电平,如果P20接的是低电平,那么D1就可以亮。如果P20接的是高电平,…

CSS基础属性(学习笔记)

一、CSS介绍 CSS即层叠样式表/级联样式表,简称样式表 html:写网页结构内容 css:写网页样式 实现了内容与表现的分离,提高了代码的重用性和维护性 CSS注释不被浏览器解析,给开发人员一个标注 快捷键:ctrl/ 语…

YOLOv5独家改进:block改进 | RepViTBlock和C3进行结合实现二次创新 | CVPR2024清华RepViT

💡💡💡本文独家改进:CVPR2024 清华提出RepViT:轻量级新主干!从ViT角度重新审视移动CNN,RepViTBlock和C3进行结合实现二次创新 改进结构图如下: 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/category_12511931.html 💡💡💡全网独家首发创…

FTP文件传输协议

FTP 文章目录 FTP1. ftp简介2. ftp架构3. ftp数据连接模式4. 用户认证5. vsftpd5.1 vsftpd安装5.2 配置匿名用户ftp5.2.1上传(下面使用的是FileZilla软件)5.2.2下载5.2.3创建5.2.4删除 5.3配置本地(系统)用户ftp5.3.1上传5.3.2下载…

Qt教程 — 3.4 深入了解Qt 控件:Input Widgets部件(3)

目录 1 Input Widgets简介 2 如何使用Input Widgets部件 2.1 Dial 组件-模拟车速表 2.2 QScrollBar组件-创建水平和垂直滚动条 2.3 QSlider组件-创建水平和垂直滑动条 2.4 QKeySequenceEdit组件-捕获键盘快捷键 Input Widgets部件部件较多,将分为三篇文章介绍…

网络基础知识-DNS与DHCP+网络规划与设计故障诊断+嵌入式系统设计师备考笔记

0、前言 本专栏为个人备考软考嵌入式系统设计师的复习笔记,未经本人许可,请勿转载,如发现本笔记内容的错误还望各位不吝赐教(笔记内容可能有误怕产生错误引导)。 本章的主要内容见下图: 本章知识和计算机…

创意二维码营销案例:帕森斯设计学院在巴黎市中心搭建“沙滩度假地”

作为一个专业的艺术设计学院,帕森斯设计学院(Parsons School of Design, The New School)以其卓越的教学质量和创新的设计理念享誉全球。 每年的夏天,帕森斯设计学院都会举办一个暑期短期项目,面向全球学生&#xff0…

AI时代,Matter如何融入与服务中国智能家居市场,助力中国企业出海?

随着智能家居产业的飞速发展,丰富多样的智能家居产品为消费者带来了便利的同时,因为不同品牌、不同产品之间的协议与标准不统一,导致消费者体验产生割裂,本来想买个“智能”家居,结果买了个“智障”家居,这…

Qt学习--多态(虚函数)

这次来分享多态的概念,这是比较重要的知识点 面向对象的三大特征:封装、继承、多态 首先:来点官方术语: 多态,通俗来讲就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出…

软考88-上午题-【操作系统】-进程的状态及状态间的切换

一、三态模型 多道程序系统: 在单道程序系统中,计算机内存中只允许一个程序运行,而多道程序系统则允许多个程序同时运行,从而大大提高了系统的整体性能。 通过允许多个程序同时运行和共享资源,多道程序设计技术使得操作…

使用uniapp,uni-data-select组件时,内容长度没超过容器宽度时候虽然能显示全内容但是数据后边会出现三个点,逼死强迫症

项目场景: 微信小程序开发,使用uniapp,uni-data-select组件时,内容长度没超过容器宽度时候虽然能显示全内容但是数据后边会出现三个点,逼死强迫症 解决方案: 找到组件的源代码,然后删除那三个…

layui2.9.7-入门初学

下载:https://layui.dev/ 下载后解压: 在hbuider中新建一个项目 将如上解压好的文件打开,复制如下到项目中 写案例,基础学习通之前的bootstrap 那样,挨个相中哪个就测试哪个,在这里不再重复罗列&#x…