计算机网络学习记录 运输层 Day5

news2025/3/18 18:42:59

你好,我是Qiuner. 为记录自己编程学习过程和帮助别人少走弯路而写博客

这是我的 github https://github.com/Qiuner ⭐️

​ gitee https://gitee.com/Qiuner 🌹

如果本篇文章帮到了你 不妨点个吧~ 我会很高兴的 😄 (^ ~ ^)

想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎

计算机网络学习记录 运输层 Day5

  • 老师的动画、课件做的一如既往的好,很难找到写注释的地方。但在TCP三次握手四次挥手部分可能会有点懵,因此我做了详细的介绍,在讲这一章时,私以为应当先讲后面TCP报文段首部格式的,不然不知道FIN、seq、ack等,不知道为什么要这样安排课程
  • 相信您看了我的解释后,一定能快速理解,掌握这一重难点

运输层概述

image-20240603150818556

image-20240603152112899

  • 这里的端口是标志符

  • image-20240603152352819

  • 任务管理器----详细信息

image-20240603152203234

image-20240603152211443

运输层端口号 复用 分用概念

image-20240603152526554

image-20240603152649960

image-20240603153057516

  • 下面描述了一个信息从用户pc浏览器显示的过程,建议直接看视频,截图不好描述且视频说的很清楚
  • 5.2 运输层端口号、复用与分用的概念_哔哩哔哩_bilibili

image-20240603153151424

image-20240603153835683

image-20240603153908324

UDP与TCP

image-20240603160543109

image-20240603160632742

image-20240603160713848

image-20240603162552113

image-20240603163035094

image-20240603163805824

image-20240603163815608

TCP的流量控制

image-20240603163943582

流量控制 具体实现

image-20240603165026771

  • 这里还是建议看视频,视频讲的很好 5.4 TCP的流量控制_哔哩哔哩_bilibili
  • 这个窗口之前已经出现过且说过了,您可以看这篇 计算机网络学习记录 数据链路层 Day3 (上)-CSDN博客

中的回退N帧协议,这个窗口的设计理念和他是差不多的

习题

image-20240604204612063

答案

image-20240604204750307

image-20240604204757346

TCP拥塞控制

image-20240604205638877

image-20240604205723519

image-20240604205816899

  • 这一段建议直接看视频,动画做的非常好,这个老师着实有实力5.5 TCP的拥塞控制_哔哩哔哩_bilibili

  • 要注意的是,你刚开始学到这里可能会想关于这个发送是不是持续发送这样偏门问题,但我个人认为可以理解为第一次发、第二次发、第三次发之类

image-20240604211031590

  • 到达ssthresh使用拥塞避免算法
  • 重传器超时将ssthresh变为一半然后使用慢开始算法

慢开始、拥塞避免有什么用?为什么要使用?

  • 首要用处,当然是使用这两个算法能够
  • 网络不是一个永恒不变的东西,可能在某个时间段,网络能已 12 速度传输,而下个时间段,只能以 6 的速度传输了

image-20240604211300854

image-20240605093958728

  • 这里重复确认 M2 是想让发送方发来丢失的 M2,其实没有说明在传输三个连续重复确认帧时,如果再出现丢失会发生什么

image-20240605094225131

image-20240605094430531

联系

image-20240605094521481

答案

image-20240605094634916

TCP超时重传时间的选择

当超时重传时间小时

image-20240605100539747

  • 注意 这里超时重传,不要和上面三个重传确认帧混起来。
  • 可以这样理解:这个场景是基础的 发送方发送自己数据包后 就开始期待接受方给出确认收到

当超时重传时间大时

image-20240605100501631

重传时间解决方案

image-20240605101650461

  • 很经典的解决方案,只要意识到一点:网络传输是一个持续不断的过程,那这种时候将每次传输都当做一个人,为了设计出最多人都能通过的门,只能取平均

image-20240605102049399

image-20240605102231191

image-20240605102321700

image-20240605102437218

TCP可靠传输的实现

image-20240605104734597

image-20240605105020230

发送窗口

image-20240605104956800

  • 这一段也是建议看视频 5.7 TCP可靠传输的实现_哔哩哔哩_bilibili
  • 我感觉这老师稍微详细一点 那也不需要 别人做什么学习笔记了

image-20240605105403651

image-20240605105545892

习题

image-20240605105602582

image-20240605105856910

答案

image-20240605105639766

