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

你好,我是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.mzph.cn/web/22526.shtml

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

相关文章

python-flask项目的服务器线上部署

在部署这部分我首先尝试了宝塔面板,始终连接失败 换了一种思路选择了Xshell成功连接 首先我们需要下载个免费版本的Xshell 免费的:家庭/学校免费 - NetSarang Website 下载完毕打开 1新建-> 输入服务器的账号密码: 在所有会话中点击自…

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

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

自动驾驶仿真:python和carsim联合仿真案例

文章目录 前言一、Carsim官方案例二、Carsim配置1、车辆模型2、procedure配置3、Run Control配置 三、python编写四、运行carsim五、运行python总结 前言 carsim内部有许多相关联合仿真的demo,simulink、labview等等都有涉及,这里简单介绍下python和car…

vuInhub靶场实战系列-DC-9实战

免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关。 目录 免责声明前言一、环境配置二、信息收集2.1 主机发现2.2 端口扫描2.3 指纹识别2.4 目录扫描2.4.1 Nikto目录扫描2.4.2 dirsearch目录扫描 2.5 漏洞发现2.5.…

OTTO、亚马逊、Temu卖家如何运用测评补单来提高购买率?

在跨境电商的广阔舞台上,测评补单无疑是一股不可或缺的强劲动力。商家们深知,通过补单这一手段,能够快速为产品注入活力,使销量迅猛攀升,评论如潮涌至,进而在激烈的竞争中脱颖而出,勇攀销量之巅…

绘画新手必备!六款免费易用的绘图软件推荐

在当今的数字世界里有各种各样的设计创作工具,那么问题来了我们应该如何在众多免费绘图软件中选择呢?为了回答这个问题,我们将在本文中介绍和测评六个领先的绘图软件。每一个都有自己独特的特点和优势,适合不同的需求和用户。以下…

香港优才计划是什么?一文说明白2024香港优才政策、申请条件、流程及利弊

香港优才计划是拿香港身份比较热门的方式之一,对很多想要保留生活重心在内地,但是又需要香港身份为子女规划教育升学的人来说,申请香港优才计划是获取香港身份再好不过的方式。 我们刚开始了解香港优才计划可能会有各种各样的担心&#xff0…

Terraform安装+部署Azure Resource笔记

安装 下载 Terraform: 首先,访问 官方 Terraform 网站。找到适用于 Windows 的 Terraform 包,并下载 zip 文件。解压 Terraform 包: 将下载的 zip 文件解压到一个新文件夹中,命名为 “Terraform”。可以选择任何位置作…

IDC最新报告:预计到2027年全球数字化转型支出将近4万亿美元

根据国际数据公司(IDC)5月30日发布的《全球数字化转型支出指南》,预计到2027年全球数字化转型(DX)支出将接近4万亿美元。在人工智能(AI)和生成式人工智能(Generative AI)…

手机自动化测试笔记:1.appium的安装与使用

建议先安装前置的程序,同时建议使用anconda进行环境管理。 参考1: 深度学习笔记:1.anaconda安装-CSDN博客https://blog.csdn.net/weixin_42771529/article/details/139434840 参考2: 笔记:如何在pycharm中使用anaco…

EyeGlassesGAN——通过消除人脸所带的眼镜以提高人脸识别的精度

0. 引言 从人脸图像中自动去除眼镜的框架是一个具有挑战性的问题,因为它涉及到精确地识别和处理图像中的眼镜以及相关的眩光和有色镜片。以下是该论文可能提出的一些关键点: (1). 学习框架: 数据集构建:…

深入浅出mysql海量数据批量更新插入、批量查询

1. mysql的批量写 mysql 批量插入可以用下面这种,在values 之后跟上各种多个值列表。但这种写法可能导致sql长度超长、锁超时等问题。 insert into (field1,field1,field1,) values (value01,value02,value03),(value11,value12,value13),(value21,value22,value2…

使用springboot+vue实现阿里云oss上传

一、前言 我们后端开发中,时常需要用到文件上传的功能,无非是保存到服务器本地或者如阿里云、七牛云这种云存储的方案。本篇介绍一种使用后台springboot结合前端vue实现阿里云oss上传的功能。 二、实现过程 前端实现一个通用的上传组件UploadFile &l…

可以通过其瞳孔判断AI生成的人脸数据是否可靠

概述 我们都知道,GANs的发展使得生成相互之间无法区分的人脸图像成为可能。虽然这项技术在发展,但也有弊端,比如出现了用生成的人脸作为资料图片的虚假社交媒体账户。因此,随着GANs的发展,使用深度学习模型检测生成的…

Java Web学习笔记5——基础标签和样式

<!DOCTYPE html> html有很多版本&#xff0c;那我们应该告诉用户和浏览器我们现在使用的是HMTL哪个版本。 声明为HTML5文档。 字符集&#xff1a; UTF-8&#xff1a;现在最常用的字符编码方式。 GB2312&#xff1a;简体中文 BIG5&#xff1a;繁体中文、港澳台等方式…

ARM32开发——串口输出

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 需求串口数据发送串口打印实现复用功能串口发送流程&#xff08;了解&#xff09;串口的标志位关心的内容 需求 串口循环输出内容到…

大数据基础问题:在Hive中如何实现全增量统一的UDTF、内置函数、聚合、Join等计算引擎常见算子?

仁者见仁智者见智&#xff0c;每个程序员的方法都不一样&#xff0c;老的程序员和新的程序员之间的思维差距很大&#xff0c;新入公司的和老员工的代码差距也很大。 在Apache Hive中&#xff0c;实现全增量统一的用户定义表生成函数&#xff08;UDTF&#xff09;、内置函数、聚…

pdf文件怎么合并成一个文件

在现代办公环境中&#xff0c;PDF文件的使用已变得非常普遍。它们具有跨平台、易读性强的特点&#xff0c;因此被广泛应用于各种场合。然而&#xff0c;当需要处理大量的PDF文件时&#xff0c;如何有效地将它们合并成一个文件&#xff0c;成为了一个需要解决的问题。本文将详细…

【越界写null字节】ACTF2023 easy-netlink

前言 最近在矩阵杯遇到了一道 generic netlink 相关的内核题&#xff0c;然后就简单学习了一下 generic netlink 相关概念&#xff0c;然后又找了一到与 generic netlink 相关的题目。简单来说 generic netlink 相关的题目仅仅是将用户态与内核态的交互方式从传统的 ioctl 变成…

盘点学习Python常犯一些错误,你中了几个

对于刚入门的 Pythonista 在学习过程中运行代码是或多或少会遇到一些错误&#xff0c;刚开始可能看起来比较费劲。随着代码量的积累&#xff0c;熟能生巧当遇到一些运行时错误时能够很快的定位问题原题。下面整理了一些常见的 17 个错误&#xff0c;等你写出的代码不怎么出现这…