计算机网络——传输层(25王道最新版)

传输层

  • 传输层提供的服务
    • 进程 端口号 传输层协议之间的关系
      • socket套接字
    • 有链接 VS 无连接 | 可靠 VS 不可靠
  • UDP数据报及检验
    • 数据报格式
    • 检验方法
  • TCP
    • TCP协议的三大阶段
    • TCP报文段格式(很重要)
      • 建立连接(三次握手)(超级超级重要)
      • 数据传输
      • 释放连接(四次挥手)
      • TCP连接管理小节
    • TCP流量控制和可靠传输
      • 可靠传输-拥塞控制
        • TCP 拥塞控制和流量控制的关系
      • 慢开始 与拥塞控制算法
      • 结语

传输层提供的服务

  • 地位
    在这里插入图片描述

  • 概述

在这里插入图片描述

进程 端口号 传输层协议之间的关系

在这里插入图片描述

socket套接字

  • 解决了每次传输 需要重复输入协议(TCP/UDP)以及对方的IP地址和端口号的问题 它的本质是一种数据结构
  • 例如进程1与进程5之间需要传输数据 因为他们都是使用的TCP协议 所以就会创建一个TCP套接字
  • 在这个套接字里面需要指明对方的IP地址和端口号
  • 接下来如果两个进程之间需要有多次的数据传输 就可以直接用套接字来说明传输方向

有链接 VS 无连接 | 可靠 VS 不可靠

  • 在下面两张图中 左边指的是TCP 右边指的是UDP
    在这里插入图片描述

在这里插入图片描述

UDP数据报及检验

  • UDP
    在这里插入图片描述
  • TCP
    在这里插入图片描述

数据报格式

在这里插入图片描述

检验方法

  • 对于一组数据
    在这里插入图片描述
  • 对于多组数据
    在这里插入图片描述
  • 说明
    在这里插入图片描述
  • 小节
    在这里插入图片描述

TCP

TCP协议的三大阶段

在这里插入图片描述

  • 一次链接可以传输多个报文
    在这里插入图片描述

  • 这里引入了换一个概念就是MSS 表示我们传输时报文段的最大长度

  • 这里重点说一下这句话“TCP是面向字节流的 UDP是面向报文的”

  • 怎么样来理解呢

  • 对于TCP协议而言 它将应用层交给他的数据看作是一连串的字节流 不管关心数据到底是报文Y的还是报文Z的 只是根据MSS的限制将它拆分成合适的大小进行传输

  • 跟前面UDP不同的是 UDP数据报每次运输的都是一个完整的报文

  • 这便是 面向字节流和面向报文的含义

在这里插入图片描述

TCP报文段格式(很重要)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

建立连接(三次握手)(超级超级重要)

  • 因为我们的TCP协议是在建立连接的基础之上的 所以我们在传输数据之前必须有一个建立连接的过程
  • 在前面的学习中我们知道当SYN=1的时候 表示这是一个连接请求或者接受报文 对应到下图中显然只有握手1是在请求连接 只有握手2是在同意请求连接
  • 则显然只有握手1和握手2的SYN=1
  • seq表示传输的数据的起始位置 ack=667 说明的是我(接收方)希望你下一次给我发送的数据是从667开始的
  • 这里还需要提一下窗口值的概念
  • 例如A发送给B的时候设置window=200 ack=100意思是告诉B 你下一次给我发送数据的时候要从100这个位置开始 并且的接收能力是200 换句话说 从100开始 我(A)还允许你给我发200B的数据
    在这里插入图片描述
  • 特别要注意的是 对于握手2 他虽然表示的同意连接 也就是他的TCP报文段只由首部构成 并没有任何的数据部分 但是他仍然需要消耗一个序号 即他返回的ack需要在seq(起始位置)的基础上+1
  • 为什么说需要特别注意呢 因为握手3可以选择要不要携带数据 他在不带数据的情况下跟握手2不同的是 他并不需要消耗一个序号
    在这里插入图片描述
  • 三次握手的状态变化

在这里插入图片描述

数据传输