image-20240605110024016

image-20240605110033159

TCP的运输连接管理 ** 连接建立三次握手

  • 这个是比较重要的

image-20240605110230990

image-20240605110340238

  • 客户端和服务端分别有个传输控制模块,这是在进行数据传输前必做的

image-20240605110537631

image-20240605111141186

名词解释

SYN:同步序列编号(Synchronize Sequence Numbers)

  • SYN标志位用来标识连接请求。当一个主机希望与另一主机建立TCP连接时,它会发送一个设置了SYN标志位的数据包。
  • 上图可以看见,两者都在一开始发送了SYN=1,这证明他们愿意和彼此建立TCP连接

seq:序列号(Sequence Number)

  • seq字段包含发送方选择的初始序列号(Sequence Number)。这个序列号在连接建立时发送,并且后续的所有数据包都会基于这个序列号进行编号。
  • 我的理解是:一开始发了一个100大小的数据包,然后基于这个100大小的数据包继续发送其他,这时候的seq等于100,在发送100数据包时,seq就等于200了(这里没有考虑到ack确认号)

ACK:确认序列编号(Acknowledge Sequence Numbers)

  • ACK标志位表示确认。它用来确认接收到的数据包。每个TCP数据包都有一个ACK字段,它包含下一个期望接收的字节的序列号。

ack:确认号(Acknowledgment Number)

  • ack字段包含期望接收到的下一个字节的序列号。换句话说,它是发送方收到的最后一个字节的序列号加1。

具体三次握手过程如下:

  1. 第一次握手:
    • 客户端处于CLOSED(关闭)状态,向服务器发送一个SYN数据包,设置SYN=1,并选择一个初始序列号seq=x。
    • 服务器接收到该数据包后,从CLOSED状态进入LISTEN(倾听)状态,并继续等待连接。
  2. 第二次握手:
    • 服务器处于LISTEN状态,接收到客户端的SYN包后,回复一个SYN+ACK数据包,设置SYN=1,ACK=1,seq=y,并确认号ack=x+1。
    • 客户端接收到该数据包后,从SYN-SENT状态进入ESTABLISHED(已建立连接)状态。
  3. 第三次握手:
    • 客户端处于ESTABLISHED状态,接收到服务器的SYN+ACK包后,回复一个ACK数据包,设置ACK=1,seq=x+1,并确认号ack=y+1。
    • 服务器接收到该数据包后,从SYN-RCVD状态进入ESTABLISHED状态。

此时,TCP连接建立完成,客户端和服务器可以开始数据传输。

image-20240605130311701

  • 第一个TCP请求因为晚到,发到服务器端后,服务端就直接建立连接了,但此时,TCP客户端已经关闭,因此,服务器白白等待

image-20240605130331101

练习

image-20240605130651403

  • 多看看我的解释,就能理解了

答案

image-20240605131058128

  • 其中ACK是迷惑

image-20240605131113544

TCP的运输连接管理 ** 连接释放

FIN:终止连接(Finish)

  • FIN标志位表示发送方希望终止连接。当一方希望关闭连接时,会发送一个带有FIN标志的数据包。
  • 其他和上面握手是一样的

  • 通俗就是 客户端说我要走了 (一次挥手),然后服务端将自己最后要传输的数据传过去(二次挥手),然后说那我断开了(三次挥手),客户端收到后再发一条,确认断开(四次),这个时候客户端要等一会,因为怕这个确认断开传输丢失了

具体的四次挥手过程如下:


  1. 第一次挥手(FIN from client):
    • 客户端处于ESTABLISHED状态,发送一个带有FIN标志的数据包给服务器,设置FIN=1,seq=u,ack=v。
    • 服务器接收到该数据包后,进入CLOSE-WAIT状态。
  2. 第二次挥手(ACK from server):
    • 服务器处于CLOSE-WAIT状态,确认收到客户端的FIN包,发送一个ACK数据包,设置ACK=1,seq=v,ack=u+1。
    • 客户端接收到该数据包后,进入FIN-WAIT-1状态。
  3. 第三次挥手(FIN from server):
    • 服务器处于CLOSE-WAIT状态,准备关闭连接,发送一个带有FIN标志的数据包,设置FIN=1,seq=w,ack=u+1。
    • 客户端接收到该数据包后,进入FIN-WAIT-2状态。
  4. 第四次挥手(ACK from client):
    • 客户端处于FIN-WAIT-2状态,确认收到服务器的FIN包,发送一个ACK数据包,设置ACK=1,seq=u+1,ack=w+1。
    • 服务器接收到该数据包后,进入CLOSED状态。
    • 客户端在发送完ACK后,进入TIME-WAIT状态,等待2MSL(Maximum Segment Lifetime,最大报文段生存时间),以确保服务器已经收到确认包,然后进入CLOSED状态。
  • 通过这四次挥手,TCP连接的双方能够安全地关闭连接,确保所有在传输中的数据都能够被成功接收。

