TCP/IP协议(二)

news2024/11/27 8:47:19

一、TCP-选项

1.简介

在TCP/IP报文中,固定头部下边就是 "选项"部分。
(1)TCP头部的选项部分是TCP为了适应复杂的网络环境和更好的服务应用层而进行设计的
(2)大多数的TCP选项部分出现在TCP连接建立阶段

2.构成

2.1 最大报文传输段

最大报文传输段(Maximum Segment Size — MSS ):表示TCP传往另一端的最大块数据的长度。当一个连接建立时,连接的双方都要通告各自的MSS。
(1)MSS只出现在SYN数据包中。
(2)对于以太网MSS可以达到 1460byte.

2.2 窗口扩大选项

窗口扩大选项(window scaling)

2.3 选择确认选项

选择确认选项(Selective Acknowledgements — SACK)

二、TCP的十种核心机制

TCP有十种机制来保证 传输的效率和可靠性。10种机制如下:

1.确认应答	(可靠机制)
2.超时重传	(可靠机制)
3.连接管理	(可靠机制)
-----------------------
4.滑动窗口	(效率机制)
5.流量控制	(效率机制)
6.拥塞控制	(效率机制)
7.延时应答	(效率机制)
8.捎带应答	(效率机制)
-----------------------
9.面向字节流(粘包处理)
10.特殊情况 (异常处理)

1.确认应答

在 TCP 协议中,发送方发送数据后,接收方需要对数据进行确认应答(ACK acknowledge的缩写),以确保数据已经被正确接收。
如果发送方没有收到确认应答,就会重新发送数据,直到接收方发送确认应答为止。
这样可以保证数据的可靠传输,避免数据丢失或损坏。
TCP 进行可靠传输,最主要的就是靠这个确认应答机制。

三、窗口和滑动窗口

1.窗口

根据上述的TCP确认应答得知:
TCP 是每发送一个数据,都要进行一次确认应答。当上一个数据包受到了应答,再发送下一个。这个模式就有点像面对面聊天,你一句我一句,这种方式的缺点就是效率极低。
为了解决这个问题, TCP 引入了"窗口"这个概念。
“窗口”,它是操作系统开辟的一个缓存空间.

2.窗口的大小

TCP 头里有一个字段叫 Window(win),也就是窗口大小。这个字段是接收端告诉发送端自己还有多少缓冲区可以接收数据。
于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。
所以通常窗口的大小是由接收方的窗口来决定的。发送方发送的数据大小不能超过接收方的窗口大小,否则接收方就无法正常接收到数据。

3.滑动窗口(以字节为单位)

3.1 定义

TCP滑动窗口是TCP协议中的一种流量控制机制,用于调节发送方和接收方之间的数据传输速率,以避免网络拥塞和提高传输效率。
滑动窗口机制允许发送方在不等待确认应答的情况下连续发送多个数据段

4.滑动窗口的组成

4.1 发送窗口

发送方维护一个发送窗口,表示可以连续发送的数据段的范围。发送窗口的大小取决于网络的情况和接收方的能力。
发送窗口的大小会在和接收方三次握手时,根据对方的通告给自己的对方的窗口大小而生成发送窗口大小

4.2 接收窗口

接收方维护一个接收窗口,表示可以接收的数据段的范围。接收窗口的大小取决于接收方的缓冲区大小和处理能力。

4.3 滑动操作

随着数据的发送和接收,发送窗口和接收窗口会不断滑动。
(1)当接收方成功接收到数据后,会将窗口向前滑动,通知发送方可以发送更多的数据。
(2)当发送方收到接收方的确认后,也会将发送窗口向前滑动

4.4 流量控制

接收方通过调整接收窗口的大小来控制发送方的发送速率。
(1)如果接收方的缓冲区已满或者处理能力有限,可以减小接收窗口的大小,通知发送方减缓发送速率。
(2)如果接收方的缓冲区有足够的空间,可以增大接收窗口的大小,提高发送速率。

