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

计算机网络之TCP序号,确认序号和报文传输时间

开篇提示

        本篇适合于了解基础知识,进行扩展提高的使用,附带考研习题以及解析。

TCP序号和确认序号的区别

        TCP首部中有序号和确认序号,他们都是4个字节(4B),且在数据传输中有很重要的意义,那么两者的含义和区别是什么呢?我们先看他们的定义。

        序号指的是本报文段所发送的数据的第一个字节的序号,确认号是期望收到对方下一个报文段的第一个数据字节的序号。在进行“三次握手”和数据传输的时候,序号一般用seq表示,确认号一般用ack表示。

        接下来,我们就从建立TCP连接,到数据传输,再到断开连接整个过程分析客户机和服务器中的TCP序号和确认号的变化。

        我们首先要清楚,不论是客户机还是服务器,他们一般都有序号和确认号,序号是描述自己的情况,确认号是描述对方的情况。序号x代表着“我在传递这次报文的时候,我的报文起始序号是x”,确认号y代表着“在你下次传递报文的时候,我希望你从你的序号y开始发送”

        所以,在一个TCP报文中,序号和确认号没有任何关系。

        好的,现在我们来看建立TCP连接的过程。

        下面是建立TCP连接的示意图:

        建立连接前,客户机和服务器都会获得初始序号,可见,A获得的初始序号为x,B获得的初始序号为y,我们发现,在未进行数据传输,只是进行建立连接的确立的情况下,ack增加了,事实上,确认建立连接SYN和断开连接FIN都会占用一个字节,我们只需要注意seq代表自身情况,ack代表对方情况即可。

        我们举一个中间传输信息的例子。

        如果A序号seq是301(自己这条内容会从301号开始发送),传输100B的有效荷载(实际就是数据),确认号ack是800(正常情况下,希望B从B的800开始发送)

        如果B正常收到,他发送的序号seq会是A的ack确认号,也就是800,它的确认号是A下次发送信息的开始,也就是301+100 = 401 ,他会希望A下次从A的序号401开始,如果B携带了100B的数据发送给了A,此时,A的序号是B的序号401,A的确认号是希望下次B从哪里开始发,800+100=900

        特殊情况一:如果B未携带数据只确认,则A的确认号仍为800

        特殊情况二:现A的序号为401,确认号为900,向B发送了120B的数据,但是,数据丢失

        B的序号为A的确认号(A希望他这么做),但由于B尚未收到A的信息,他会仍然希望A从401号发送数据,而不是521号

        在断开连接时,会进行四次挥手,下面是断开TCP连接的示意图:

与序号和序列号相关的题目一般是给出seq和ack,继续推在传输数据后的seq和ack,只需要记住两者的含义即可。

        下面,我们来几道例题练练手。

习题一

1.SYN与FIN都会使ack+1

本题选A,C,首先A发送自身的序号X,B发送自身的序号Y,ack确认时确认对方的下次开始的序号。

2.seq与ack的关系

A的序号是200,确认字号201,B的序号一定是A的确认号,也就是201,B的确认号是A下次开始发送的开头,也就是200+2

3.seq和ack的关系

4.特殊情况

报文传输时间的计算

建立连接时间需要1.5个RTT

        对于服务器B,最长断开时间需要等待两个RTT+数据传输时间,最短时间是1.5个RTT,实际上,当A发送FIN后,B可以直接发送FIN,等待A确认后,即可直接关闭

        对于客户机A,它最长时间要1个RTT+数据传送时间+2MSL,MSL是最大报文段寿命,这是防止数据传送不到而引发问题,最短时间是1RTT+2MSL。

现在,我们来查看在TCP进行拥塞控制下数据传输所需要的时间。

        我们先提供一些关于拥塞控制的知识点。

1.MSS:最大段长,初始传输数据的速度为1MSS,不论是传输多少B,可以理解为是拥塞控制传输的基本单位

2.cwnd:当前的拥塞窗口,大小是多少倍的MSS来计算

3.ssthresh:门限,慢窗口阶段与拥塞避免阶段的分界点,当cwnd<ssthresh时,慢开始,当cwnd>ssthresh,拥塞避免

4.慢开始(启动)阶段:每次收到确认后,cwnd*2,如果慢开始cwnd*2后超过门限,会使得cwnd=ssthresh

5.拥塞避免阶段:每次收到确认后,cwnd+1

6.超时:时间过长后,超时,cwnd=1MSS,ssthresh变为超时时cwnd的一半

