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

目录

报头结构

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.mzph.cn/news/889588.shtml

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

相关文章

5.2章节python字符串的格式化三种方式

在Python中,格式化字符串是编程中常见的任务,它用于将变量或表达式的值嵌入到字符串中。以下是三种常见的格式化字符串的方式: 1.百分号(%)格式化: 这是Python早期版本中常用的字符串格式化方法。通过在字…

【经验分享】容器云运维的知识点

最近忙于备考没关注,有次点进某小黄鱼发现首页出现了我的笔记还被人收费了 虽然我也卖了一些资源,但我以交流、交换为主,笔记都是免费给别人看的 由于当时刚刚接触写的并不成熟,为了避免更多人花没必要的钱,所以决定公…

Spring Boot 集成 MyBatis 全面讲解

Spring Boot 集成 MyBatis 全面讲解 MyBatis 是一款优秀的持久层框架,与 Spring Boot 集成后可以大大简化开发流程。本文将全面讲解如何在 Spring Boot 中集成 MyBatis,包括环境配置、基础操作、高级功能和最佳实践。 一、MyBatis 简介 1. SqlSession …

Keil-MDK开发环境编译后axf自动转换bin格式文件

编译选项添加如下,调用fromelf工具自动完成转换: fromelf --bin -o "$LL.bin" "#L"

Python爬虫之Selenium的应用

【1】Selenium基础介绍 1.什么是selenium? (1)Selenium是一个用于Web应用程序测试的工具。 (2)Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。 (3)支持通过各种driv…

【超详细实战攻略】Jmeter逻辑控制器中if控制器、模块控制器、测试片段的使用方法

【超详细实战攻略】Jmeter逻辑控制器中if控制器、模块控制器、测试片段的使用方法 1 搭建测试对象1.1 禅道下载1.2 禅道安装1.3 运行禅道1.4 接口查看1.5 接口选择 2 Jmeter前置操作2.1 创建Jmeter线程组2.2 创建信息头管理器和请求默认值2.3 添加获取token接口2.4 添加监听器 …

8_Sass 颜色函数 --[CSS预处理]

Sass 提供了一系列的颜色函数,允许开发者在 CSS 中动态地创建和操作颜色。这些函数可以用于生成调色板、调整颜色的亮度或饱和度、混合颜色等,从而提高样式表的灵活性和可维护性。以下是 Sass 中一些常用的颜色函数及其用法示例: 1. adjust-…

工业大数据分析算法实战-day04

文章目录 day04统计分析概率分布参数估计假设检验 统计分布拟合1.基于核函数的非参数方法2. 单概率分布的参数化拟合3. 混合概率分布估计 线性回归模型1. OLS模型(普通最小二乘法)2. OLS模型检验3. 鲁棒线性回归4. 结构复杂度惩罚(正则化&…

vue3-tp8-Element:对话框实现

效果 参考框架 Dialog 对话框 | Element Plus 具体实现 一、建立view页面 /src/views/TestView.vue 二、将路径写入路由 /src/router/index.js import { createRouter, createWebHistory } from vue-router import HomeView from ../views/HomeView.vueconst router create…

VMware ESXi上创建Ubuntu虚拟机并实现远程SSH访问全攻略

文章目录 前言1. 在VMware ESXI中创建Ubuntu虚拟机2. Ubuntu开启SSH远程服务3. 安装Cpolar工具4. 使用SSH客户端远程访问Ubuntu5. 固定TCP公网地址 前言 本文主要介绍如何在VMware ESXi上创建一台Ubuntu 22.04虚拟机,并通过Cpolar内网穿透工具配置公网地址&#xf…

HQChart使用教程30-K线图如何对接第3方数据42-DRAWTEXTREL,DRAWTEXTABS数据结构

HQChart使用教程30-K线图如何对接第3方数据42-DRAWTEXTREL,DRAWTEXTABS数据结构 效果图DRAWTEXTREL示例数据结构说明nametypecolorDrawVAlignDrawAlignDrawDrawTypeDrawDataFont DRAWTEXTABS示例数据结构说明nametypecolorDrawVAlignDrawAlignDrawDrawTypeDrawDataFont 效果图 …

【电子元器件】电感基础知识

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、 电感的基本工作原理 1. 电感的基本工作原理如下: (1) 当线圈中有电流通过时&#…

大模型的文件有哪些?

在大模型仓库(如Hugging Face)中,例如:https://modelscope.cn/models/ZhipuAI/glm-4-9b-chat/files,通常会发现以下几类文件: 模型权重文件:存储训练好的模型参数,是模型推理和微调…

Python pyinstaller图形化打包工具

Python pyinstaller图形化打包工具 1.简介: 一个使用Python PYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的python打包体验。资源已打包,大家可自行下载。 相关功能: 识别…

canal安装使用

简介 canal [kənl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 工作原理 canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送 dump 协议…

专业140+总分400+北京理工大学826信号处理导论考研经验北理工电子信息与通信工程,真题,大纲,参考书。

考研总分400,专业826信号处理导论(信号与系统和dsp)140,成功上岸北理工,虽然已经一段时间,但是后劲很大,每每回想还是昨日事,群里同学多次要求分享自己的一些经验,感谢大…

pdb调试器详解

文章目录 1. 启动 pdb 调试器1.1 在代码中插入断点1.2 使用命令行直接调试脚本 2. 常用调试命令2.1 基本命令2.2 高级命令2.3 断点操作 3. 调试过程示例4. 调试技巧4.1 条件断点4.2 自动启用调试4.2.1 运行程序时指定 -m pdb4.2.2在代码中启用 pdb.post_mortem4.2.3 使用 sys.e…

基于Spring Boot的同城宠物照看系统的设计与实现

一、摘要 在快节奏的现代生活中,宠物已成为许多家庭不可或缺的一部分。然而,宠物照看服务的需求也随之增长。为了满足这一需求,我们设计并实现了一款同城宠物照看系统,该系统利用Java技术和MySQL数据库,为用户提供一个…

【Qt】QWidget中的常见属性及其作用(一)

目录 一、 enabled 例子: 二、geometry 例子: window fram 例子 : 四、windowTiltle 五、windowIcon 例子: qrc机制 创建qrc文件 例子: qt中的很多内置类都是继承自QWidget的,因此熟悉QWidget的…

全栈开发:后台管理系统时代的技术破局之道

在当前的互联网发展阶段,许多二三线城市的互联网项目正在经历一个显著的转变。传统的To C项目逐渐减少,取而代之的是大量的企业级后台管理系统。在这样的背景下,全栈开发——特别是前端加Java的组合,正在成为一个备受关注的发展方…