释放连接(四次挥手)

  • 在前面我们学习了FIN=1表示发送方的数据已经全部发送完毕
  • 但是我们的TCP是提供全双工通信的 也就是双向的 这是一个传输层的协议
  • 不同于我们数据链路层实现流量控制与可靠传输时候学习的S-W,GBN,SR等协议 他们都是有明确的发送方和接受方的 也就说明他们是工作在半双工条件下的协议
  • 在四次挥手中只有挥手1(表示客户传输完毕)和挥手3(表示服务器传输完毕)表示数据传输完毕 也就是说他们是都可以作为发送方的
  • 挥手2和挥手4是我们各自作为接收方告诉对面数据已经被接收 而这恰恰又体现了TCP是一种可靠 有连接的传输服务
  • 特别需要说明的是挥手1和挥手3可以携带数据 但是他们一般不携带数据
  • 而挥手2是可以携带数据的 因为挥手1仅仅是进程A单方面结束了数据传送
  • 挥手4是不可以携带数据的 因为挥手3之后已经代表数据传送结束了
    在这里插入图片描述#### 四次挥手的状态变化
  • 对于TIME-WAIT这个状态是用于我们防止我们的服务器没有接收到挥手4 假如真的传输失败了
  • 那么这个时间段的等待就是非常有必要的 因为对于我们的服务器而言 他长时间没有收到我们A给他发送的挥手4
  • 他就会重新发送挥手3 这样我们的进程A就会收到 然后重新发送挥手4
  • 如果这一段时间什么也没有收到 那么我们的客户进程就默认对面已经收到了我们发出的挥手4

在这里插入图片描述

TCP连接管理小节

在这里插入图片描述

TCP流量控制和可靠传输

  • 首先TCP是一个传输层概念 他实现流量控制和可靠传输的方式和我们数据链路层是非常类似的
  • 可靠传输方面 它跟我们数据链路层一样 用到这个确认机制 不过来这里我们这个是对于报文段的一个确认 可以接受一个报文段就返回一个ACK
  • 在重传机制方面 也是非常类似 就是只要在规定时间之内没有收到接受方返回的ACK那么就需要重发
  • 举个例子 对于四次挥手 我们的发送方是在最后需要CLOSE阶段之前 也就是我们发送方收到挥手3之后设置一个TIME-WAIT阶段
  • 这个阶段的时长是2倍MSl 表示我们报文段在网络中存在的最大寿命 设置的本质原因就是 我们的需要发送方他需要确保服务器收到了我们的请求关闭数据传送的信息 也就是我们需要收到挥手4才能进入CLOSE阶段
  • 假设我们服务器返回的这个ACK丢失了 那么在过了一段时间时候 客户端进程就会重新发送 直到顺利接收服务器返回的ACK
  • 在流量控制方面 也是类似 引入滑动窗口机制 这个时候接收方和发送方都会维持一个窗口 根据传输过程中发送的 rwnd的值来告诉对方 从某个序号开始 我最多还能接受多少数据
    在这里插入图片描述

可靠传输-拥塞控制

TCP 拥塞控制和流量控制的关系
  • 之前学习的流量控制的对象是两个进程各自的某个端口 也就是局部的控制
  • 拥塞控制实现的是控制整个网络的数据发送量 是全局的
    在这里插入图片描述

慢开始 与拥塞控制算法

  • 首先我们在建立TCP连接之后 就会默认使用慢开始算法 也就是说一开始的发送窗口的值为1 之后每隔一个RTT(往返时延)我们的发送窗口就会翻倍 也就是x2按指数级增长 直到达到阈值(ssthresh)
  • 这里唯一需要注意的一点是 如果在阈值前一个RTT 照理来说他是需要翻倍的 但是如果发送窗口此时翻倍之后 超过了这个阈值 那么取其中的较小值作为发送窗口的大小 也就是min{阈值 cwnd}
  • 之后的时间内 会自动转为拥塞避免算法 就好比之前我们刚刚开始运动 每天的运动量都翻倍 但是随着运动量越来越大 我们肯定需要降低他的增长速度 也就对应了这里的拥塞避免算法 使得增长速度降为线性
  • 通过之前的学习我们知道一旦出现了超时重传 可能说明我们网络当中某些路由器的负载太大了 以至于不能及时返回确认信息 所以此时认为严重拥塞 那么此时会干两件事情
    1. 在这个RTT结束之后我们检测到拥塞 立即将cwnd(拥塞窗口)设置为1
  • 2.阈值设置为原来的一半 本质上就是降低数据的发送量
  • 之后延续之前的流程 一开始还是使用慢开始 到达阈值之后使用拥塞避免算法
    在这里插入图片描述
  • 例题
  • 对于在解决这道例题之前 我们需要明确的是 之前在拥塞控制那里玩吗讨论的前提是接收窗口足够大 导致玩吗每次调整发送窗口大小完全是依据拥塞窗口来调整的
  • 但实际情况是 发送窗口=min{rwnd,cwnd}
  • 此外还需要注意的是一般来说都会设置MSS=1KB这个条件 也就是说 我们阈值和发送/接收缓冲区的大小就是他们的值除以1KB
  • 好那知道这些之后我们再去看这道例题