7.快恢复:连续收到3个多余的ACK(重复确认),ssthresh变为cwnd的一半,且cwnd = ssthresh,然后开始拥塞避免

8.如果同时出现接收窗口和拥塞窗口,实际窗口时两者中较小的一个

        现在,我们给出几个例题。

例题二

1.断开TCP连接时间

最短时间,C需要1RTT+2MSL,S需要1.5RTT,情况是当C请求断开时S也准备断开,D

2.慢启动和拥塞避免状态的选择

慢启动增长迅速,最短时间用慢启动,最长时间用拥塞避免,本题目中由于是最长时间,拥塞避免,需要24个RTT,D

3.接收窗口和拥塞窗口

两者都会影响cwnd,是两者中更小的那个决定的。接收缓存实际就是接收窗口的大小,他会随着存入数据而逐渐变小。在本题中,要求最小时间,慢启动状态,经过3RTT变为8KB,过程是1MSS

-2MSS-4MSS,更小的是拥塞窗口,因此,本题中接收窗口不会影响cwnd,B

慢启动门限为2KB,拥塞窗口为4KB,因此,在下个RTT中,拥塞窗口变为5KB,但是接收窗口是2KB,因此,最多发送2KB的数据

4.实例

相关文章:

计算机网络之TCP序号,确认序号和报文传输时间

开篇提示 本篇适合于了解基础知识&#xff0c;进行扩展提高的使用&#xff0c;附带考研习题以及解析。 TCP序号和确认序号的区别 TCP首部中有序号和确认序号&#xff0c;他们都是4个字节&#xff08;4B&#xff09;&#xff0c;且在数据传输中有很重要的意义&#xff0c;那么两…...

HTML优化方法

HTML编码规范 代码格式化与缩进 1.缩进规则 ​ 推荐使用空格缩进而不是Tab&#xff0c;因为不同环境下空格的效果更加一致。常见缩进量为2个或4个空格 2.标签对齐 ​ 在嵌套的HTML结构中&#xff0c;子标签应当缩进&#xff0c;以清晰地展示层级关系。 3.属性的排列 ​ …...

Codeforces Round 961 D. Cases 【SOS DP、思维】

D. Cases 题意 有一个长度为 n n n 且仅由前 c c c 个大写字母组成的字符串&#xff0c;问最少选取多少种字母为每个单词的结尾&#xff0c;使得每个单词长度不超过 k k k 思路 首先注意到最后一个字母一定要选择&#xff0c;接下来我们给出一个断言&#xff1a;如果一个…...

VirtualBox上的Oracle Linux虚拟机安装Docker全流程

1.安装docker依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 2.安装docker仓库 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 生成docker的yum源配置到在 /etc/yum.repos.d/docker-ce.repo 3.安装D…...

LNMP安装部署

目录 一、Nginx安装部署 1.安装包下载 2.下载相关依赖工具 3. 创建运行用户 4.编译安装 5.优化路径 6.将nginx添加至系统服务 7.文件赋权 二、MySQL部署安装 1.解压 2.安装相关工具 3.创建运行用户 4.编译安装 5.修改配置文件 6.更改mysql安装目录和配置文件的属…...

django之自定义序列化器用法

在Django中&#xff0c;自定义序列化器方法通常用于处理复杂的数据转换逻辑&#xff0c;特别是在使用Django REST framework&#xff08;DRF&#xff09;时。自定义序列化器方法可以帮助你在序列化和反序列化过程中执行特定的逻辑&#xff0c;比如格式化日期、计算字段值、或者…...

20240821给飞凌OK3588-C的核心板刷Rockchip原厂的Buildroot并挂载1TB的exFAT格式的TF卡

fdisk -l df -h df -t df -T mount 20240821给飞凌OK3588-C的核心板刷Rockchip原厂的Buildroot并挂载1TB的exFAT格式的TF卡 2024/8/21 18:06 【切记&#xff0c;对于Rockchip原厂的Buildroot&#xff0c;如果你没有针对性的适配DTS&#xff1a;修改其中的GPIO口供电&#xff0c…...

多模态学习Multimodal Learning:人工智能中的多模态原理与技术介绍初步了解

多模态学习&#xff08;Multimodal Learning&#xff09;是机器学习中的一个前沿领域&#xff0c;旨在综合处理和理解来自不同模态的数据。模态可以包括文本、图像、音频、视频等。随着数据多样性和复杂性增加&#xff0c;多模态学习在自然语言处理、计算机视觉、语音识别等领域…...

外部环境连接kafka