5.滑动窗口的本质

(1)滑动窗口的本质就是: 允许发送方在不等待确认应答的情况下连续发送多个数据段,从而提高了网络的利用率.
(2)滑动窗口具体的动作: 批量发送,批量等待,把多份等待时间,合并成一份

6.未引入滑动窗口示意图

讲了这么多理论,使用示意图来展示一下滑动窗口,更便于理解

在这里插入图片描述

发送方和接收方一应一答,可靠性确实能得到保证,但其实大部分的时间都消耗在等待ACK上了.

7.引入滑动窗口

在这里插入图片描述

引入了滑动窗口,就可以连续发送窗口大小的多个数据。然后花费等待一个ack的时间来等待多个ACK的回复。

图1:

H-5表示要发送的所有数据。这里的窗口大小只是举例。真正的窗口大小远不止如此。

在这里插入图片描述

图2:

s端收到c端的数据后,不用回复3次,可以回复一次累计应答。ack=4,说明seq=3以前的数据都收到了。

在这里插入图片描述

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

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

相关文章

代码随想录训练营Day 33|Python|Leetcode|● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯

理论基础 动态规划五步曲 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 509. 斐波那契数 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始…

c++11详解

目录 1.列表初始化 2.声明 3.右值引用和移动语句 4. c11新的类功能 5. 可变参数模板 6.lambda表达式 7.包装器 8. 后言 1. 列表初始化 1.1 {}的初始化 (1) c98标准规定可以使用{}对数组以及结构体进行统一的列表初始化. struct Point {int _x;int _y; };int main() {in…

Kubernetes:云原生时代的核心引擎

文章目录 一、Kubernetes简介:引领云原生潮流二、K8s的核心特性:自动化与智能化三、K8s的实践应用:打造高效云原生应用架构四、K8s的挑战与应对:安全与性能并重五、K8s的未来展望:无限可能与挑战并存《Kubernetes快速进…

YOLOv8-pose针对视频实时提取打印对应关节点序号及坐标

因为我在找如何提取YOLOv8-pose的关键点的时候,大多都是针对静态图像,视频直接套用不太行,因此就改进了一下,如下: 初步代码: import torch # 导入PyTorch库 import cv2 as cv # 导入OpenCV库并重命名为…

上位机图像处理和嵌入式模块部署(树莓派4b进行自动化测试)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 硬件、软件功能开发ok只是产品开发的第一步。怎么做到自动化测试、保证产品质量才是关键。很多时候,我们给客户提供了功能,…

Rust HTTP 客户端:易于使用、功能强大 | 开源日报 No.228

seanmonstar/reqwest Stars: 8.9k License: Apache-2.0 reqwest 是一个易于使用且功能强大的 Rust HTTP 客户端。 异步和阻塞客户端支持普通数据、JSON、urlencoded 和 multipart 数据格式可定制的重定向策略支持 HTTP 代理和系统原生 TLS 或 rustls 的 HTTPSCookie 存储功能…

一、路由基础

1.路由协议的优先级 路由器分别定义了外部优先级和内部优先级(越小越优) 路由选择顺序:外部优先级>>内部优先级(相同时) ①外部优先级:用户可以手工为各路由协议配置的优先级 ②内部优先级&#xf…

Nuxt3 实战 (五):Header 头部布局

前言 这两周一直忙公司系统的迭代需求,没啥时间捣鼓自己的小项目,趁着项目进入测试收尾阶段,抽空把 Layout 布局的 Header 部分先搞好。 需求拆分 顶部左侧放 Logo,右边放社交图标,暗黑模式切换提前准备好 Logo 和网…

Centos8操作系统安装mysql5.7版本以及报错解决

目录 一、卸载MySql 1.首先查看已安装的mysql 2.逐个或者执行一下命令统一卸载掉 注意: 3. 卸载其他相关文件 二、安装MySql 1.安装mysql的rpm源 2.安装MySql 如果遇到以下错误: 问题一: 解决方法: 问题二、 解决方法&#xff1…

【一刷《剑指Offer》】面试题 9:斐波那契数列(扩展:青蛙跳台阶、矩阵覆盖)

力扣对应链接:LCR 126. 斐波那契数 - 力扣(LeetCode) 牛客对应链接:斐波那契数列_牛客题霸_牛客网 (nowcoder.com) 核心考点:空间复杂度,fib 理解,剪枝重复计算。 一、《剑指Offer》内容 二、分…

Linux多进程(二)进程通信方式三 共享内存

共享内存提供了一个在多个进程间共享数据的方式,它们可以直接访问同一块内存区域,因此比使用管道或消息队列等通信机制更高效。在多进程程序中,共享内存通常与信号量一起使用,以确保对共享内存的访问是线程安全的。 一、打开/创建…

俊杰测评:电视盒子什么牌子好?电视盒子品牌排行榜

欢迎各位来到俊杰的数码测评频道,每年我会进行数十次电视盒子测评,今年已经买过二十多款电视盒子了,本期的测评主题是电视盒子什么牌子好,通过十天的深入详细对比后我整理了电视盒子品牌排行榜,近期想买电视盒子的可以…

代码随想录算法训练营第五十一天| 309.最佳买卖股票时机含冷冻期,714.买卖股票的最佳时机含手续费,总结

题目与题解 参考资料:买卖股票总结 309.最佳买卖股票时机含冷冻期 题目链接:309.最佳买卖股票时机含冷冻期 代码随想录题解:309.最佳买卖股票时机含冷冻期 视频讲解:动态规划来决定最佳时机,这次有冷冻期!|…

python获取文件路径

文件:allpath_parameter.py # 获取当前目录路径 # current_dir os.getcwd() # 获取当前目录路径 realpath00 os.path.abspath(os.path.join(os.path.dirname(os.path.split(os.path.realpath(__file__))[0]), .)) print(realpath00)# 获取当前目录的上级目录路…

Centos安装/更新Docker

首先要配置好Centos 配置好静态IP 替换yum源为阿里云 Docker是什么? Docker 是一种开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后部署到任何流行的 Linux 机器上。是一种虚拟化的技术,可以把…

linux 编译opencv遇到问题

linux编译opencv4.8的时候遇到问题 Error: suffix or operands invalid for vpand看到很多说法是升级as这个工具的版本,自测是从2.20升级到2.27就可以了

12G-SDI视频分配器JR104D-4K-SDI

JR104D-4K-SDI 12G-SDI分配器1分4,12G-SDI分配器1分2,12G-SDI分配器1分8,机架式12G-SDI分配器1分4,12G-SDI分配器4组1分4,12G-SDI分配器16组1分4, 广播级指标生产厂家。 一、产品介绍: JR104D-4K-SDI视频分配器,是按…

Docker网络模式与cgroup资源控制

前言 在 Docker 中,网络模式和 cgroup 资源控制作为关键功能,对于容器的性能优化和资源管理起着至关重要的作用。本文将介绍 Docker 的网络模式和cgroup资源控制,探讨不同网络模式的特点以及如何利用 cgroup 资源控制机制来有效管理容器的资…

【SSM进阶学习系列丨整合篇】Spring+SpringMVC+MyBatis 框架配置详解

文章目录 一、环境准备1.1、创建数据库和表1.2、导入框架依赖的jar包1.3、修改Maven的编译版本1.4、完善Maven目录1.5、编写项目需要的包1.6、编写实体、Mapper、Service 二、配置MyBatis环境2.1、配置mybatis的主配置文件2.2、编写映射文件2.3、测试环境是否正确 三、配置Spri…

机器学习——过拟合

一、过拟合得表现 模型在训练过程中,除了会出现过拟合现象,还有可能出现欠拟合的情况。相比而言,后者通常发生在建模前期,只要做好特征工程一般可以解决模型欠拟合问题。下图描述了模型在训练数据集上的三种情况: 其…