在这里插入图片描述

  • 首先 我们的阈值是32 乙的接收窗口rwnd大小是16 说了乙是将数据全部存入缓存 不被取走 也就说说暂时还不交付给应用层
  • 其次基本思路就是我们甲他的发送窗口不能大于乙的接收窗口rwnd 同时不能大于他的拥塞窗口
  • 0时刻 阈值S=32 r=16 c=1 发送窗口:1
  • 1时刻 S=32 r=15 c=2 发送窗口:2
  • 2时刻。 S=32 r=13 c=4 发送窗口:4
  • 3时刻。 S=32 r=9 c=8 发送窗口:8
  • 4时刻。 S=32. r=1 c=16 发送窗口:1

结语

今天翻草稿箱的时候 居然还有以前写的文章没发出去哈哈 还有好几篇等我稍微完善一下再发出去
该说不说 现在感觉ipad写还行啊 感觉CSDN优化了~
在这里插入图片描述

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

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

相关文章

羽毛球地板:从专业运动场景到全民健身市场的技术跃迁与产业重构

在全球体育产业向“专业化大众化”双轨并行的趋势下,羽毛球地板作为运动场景的核心基础设施,正经历从单一功能型产品向“性能优化场景适配智能管理”一体化解决方案的转型。据QYResearch统计,2031年全球羽毛球地板市场规模将达15.95亿元&…

R 语言查看类库源码的方法

你想查看 getGEO(来自 R 语言 GEOquery 包)的源码,这能帮你更好理解其工作原理和数据处理细节。由于 getGEO 是 R 函数,查看方法与 Python 有所不同。下面为你提供几种主要方法。 方法 适用场景 关键命令/操作 在 R 控制台直接查看…

SQL,posexplode 用法示例

示例1 -- 创建测试数据 WITH test_data AS (SELECT array(apple, banana, cherry) as fruits ) SELECT pos, col FROM test_data LATERAL VIEW posexplode(fruits) t AS pos, col;结果 pos | col ----|------- 0 | apple 1 | banana 2 | cherry示例2 -- 假设有一个用户表…

数据库造神计划第十天---数据库约束(1)

🔥个人主页:寻星探路 🎬作者简介:Java研发方向学习者 📖个人专栏:《从青铜到王者,就差这讲数据结构!!!》、 《JAVA(SE)----如此简单&a…

知微传感Dkam系列3D相机SDK例程篇:CSharp连接相机及保存数据

序言 写在前面 本人从事机器视觉细分的3D相机行业。编写此系列文章主要目的有: 1、便利他人应用相机,本系列文章包含公司所出售相机的SDK的使用例程及详细注释;2、促进行业发展及交流。 知微传感Dkam系列3D相机可以应用于定位分拣、焊接焊缝提…

[笔记] 系统分析师 第十二章 软件架构设计(分析师主要工作)

文章目录前言12.1 软件架构概述12.1.1 软件架构的意义12.1.2 软件架构的发展史12.2 软件架构建模12.3 软件架构风格12.3.1 软件架构风格概述12.3.2 数据流体系结构风格1.批处理体系结构风格2.管道-过滤体系结构风格12.3.3 调用/返回体系结构风格1.主程序/子程序风格2.面向对象体…

C++---存储周期,作用域,链接性

在C程序设计中,变量的行为不仅由其类型决定,还由存储周期(变量在内存中存在的时间)、作用域(变量可被访问的代码范围)和链接性(变量在多文件程序中的可见性)共同约束。 一、存储周期…

基于Python的商品爬取与可视化系统