image-20240605131814062

image-20240605132209331

TCP报文段的首部格式

image-20240605132255903

image-20240605132317353

image-20240605132438636

image-20240605133122446

image-20240605133149518

image-20240605133242291

  • 这里还是建议直接看视频 5.9 TCP报文段的首部格式_哔哩哔哩_bilibili

  • 都是一些新概念,得要多看几遍

image-20240605133428472

image-20240605133451654

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

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

相关文章

Cocos入门2:软件安装

Cocos Creator的安装教程如下,按照步骤进行,可以帮助您顺利安装Cocos Creator: 一、下载Cocos Dashboard 访问Cocos官网:前往Cocos Creator的官方网站(https://www.cocos.com/creator/)。 下载Cocos Dash…

第二证券:创新高!2只北交所股票走势耀眼,活跃游资现身“龙虎榜”

尽管今日北交所商场保持震动的走势,北证50指数一度绿盘,不过一些个股走势却适当耀眼。 今日北证50指数全天收涨0.13%,122只个股飘红。个股方面,亿能电力低开高走,尤其是午后走势弱小,盘中狂飙一度大涨近28…

玩转Matlab-Simscape(初级)- 09 - 在Simulink中创建曲柄滑块机构的控制模型

** 玩转Matlab-Simscape(初级)- 09 - 在Simulink中创建曲柄滑块机构的控制模型 ** 目录 玩转Matlab-Simscape(初级)- 09 - 在Simulink中创建曲柄滑块机构的控制模型 前言一、问题描述二、创建模型2.1 识别机构中的刚体2.2 确定刚…

从当当网批量获取图书信息

爬取当当网图书数据并保存到本地,使用request、lxml的etree模块、pandas保存数据为excel到本地。 爬取网页的url为: http://search.dangdang.com/?key{}&actinput&page_index{} 其中key为搜索关键字,page_index为页码。 爬取的数据…

Java如何实现pdf转base64以及怎么反转?

问题需求 今天在做发送邮件功能的时候,发现邮件的附件部分,比如pdf文档,要求先把pdf转为base64,邮件才会发送。那接下来就先看看Java 如何把 pdf文档转为base64。 两种方式,一种是通过插件 jar 包的方式引入&#xf…

【5】MySQL数据库备份-XtraBackup - 全量备份

MySQL数据库备份-XtraBackup-全量备份 前言环境版本 安装部署下载RPM 包二进制包 安装卸载 场景分析全量备份 | 恢复备份恢复综合 增量备份 | 恢复部分备份 | 恢复 前言 关于数据库备份的一些常见术语、工具等,可见《MySQL数据库-备份》章节,当前不再重…

618超值推荐:年度必备好物清单,性价比数码好物一网打尽!

在这个信息爆炸、科技日新月异的时代,数码产品已经成为我们生活中不可或缺的一部分。它们不仅极大地丰富了我们的娱乐生活,也极大地提高了我们的工作效率和生活质量。然而,面对市场上琳琅满目的数码产品,如何在618购物节中做出最明…

用开源模型MusicGen制作六一儿童节专属音乐

使用的是开源模型MusicGen,它可以根据文字描述或者已有旋律生成高质量的音乐(32kHz),其原理是通过生成Encodec token然后再解码为音频,模型利用EnCodec神经音频编解码器来从原始波形中学习离散音频token。EnCodec将音频信号映射到一个或多个并…

【EFK日志系统】docker一键部署kibana、es-head

docker一键部署kibana、es-head kibana部署es-head部署 上一篇文章搭建了es集群 规划服务器是 es01:172.23.165.185 es02:172.23.165.186 es03:172.23.165.187 那么kibana就搭建在主节点es01:172.23.165.185 按照顺序参考: docker一键部署EFK系统(elas…

1.2 QT随手简记(二)

QT学习篇2 一、QT学习方法 1. QT查询与学习资源 QT助手:学会使用QT的助手和上网查询,掌握API文档的查询与使用。QT设计师界面:通过图形界面进行组件的拖拽布局,所见即所得。 2. QT设计师界面操作 跳转与代码生成:…

数据结构:模拟队列

数据结构&#xff1a;模拟队列 题目描述参考代码 题目描述 输入样例 10 push 6 empty query pop empty push 3 push 4 pop query push 6输出样例 NO 6 YES 4参考代码 #include <iostream>using namespace std;const int N 100010;int q[N], hh, tt;int m, x; string …

产品经理用AI,跟普通人有什么不同?

最近跟一个产品经理朋友聊天&#xff0c;他们公司最近单独拉一个只有产品经理的 team&#xff0c;要在接下来半年把过去几年火过的产品工具&#xff0c;“加上 AI 驱动”重新做一遍。 美其名曰“抓住 AI 浪潮的红利”。 这不是今天的重点&#xff0c;重点是他在高频的用 AI 设…

Java18+​App端采用uniapp+开发工具 idea hbuilder智能上门家政系统源码,一站式家政服务平台开发家政服务

Java18​App端采用uniapp开发工具 idea hbuilder智能上门家政系统源码&#xff0c;一站式家政服务平台开发 家政服务 家政服务是一个专为家政服务人员设计的平台&#xff0c;该平台旨在提供便捷、高效的工作机会&#xff0c;同时确保服务质量和客户体验。 以下是关于家政服务师…

交易量突破 3000 亿美元,去中心化衍生品协议 APX Finance 成最大的黑马?

“APX Finance 总交易量现已突破 3000 亿美元&#xff0c;已然成为链上衍生品赛道的主力军” 自 2021 年链上衍生品市场进入萌芽期以来&#xff0c;该板块始终保持着较高的市场增速&#xff0c;即便如此该领域仍旧存在极大的发展空间。一方面&#xff0c;衍生品板块交易量目前占…

水电站大坝安全监测工作详解

水电站大坝安全监测是确保大坝结构安全和操作安全的关键组成部分。本文将详细解释水电站大坝安全监测的9项主要工作内容&#xff0c;帮助理解其重要性和执行过程。 1) 现场监测 现场监测是水电站大坝安全监测的首要步骤。监测人员需要定期对大坝的物理结构进行检查&#xff0c;…

Atlassian企业日技术分享:AI在ITSM中的创新实践与应用、Jira服务管理平台AI功能介绍

2024年5月17日&#xff0c;Atlassian中国合作伙伴企业日活动在上海成功举办。活动以“AI协同 创未来——如何利用人工智能提升团队协作&#xff0c;加速产品交付”为主题&#xff0c;深入探讨了AI技术在团队协作与产品交付中的创新应用与实践&#xff0c;吸引了众多业内专家、企…

如何避免U盘数据泄露?U盘重要文件怎么加密?

U盘是最常用的移动存储设备&#xff0c;小巧的体积可以帮助我们存储大量数据。而为了保护U盘数据&#xff0c;避免文件泄露&#xff0c;我们需要加密保护U盘。那么&#xff0c;U盘重要文件该怎么加密呢&#xff1f;下面我们就来了解一下吧。 BitLocker 当你的U盘文件不多&…

Leetcode:最长公共前缀

题目链接&#xff1a;14. 最长公共前缀 - 力扣&#xff08;LeetCode&#xff09; 普通版本&#xff08;横向扫描&#xff09; 主旨&#xff1a;用第一个字符串与后续的每个字符串进行比较&#xff0c;先获取S1和S2的最长公共前缀&#xff0c;然后将该次比较获得的最长公共前缀…

stack学习

std::stack 类是一种容器适配器&#xff0c;它给予程序员栈的功能——特别是 FILO&#xff08;先进后出&#xff09;数据结构。该类模板用处为底层容器的包装器——只提供特定函数集合。栈从被称作栈顶的容器尾部推弹元素。 operator 赋值给容器适配器 (公开成员函数) 元素访问…

Execl数据导入 EasyExcel实现

官网 1. 需求简介 读取下面表格数据 第一行和第二行是计划信息 第三行是计划详情的抬头信息,以下行是计划详情信息 总段包含多个分段,总段使用了单元格合并功能 2. 实现读取功能 2.1 引入easyexcel依赖 <dependency><groupId>com.alibaba</groupId><…