【从零开始学习计算机科学与技术】计算机网络(六)传输层

【从零开始学习计算机科学与技术】计算机网络(六)传输层

    • 传输层
      • 传输层功能
      • 传输层复用机制
      • UDP
      • TCP传输控制协议
        • 确认号码(ACK)
        • RTO
        • TCP报文格式
      • TCP链接的建立
      • TCP链接的释放
      • TCP的拥塞控制
        • 慢开始算法
        • 拥塞避免算法
        • 快重传
        • 快恢复
      • TCP与UDP的缺点
      • RTP协议
      • 套接字

传输层

用户无法控制网络中的内容。
因此,最终用户仅在最终主机上建立另一层,以提供比基础网络服务更可靠的传输服务。 使用这个新的网络连接,它可以向对等方发送查询,询问哪些数据到达了哪些数据没有到达,然后从中断的地方开始取回。

传输层提供了进程到进程的通信方式,而且传输层允许多个并发应用程序使用传输服务。为应用程序编写者提供通用接口,而不管其底层网络层如何。
本质上,应用程序编写者可以使用传输层原语一次编写代码,然后在不同的网络(但具有相同的传输层)上使用它。

在传输层,服务访问点标识上层服务(应用程序)。在数据链路层,数据链路级协议通过MAC地址识别网络中的哪两台计算机正在通信。在网络层,网络级协议通过IP地址互联网中的哪两台计算机正在通信。因此,在传输层,传输级协议需要通过一个地址识别正在通信的上层协议。这个地址被称为端口(port)。
端口号有16 位,端口范围:0-65535。一般的,端口号效于1023用于公共应用(保留,全局分配,用于标准服务器)。IANA分配端口号1024-49151,用于用户端口,注册端口。端口号大于49152的作为动态端口,私人端口。

IP标头包含IP地址,而UDP / TCP标头包含端口号。每个套接字是包含一个IP地址和一个16位的端口( port )端口是通信进程的全球唯一标识,即套接字地址唯一定义一个进程。

端口地址的表示主要有:

三元组:协议、本地地址、本地端口号。

五元组:协议、本地地址、本地端口号、远端地址、远端端口号。

目前,端到端交付可以通过以下两种方式之一完成:

  1. 面向连接的传输。面向连接的传输分为三个阶段:建立连接,数据传输,连接终止。

  2. 面向无连接的传输。

传输层功能

分片和重组。传输层在每个段上添加一个序列号。该数字表示重新组装的顺序。每个段都带有一个字段,指示该字段是传输的最后段还是中间段。

聚合和分离。当属于单个会话的数据单元的大小太小,以至于多个单元可以组合成一个数据报时。每个单元的序列号允许在目的地正确分隔。

错误控制机制。基于错误检测和重传。使用软件中实现的算法(例如校验和)执行错误检测。

损失控制。序列号允许接收方的传输层协议识别任何丢失的段并请求重新发送。

流量控制。传输层的流量控制机制与链路层相似,但是传输层的流控制是端到端执行的,而不是跨单个链路执行的。传输层通过滑动窗口实现流量控制,其使数据传输更加有效,并控制数据流。关于在传输层滑动窗口的一些不同:发送方不必发送整个窗口的数据。确认时可以根据确认的数据段的序列号扩展窗口的大小。接收方可以增加或减小窗口的大小。接收方可以随时发送确认。

传输层复用机制

向上复用。传输层可以沿着同一路径发送绑定到同一目的地的多个传输。当基础网络具有高吞吐量时,此功能很有用。
向下多路复用。当基础网络的容量较低或较慢时(例如X.25的三位序列代码),此功能非常有用。

UDP

UDP 是一个无连接的(connectionless)的传输层协议,其提供端点标识,端到端的数据传输,不提供差错控制、流量控制和可靠传输。但简洁高效。
UDP数据报总长度的最小长度为8个字节,而数据部分的长度可以为0到65507字节,UDP数据报包括三个部分。伪首部。用于错误检查的必要IP信息。UDP头。数据。UDP使用校验和来进行错误检验,与IP协议的校验和不同(IP校验和只需要校验IP首部),UDP的校验和需要验证整个完整的数据报以及伪首部。

TCP传输控制协议