修改配置文件外部环境连接kafka 1、kafka的docker官方镜像地址2、kafka官方介绍的三种连接方式3、方式一&#xff1a;Default configs默认配置4、方式二&#xff1a;File input&#xff08;文件输入&#xff1a;外部配置文件替换docker容器内的配置文件&#xff09;4.1、首先查…...

结合了MySQL数据库、Elasticsearch和Redis,构建一个产品搜索和推荐系统

1. 数据库设置&#xff08;MySQL&#xff09; 首先&#xff0c;我们需要创建两个表来存储产品信息和产品类别信息。 CREATE DATABASE product_system;USE product_system;CREATE TABLE categories (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL,created_at…...

白酒与素食:健康与美味的双重享受

在美食的世界里&#xff0c;白酒与素食的搭配仿佛是一场跨界的盛宴。豪迈白酒&#xff08;HOMANLISM&#xff09;的醇香与精致素食的清新&#xff0c;在不经意间交织出了一幅美妙的画卷&#xff0c;让人在品味中感受到健康与美味的双重享受。 素食&#xff0c;以其清淡、自然的…...

工厂现场多功能帮手,三防平板改善管理体验

随着制造业的智能化变革&#xff0c;信息化、自动化和智能化逐渐成为工厂管理的新常态。在这一波技术浪潮中&#xff0c;三防平板作为一种多功能的工作工具&#xff0c;正在逐步改善工厂现场的管理体验。 一、三防平板的定义与特点 三防平板&#xff0c;顾名思义&#xff0c;是…...

【git】问题解决---Failed to connect to github.com

场景 最近运行命令git push,git pull或者git clone的时候总会报如下错误 fatal: unable to access https://github.com/xxxxx/xxxxxx.git/: **Failed to connect to github.com** port 443 after 21052 ms: Couldnt connect to server原因 一般是网络配置原因造成的, 如果能…...

Java 中 String 类型的特点

在 Java 中&#xff0c;String 是一种常用且重要的数据类型&#xff0c;用于表示和处理字符序列。它有一些独特的特性和用法&#xff0c;使得它在开发中非常灵活和高效。以下是关于 String 类型的一些特点、特殊性、使用技巧以及注意事项。 1. String 的特点 1.1 不可变性 定…...

AddressUtils 、RegionUtils IP地址工具类

一、类展示 AddressUtils &#xff1a; /*** 获取地址类**/ Slf4j NoArgsConstructor(access AccessLevel.PRIVATE) public class AddressUtils {// 未知地址public static final String UNKNOWN "XX XX";public static String getRealAddressByIP(String ip) {i…...

牛客网SQL进阶134: 满足条件的用户的试卷总完成次数和题目总练习次数

满足条件的用户的试卷完成数和题目练习数_牛客题霸_牛客网 0 问题描述 基于用户信息表user_info、试卷信息表examination_info、试卷作答记录表exam_record、题目练习记录表practice_record&#xff0c;筛选出 高难度SQL试卷得分平均值大于80并且是7级的用户&#xff0c;统计他…...

机器学习:逻辑回归处理手写数字的识别

1、获取数据, 图像分割该数据有50行100列&#xff0c;每个数字占据20*20个像素点&#xff0c;可以进行切分,划分出训练集和测试集。 import numpy as np import pandas as pd import cv2 imgcv2.imread("digits.png")#读取文件 graycv2.cvtColor(img,cv2.COLOR_BGR2G…...

文件上传真hard

一、SpringMVC实现文件上传 1.1.项目结构 1.1.2 控制器方法 RequestMapping("/upload1.do")public ModelAndView upload1(RequestParam("file1") MultipartFile f1) throws IOException {//获取文件名称String originalFilename f1.getOriginalFilename(…...

精益管理|介绍一本专门研究防错法(Poka-Yoke)的书

在现代制造业中&#xff0c;如何确保产品在每个生产环节中不出现错误是企业追求的目标之一。而实现这一目标的关键技术之一就是防错法&#xff08;Poka-Yoke&#xff09;。作为一种简单而有效的精益管理、六西格玛管理工具&#xff0c;防错法帮助企业避免因人为错误或工艺不当导…...

面试题目:(4)给表达式添加运算符

目录 题目 代码 思路解析 例子 题目 题目 给定一个仅包含数字 0-9 的字符串 num 和一个目标值整数 target &#xff0c;在 num 的数字之间添加 二元 运算符&#xff08;不是一元&#xff09;、- 或 * &#xff0c;返回 所有能够得到 target 的表达式。1 < num.length &…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...