计算机网络-传输层 TCP协议(上)

news2025/1/23 23:28:40

目录

报头结构

TCP的可靠传输机制

核心机制一:确认应答

TCP的序号和确认序号

核心机制二:丢包重传

核心机制三:连接管理

建立连接-三次握手

断开连接-四次挥手

核心机制四:滑动窗口

数据包已经抵达, ACK被丢了

数据包就直接丢了​编辑


报头结构

4位TCP报头⻓度: 表⽰该TCP头部有多少个32位bit(有多少个4字节); 所以TCP头部最⼤⻓度是15 *4 = 60
UDP协议报头固定就是8个字节.
对于TCP来说,报头长度是可变长的,4个比特位,表示的数据范围是多少?
0000->1111
0x0->0xF(0->15)
此处的长度单位是4字节,不是字节.

保留(6位):

其他属性都要根据下面所有的机制来理解......

TCP的可靠传输机制

TCP基本特点:有连接、可靠传输、面向字节流、全双工

核心机制一:确认应答

TCP的序号和确认序号



核心机制二:丢包重传


主机A发送数据给B之后, 可能因为⽹络拥堵等原因, 数据⽆法到达主机B;

如果主机A在⼀个特定时间间隔内没有收到B发来的确认应答, 就会进⾏重发;但是, 主机A未收到B发来的确认应答, 也可能是因为ACK丢失了;

主机B会收到很多重复数据. 那么TCP协议需要能够识别出那些包是重复的包, 并且把重复的丢弃掉.


那么, 如果超时的时间如何确定?

确认应答和超时重传,相互补充,共同构建了TCP"可靠传输机制”网上很多资料,包括很多程序员的理解都是错误的,网上有人说:TCP的可靠传输,是通过"三次握手,和四次挥手保证的"(连接管理)。对于可靠传输,是有一点点作用的,但不是核心作用,核心作用,还是确认应答+超时重传。

核心机制三:连接管理

次数指的就是网络通信的次数。

三次握手/四次挥手,就是网络这个模块中,最高频的面试题,没有之一。

建立连接-三次握手

建⽴连接的意义:

1. 投⽯问路, 确认当前通信路径是否畅通.

2.确认通信双方各自的发送能力和接收能力是否都正常

3. 协商参数, 通信双⽅共同确认⼀些通信中的必备参数数值,比如TCP连接中的起始序号

断开连接-四次挥手

上述四个状态是比较重要的,尤其是后两个,是面试考过并难以应对的。

如果你面试中,被问到这个,你给面试官画图,你画哪个图?一定是画简图,不要画详细的图,水太深,你容易把握不住。画详图,画对了,不算加分项;画错了,可就没分了!试回答问题,一定是求稳,不要炫技。

核心机制四:滑动窗口

那么如果出现了丢包, 如何进⾏重传? 这⾥分两种情况讨论

数据包已经抵达, ACK被丢了

数据包就直接丢了

上篇关于UDP协议可以查看计算机网络-传输层 UDP协议-CSDN博客

TCP协议还有六个核心机制的详解请关注下篇文章⭐⭐⭐

计算机网络-传输层 TCP协议(下)-CSDN博客

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

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

相关文章

【Cadence射频仿真学习笔记】IC设计中电感的分析、建模与绘制(EMX电磁仿真,RFIC-GPT生成无源器件及与cadence的交互)

一、理论讲解 1. 电感设计的两个角度 电感的设计可以从两个角度考虑,一个是外部特性,一个是内部特性。外部特性就是把电感视为一个黑盒子,带有两个端子,如果带有抽头的电感就有三个端子,需要去考虑其电感值、Q值和自…

AutoSarOS中调度表的概念与源代码解析

--------AutoSarOS调度表的概念 一、AutoSarOS 是什么以及调度表的重要性 AutoSar(Automotive Open System Architecture)是汽车行业的一个开放式软件架构标准哦。它就像是一种大家都遵循的规则,能让不同的软件供应商一起合作开发汽车软件,这样软件就能被重复使用,开发效…

对golang的io型进程进行off-cpu分析

背景: 对于不能占满所有cpu核数的进程,进行on-cpu的分析是没有意义的,因为可能程序大部分时间都处在阻塞状态。 实验例子程序: 以centos8和golang1.23.3为例,测试下面的程序: pprof_netio.go package m…

VS项目,在生成的时候自动修改版本号

demo示例:https://gitee.com/chenheze90/L28_AutoVSversion 可通过下载demo运行即可。 原理:通过csproject项目文件中的Target标签,实现在项目编译之前对项目版本号进行修改,避免手动修改; 1.基础版 效果图如下 部…

springcloud-gateway获取应用响应信息乱码

客户端通过springcloud gateway跳转访问tongweb上的应用,接口响应信息乱码。使用postman直接访问tongweb上的应用,响应信息显示正常。 用户gateway中自定义了实现GlobalFilter的Filter类,在该类中获取了上游应用接口的响应信息,直…

node安装,npm安装,vue-cli安装以及element-ui配置项目