本系统是基于Python的商品数据爬取与价格分析可视化系统,集成了数据爬取、数据存储、数据展示和可视化分析等功能。下面介绍一下系统主要功能和技术栈。一、主要功能:1、数据爬取功能 支持淘宝美妆商品数据爬取 可配置搜索关键词和爬取页数 实时显示爬取…

联邦学习过程中,了解清楚影响准确率的因素有哪些也很重要

影响模型准确率的因素有很多,下面是一些主要的因素,它们可以从数据、模型设计、训练策略以及超参数等多个层面来考虑。1. 学习率作用:学习率直接影响模型的训练速度、稳定性和最终表现。过高的学习率可能导致模型不收敛或收敛不稳定&#xff…

C# WPF中使用System.Management.Automation类调用Powershell报错解决办法

在WPF开发中,需要使用powershell进行自动化管理,以下为开发环境 1、.NET framework 4.7.2 2、VS2019 社区版 使用System.Management.Automation类 遇到的问题: 需要引用 System.Management.Automation类,但是在使用using指令时无法…

从 Pump.fun「直播」看热点币的生与死

在加密市场里,热点就是流量,流量就是价值。最近,Solana 生态的 Pump.fun 推出了「直播」板块,让发币这件事变得像看秀一样:一个个新币在链上实时登场,社区即时互动,玩家实时下注。这种形式不仅带…

图灵完备性:计算理论的基石与无限可能

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术! 1 图灵完备性的基本概念 图灵完备性(Turing completeness…

HarmonyOS 5.0应用开发——V2装饰器@once的使用

【高心星出品】 文章目录V2装饰器once的使用概念一、核心作用与规则二、适用场景案例V2装饰器once的使用 概念 在鸿蒙ArkTS开发中,Once装饰器用于实现子组件仅接受父组件传递的初始值,后续父组件数据变化不再同步至子组件。以下是其核心要点&#xff1…

跨域请求:解决方案

一、跨域核心概念:同源策略与跨域定义 跨域问题的根源是浏览器的 同源策略(Same-Origin Policy),这是浏览器为保护用户数据安全而设置的核心安全限制。 1. 什么是 “同源”? “同源” 指的是两个 URL 的 协议、域名…

前端形态与样式风格:从古典到现代的视觉语言演进

目录前端形态与样式风格:从古典到现代的视觉语言演进概述1. 前端形态的演进:四种核心范式1.1 古典范式:语义化HTML与CSS1.2 组件化范式:模块化与复用1.3 响应式范式:多端适配1.4 动态范式:状态驱动视图2. 样…

用户系统从0到1:登录、权限、积分一网打尽

👤 用户系统从0到1:登录、权限、积分一网打尽 副标题:Flask-Login 多级权限 积分会员系统实战 项目原型:https://madechango.com 难度等级:⭐⭐⭐☆☆ 预计阅读时间:20分钟 🎯 引子&#xff1…

Java 大视界 -- Java 大数据在智能安防视频监控系统中的视频内容理解与智能预警升级

Java 大视界 -- Java 大数据在智能安防视频监控系统中的视频内容理解与智能预警升级引言:正文:一、传统安防监控的 “三重困局”:看不全、看不懂、反应慢1.1 人工盯屏 “力不从心”1.1.1 摄像头密度与人力的矛盾1.1.2 录像调阅 “马后炮”1.2…

OpenHarmony包管理子系统核心源码深度解读:从BundleManager到AMS,彻底打通应用安装、卸载与沙箱机制全链路

目录 架构概览 核心组件详解 包安装流程分析 包卸载流程分析 包更新流程分析 包信息存储机制 Launcher界面管控 开机默认系统应用安装机制<

简单聊聊神经网络中的反向传播

参考文章&#xff1a; 一文弄懂神经网络中的反向传播法——BackPropagation - Charlotte77 - 博客园 反向传播求偏导原理简单理解_反向传播偏导-CSDN博客 这篇文章是笔者在读完上述两篇参考文章后的整理或者说按照自己的理解进行的一些补充&#xff0c;强烈推荐先阅读上述两篇文…

JSP自驾游管理系统46u2v--(程序+源码+数据库+调试部署+开发环境)

本系统&#xff08;程序源码数据库调试部署开发环境&#xff09;带论文文档1万字以上&#xff0c;文末可获取&#xff0c;系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义 近年来&#xff0c;自驾游因自由度高、个性化强成为国内旅游市场增长最快的领域&…