TCP (Transmission Control Protocol) 是专门为了在不可靠的互联网络上提供可靠的端到端字节流而设计的。
TCP必须动态地适应不同的拓扑、带宽、延迟、分组大小和其它的参数,并且当有错误的时候,能够足够健壮。
TCP是面向连接的传输协议,并且没有“消息边界”,其将多个字节分组到称为段的数据包中。所有的 TCP 连接是全双工的(同时双向传输)和端到端的(每条连接只有两个端点)。
TCP 不支持组播和广播,其只有一个发送者和一个接收者。
TCP连接是字节流而不是消息流。
TCP的发送方和接收方通过缓冲区以进行同步,并且采用滑动窗口以及动态策略进行流量控制。
TCP存在差错控制和重传机制。
要想获得TCP服务,发送方和接收方必须创建一种称为套接字( sockets )的端点( end points)。
TCP连接中传输的所有数据存在编号,编号在每个方向上都是独立的,而且编号不必从0开始,它随机开始,随机数介于0到 2 3 2 − 1 2^32-1 2321之间。编号可用于流和错误控制。
TCP使用以下两个字段来跟踪段:序列号(seq)、确认号码(ACKÿ

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

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

相关文章

JS逆向案例-HIKVISION-视频监控的前端密码加密分析

免责声明 本文仅为技术研究与渗透测试思路分享,旨在帮助安全从业人员更好地理解相关技术原理和防御措施。任何个人或组织不得利用本文内容从事非法活动或攻击他人系统。 如果任何人因违反法律法规或不当使用本文内容而导致任何法律后果,本文作者概不负责。 请务必遵守法律…

SENT接口

文章目录 前言SENT接口简介物理层数据链路层编码方式帧结构消息格式短串行消息格式增强型串行消息格式 CRC校验和CRC4CRC6 错误检测机制 IP 设计结构框图接口设计上板验证 前言 本文参考标准《SAE J2716_201604》。 SENT接口 简介 SENT(Single Edge Nibble Tran…

Qt-搭建开发环境

1.环境搭建 开发工具概述: Qt ⽀持多种开发⼯具,其中⽐较常⽤的开发⼯具有:Qt Creator、Visual Studio、Eclipse. 1.1Qt Creator Qt Creator 是⼀个轻量级的跨平台集成开发环境(IDE),专为使⽤ Qt 框架进…

Odoo18 Http鉴权+调用后端接口

最近在调研Odoo18,包括它的前后端原理、源码等。发现官方的开发文档并不十分实用,比如标题这种简单的实用需求,竟然浪费了一点时间,特此记录。 官方文档:External API — Odoo 18.0 documentation 前提:首…

【第13节】windows sdk编程:GDI编程

目录 一、GDI 概述 二、设备环境概念 三、使用 GDI 绘图对象 四、使用 GDI 坐标系统 五、使用GDI绘图 5.1 输出文字 5.2 画点和线 5.3 画矩形框、圆和多边形 5.4 画位图和图标 5.5 双缓冲技术 六、综合代码示例 一、GDI 概述 Windows 应用程序不支持标准输出函数&am…

离开页面取消请求

前言 上一篇文章我们处理了axios的重复请求问题axios重复请求,今天来说一下如何在离开某个页面的时候将正在发送的请求取消掉 开始 基于上一篇的axios封装,当我们在编写某个页面的请求的时候 import request from /request/index;export const test2…

C++输入输出流第一弹:标准输入输出流 详解(带测试代码)

目录 C输入输出流 流的四种状态(重点) 标准输入输出流 标准输入流 逗号表达式 1. 逗号表达式的基本规则 示例 2. 图片中的代码分析 关键点解析 3. 常见误区 误区 1:逗号表达式等同于逻辑与 && 误区 2:忽略输入…

Z 轴热膨胀系数:PCB 可靠性的关键因素与选材策略

在电子设备小型化与高性能化的趋势下,PCB(印刷电路板)的可靠性成为决定产品寿命的核心因素。其中,Z 轴热膨胀系数(α2/z-CTE)作为板材的关键参数,直接影响多层板的层间结合力、焊点稳定性及整体…

【C++】Virtual function and Polymorphism

《C程序设计基础教程》——刘厚泉,李政伟,二零一三年九月版,学习笔记 文章目录 1、多态性的概念2、虚函数的定义2.1、引入虚函数的原因2.2、虚函数的定义与使用2.3、虚函数的限制 3、抽象类3.1、纯虚函数3.2、抽象类 4、应用实例 更多有趣的代…

图解LLM智能体(LLM Agents):构建与运作机制的全面解析

LLM智能体:构建与运作机制 LLM智能体(LLM Agents)正在迅速普及,似乎逐渐取代了我们熟悉的传统对话式LLM。这些令人惊叹的能力并非凭空而来,而是需要多个组件协同工作。 本文包含超过60张定制插图,将深入探讨LLM智能体的领域、其核心组件以及多智能体框架的工作原理。 文…

自动驾驶背后的数学:特征提取中的线性变换与非线性激活

在上一篇博客「自动驾驶背后的数学:从传感器数据到控制指令的函数嵌套」—— 揭秘人工智能中的线性函数、ReLU 与复合函数中,我们初步探讨了自动驾驶技术中从传感器数据到控制指令的函数嵌套流程,其中提到了特征提取模块对传感器数据进行线性…

W80x使用WM IoT SDK 2.X 开发(二)驱动tft屏幕

一、硬件准备 开发板依然是官方送的w803,屏幕我的是2.4寸的ST7789 二、查看sdk 1、例程 tft的有这4个程序,我这里直接看最简单的polling吧 首先就是创建一个任务,这跟上一篇点亮led创建任务的步骤一样 继续点进去 2、spi初始化 先看初始…

Linux系统编程(四)--进程概念

文章目录 1.基本概念与基本操作1.1 描述进程-PCB1.2 task_struct-PCB的一种1.3 task_struct内容分类1.4 查看进程1.5 通过系统调用获取进程的PID和PPID1.6 PPID(Parent Process ID)1.7 通过系统调⽤创建进程-fork初识fork创建子进程使用if进行分流 2.进程…

从 0 到 1 掌握鸿蒙 AudioRenderer 音频渲染:我的自学笔记与踩坑实录(API 14)

最近我在研究 HarmonyOS 音频开发。在音视频领域,鸿蒙的 AudioKit 框架提供了 AVPlayer 和 AudioRenderer 两种方案。AVPlayer 适合快速实现播放功能,而 AudioRenderer 允许更底层的音频处理,适合定制化需求。本文将以一个开发者的自学视角&a…

linux 命令 cd

以下是 Linux 中 cd 命令的详细用法总结,涵盖基础操作、快捷方式和常见场景: 1. 命令功能 cd(Change Directory)用于切换当前工作目录,是 Linux 文件系统操作中最常用的命令之一。 2. 基本语法 cd [选项] [目录路径…

安卓开发调用本地接口以及设置base_url思路

去年接手pad端开发时曾问过其它组的老安卓一个问题,我们的安卓项目本地开发时能否调用本地接口,回答是否定的。也许是由于通用底座加入的限制,也许是因为太忙了,不想给我解释繁琐的解决方案。 那么在个人PC上玩耍总是能够调用本地…

中小型企业大数据平台全栈搭建:Hive+HDFS+YARN+Hue+ZooKeeper+MySQL+Sqoop+Azkaban 保姆级配置指南

目录 背景‌一、环境规划与依赖准备‌1. 服务器规划(3节点集群)2. 系统与依赖‌3. Hadoop生态组件版本与下载路径4. 架构图二、Hadoop(HDFS+YARN)安装与配置‌1. 下载与解压(所有节点)2. HDFS高可用配置3. YARN资源配置‌4. 启动Hadoop集群三、MySQL安装与Hive元数据配置…

003 SpringCloud整合-LogStash安装及ELK日志收集

SpringCloud整合-LogStash安装及ELK日志收集 文章目录 SpringCloud整合-LogStash安装及ELK日志收集1.安装ElasticSearch和kibana2.Docker安装logstash1.拉取docker镜像2.创建外部挂载目录3.拷贝容器内部文件到宿主机4.修改外部挂载文件5.运行docker容器 3.整合kibana1.进入kiba…

《TCP/IP网络编程》学习笔记 | Chapter 19:Windows 平台下线程的使用

《TCP/IP网络编程》学习笔记 | Chapter 19:Windows 平台下线程的使用 《TCP/IP网络编程》学习笔记 | Chapter 19:Windows 平台下线程的使用内核对象内核对象的定义内核对象归操作系统所有 基于 Windows 的线程创建进程与线程的关系Windows 中线程的创建方…

【Git学习笔记】Git分支管理策略及其结构原理分析

【Git学习笔记】Git分支管理策略及其结构原理分析 🔥个人主页:大白的编程日记 🔥专栏:Git学习笔记 文章目录 【Git学习笔记】Git分支管理策略及其结构原理分析前言一.合并冲突二. 分支管理策略2.1 分支策略2.2 bug分支2.3 删除临…