node.js Node.js主要用于开发高性能、高并发的网络服务器,特别适合构建HTTP服务器、实时交互应用(如聊天室)和RESTful API服务器等。‌它使用JavaScript语言,基于Chrome V8引擎,提供模块化开发和丰富的npm生态系统&…

新能源汽车充电需求攀升,智慧移动充电服务有哪些实际应用场景?

在新能源汽车行业迅猛发展的今天,智慧充电桩作为支持这一变革的关键基础设施,正在多个实际应用场景中发挥着重要作用。从公共停车场到高速公路服务区,从企业园区到住宅小区,智慧充电桩不仅提供了便捷的充电服务,还通过…

MCU驱动使用

一、时钟的配置: AG32 通常使用 HSE 外部晶体(范围:4M~16M)。 AG32 中不需要手动设置 PLL 时钟(时钟树由系统自动配置,无须用户关注)。用户只需在配置文件中给出外部晶振频率和系统主频即可。 …

简单的bytebuddy学习笔记

简单的bytebuddy学习笔记 此笔记对应b站bytebuddy学习视频进行整理,此为视频地址,此处为具体的练习代码地址 一、简介 ByteBuddy是基于ASM (ow2.io)实现的字节码操作类库。比起ASM,ByteBuddy的API更加简单易用。开发者无需了解class file …

2025erp系统开源免费进销存系统搭建教程/功能介绍/上线即可运营软件平台源码

系统介绍 基于ThinkPHP与LayUI构建的全方位进销存解决方案 本系统集成了采购、销售、零售、多仓库管理、财务管理等核心功能模块,旨在为企业提供一站式进销存管理体验。借助详尽的报表分析和灵活的设置选项,企业可实现精细化管理,提升运营效…

python 高级用法

1、推导列表 ans [ x for x in range(6)] print(ans)ans [ x for x in range(6) if x > 2] print(ans)ans [ x*y for x in range(6) if x > 2 for y in range(6) if y < 3] print(ans) 2、map 函数 a list(map(list,"abc")) print(a) b list(map(ch…

flask_socketio 以继承 Namespace方式实现一个网页聊天应用

点击进入上一篇&#xff0c;可作为参考 实验环境 python 用的是3.11.11 其他环境可以通过这种方式一键安装&#xff1a; pip install flask3.1.0 Flask-SocketIO5.4.1 gevent-websocket0.10.1 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple pip list 详情如下&am…

Redis 7.x如何安装与配置?保姆级教程

大家好&#xff0c;我是袁庭新。最新写了一套最新版的Redis 7.x企业级开发教程&#xff0c;今天先给大家介绍下Redis 7.x如何在Linux系统上安装和配置。 1 Redis下载与安装 使用非关系型数据库Redis必须先进行安装配置并开启Redis服务&#xff0c;然后使用对应客户端连接使用…

如何编辑调试gradle,打印日志

在build.gradle.kts中输入 println("testxwg1 ") logger.lifecycle("testxwg2") logger.log(LogLevel.ERROR,"testxwg5") 点刷新就能看到打印日志了

electron-vite【实战系列教程】

创建项目 https://blog.csdn.net/weixin_41192489/article/details/144442262 安装必要的插件 UI 库 element-plus npm install element-plus --save安装 element-plus 图标 npm install element-plus/icons-vue安装插件 – 自动注册组件 vs 自动导入框架方法 npm install -…

【开源项目】数字孪生轨道~经典开源项目数字孪生智慧轨道——开源工程及源码

飞渡科技数字孪生轨道可视化平台&#xff0c;基于国产数字孪生引擎&#xff0c;结合物联网IOT、大数据、激光雷达等技术&#xff0c;对交通轨道进行超远距、高精度、全天侯的监测&#xff0c;集成轨道交通运营数据&#xff0c;快速准确感知目标&#xff0c;筑牢轨交运营生命线。…

Rstudio安装

Rstudio提供了良好的R语言代码编辑环境&#xff0c;R程序调试环境&#xff0c;图形可视化环境以及方便的R工作空间和工作目录管理。 下载网址&#xff1a;https://posit.co/products/open-source/rstudio/ 进入网址&#xff1a; 下滑找到&#xff0c;点击进入 找到Dsektop&am…

Chrome 浏览器原生功能截长屏

我偶尔需要截取一些网页内容作为素材&#xff0c;但偶尔内容很长无法截全&#xff0c;需要多次截屏再拼接&#xff0c;过于麻烦。所以记录下这个通过浏览器原生功能截长屏的方案。 注意 这种方案并不是百分百完美&#xff0c;如果涉及到一些需要滚动加载的数据或者悬浮区块&am…

【工具】通过js获取chrome浏览器扩展程序列表id及名称等

【工具】通过js获取chrome浏览器扩展程序列表id及名称等 第一步 打开扩展程序页面 chrome://extensions/ 第二部 注入js获取 let 扩展字典 {} document.querySelector("body > extensions-manager").shadowRoot.querySelector("#items-list").shadow…

基于LSB最低有效位的音频水印嵌入提取算法FPGA实现,包含testbench和MATLAB对比

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 vivado2019.2 matlab2022a 3.部分核心程序 &#xff08;完整版代码包含详细中文注释和操作步骤视…