【计算机网络】Layer4-Transport layer

目录

  • 传输层协议
    • How demultiplexing works in transport layer(传输层如何进行分用)
      • 分用(Demultiplexing)的定义:
      • TCP/UDP段格式:
  • UDP
    • UDP的特点:
    • UDP Format
    • 端口号
    • Trivial File Transfer Protocol (TFTP)
    • File Transfer Protocol (FTP)
      • FTP Replies
  • TCP
    • TCP简介:
    • TCP的特性:
    • 端口号的作用:
    • TCP Header Fields(TCP头部字段)
    • Connection-Oriented Demultiplexing
      • TCP套接字通过**四元组(4-tuple)**唯一标识:
    • TCP Connection Establishment & Termination TCP连接的建立与终止
      • 连接建立
      • 连接终止:
    • TCP状态图
      • 客户端
      • 服务器端
    • TCP Timers(TCP定时器)
      • TCP定时器的作用:
    • Selective Acknowledgement(选择性确认)
      • SACK(选择性确认)的用途:
      • 实现方式:
    • TCP Congestion Control Parameters(TCP拥塞控制参数)
      • 主要参数:
  • Streaming Multimedia: UDP or TCP?
    • UDP 特性:
    • TCP 特性:
  • HTTP Adaptive Streaming (HAS)
    • HAS 的特点:
    • 常见变体:
    • HAS 的分段传输机制:

传输层协议

传输层协议是端到端的协议。仅在主机上实现。
两种常见的传输层协议:

  • UDP

    • 面向数据报(Datagram oriented):基于数据报的传输方式,不建立连接。
    • 不可靠,无连接(Unreliable, connectionless):不保证数据的可靠性,也没有连接建立过程。
    • 简单(Simple):协议设计较为轻量化,开销小。
    • 支持单播和多播(Unicast and multicast):适合多种网络通信场景。
    • 常用于网络控制信令服务:
      • 如网络管理(SNMP)、路由(RIP)、域名解析(DNS)等。
    • 适用于交互式多媒体应用:
      • 如视频流、音频流等需要快速传输的场景。
  • TCP

    • 面向流(Stream oriented):数据以字节流的形式传输。
    • 可靠,面向连接(Reliable, connection-oriented):通过握手机制建立连接,确保数据可靠传输。
    • 复杂(Complex):实现了流量控制、拥塞控制等功能。
    • 仅支持单播(Unicast only):只支持点对点通信。
    • 广泛用于大多数互联网应用:
      • 如网页(HTTP)、邮件(SMTP)、文件传输(FTP)、终端(Telnet)等。
    • 许多基于HTTP/TCP的应用程序依赖它。

How demultiplexing works in transport layer(传输层如何进行分用)

分用(Demultiplexing)的定义:

分用是传输层的重要功能,用于将接收到的IP数据报分发到正确的应用程序(或套接字)。
具体分用过程:

主机接收到IP数据报,其中包含:

  • 源IP地址和目标IP地址(来自网络层)。
  • 源端口号和目标端口号(来自传输层)。

每个数据报包含一个传输层段(TCP或UDP段)。
传输层通过IP地址和端口号将数据分配到正确的套接字(socket)。

TCP/UDP段格式:

在这里插入图片描述

UDP

UDP的特点:

  • 不可靠传输:UDP不会确认数据是否正确到达。
  • 功能简单:
    • 基本功能是将IP数据报的主机到主机传递扩展为应用程序到应用程序的传递。
  • UDP的主要附加功能是多路复用(multiplexing)和分用(demultiplexing)。
  • UDP的传输过程:
    • 应用程序通过UDP协议向目标发送数据报。
    • IP层负责数据报的路由和传递。
    • 接收主机的UDP层根据端口号将数据分发到目标应用程序。

UDP Format

在这里插入图片描述

端口号

  • 动态/私有端口(Dynamic/private ports):
    • 范围:49152-65535。
    • 供客户端随机选择使用。
  • 注册端口(Registered ports):
    • 范围:1024-49151。
    • 普通用户进程使用。
  • 知名端口(Well-known ports):
    • 范围:0-1023。
    • 保留给系统或服务器使用,例如HTTP(80端口)和DNS(53端口)。

Trivial File Transfer Protocol (TFTP)

  • TFTP会话过程:

    • 客户端通过UDP端口69向服务器发送读/写请求(RRQ/WRQ)。
    • 如果是读请求,服务器返回一个长度为512字节的数据包,编号为1。
    • 客户端发送ACK,确认收到数据块1。
    • 服务器发送下一个数据块2。
    • 重复以上步骤,直到最后一个数据块的长度小于512字节,传输结束。
  • TFTP数据包结构:

    • opcode:操作码(读、写、数据、ACK等)。
    • block number:数据块编号。
    • data:数据字段,最大长度512字节。

File Transfer Protocol (FTP)

  • 连接类型:
    • 控制连接:
      • 服务器的控制端口为21。
      • 用于发送命令和响应。
    • 数据连接:
      • 服务器的数据端口为20。
      • 用于传输文件数据。

在这里插入图片描述

FTP Replies

Typical FTP replies
● 125 Data connection already open; transfer starting
● 200 Command OK
● 331 Username OK, password required
● 425 Can’t open data connection
● 452 Error writing file
● 500 Syntax error (unrecognized command)
● 501 Syntax error (invalid arguments

TCP

TCP简介:

  • TCP是传输层的另一个主要协议,与UDP相比,TCP提供可靠的、面向连接的服务。
    常用于需要高可靠性的应用,例如HTTP、FTP、Telnet等。

TCP的特性:

  • 可靠性:
    提供错误控制、确认机制和数据重传功能。
  • 流量控制:
    基于接收方缓冲区的反馈,动态调整发送速度。
  • 拥塞控制:
    根据网络的拥塞状态调整数据传输速率。

端口号的作用:

源端口号和目标端口号用于唯一标识发送方和接收方的套接字。

TCP Header Fields(TCP头部字段)

  • 源端口号(Source Port Number):
    标识发送方应用程序。
  • 目标端口号(Destination Port Number):
    标识接收方应用程序。
  • 序列号(Sequence Number):
    标识数据段在整个传输流中的位置,用于数据重组。
  • 确认号(Acknowledgment Number):
    用于确认接收到的数据段。
  • 窗口大小(Window Size):
    表示接收方允许的最大数据量,用于流量控制。
  • 校验和(Checksum):
    用于检测TCP头部和数据是否有错误。

Connection-Oriented Demultiplexing

TCP套接字通过**四元组(4-tuple)**唯一标识:

  • 源IP地址。
  • 源端口号。
  • 目标IP地址。
  • 目标端口号。

TCP Connection Establishment & Termination TCP连接的建立与终止

连接建立

使用三次握手(Three-Way Handshake):

  1. 客户端发送SYN。
  2. 服务器返回SYN-ACK。
  3. 客户端发送ACK,连接建立成功

连接终止:

使用四次挥手(Four-Way Handshake):

  1. 一方发送FIN,表示完成数据发送。
  2. 另一方发送ACK确认。
  3. 第二方发送FIN。
  4. 第一方发送ACK,连接终止。

TCP状态图

客户端

  1. CLOSED:初始状态,客户端准备建立连接。
  2. SYN_SENT:客户端发送SYN,等待服务器响应。
  3. ESTABLISHED:三次握手完成,连接建立。
  4. FIN_WAIT_1:客户端发送FIN,启动关闭过程。
  5. FIN_WAIT_2:客户端等待对方发送FIN。
  6. TIME_WAIT:客户端发送ACK后进入等待状态,确保数据可靠传输。

在这里插入图片描述

服务器端

  1. CLOSED:服务器未开启。
  2. LISTEN:服务器等待客户端连接。
  3. SYN_RCVD:收到客户端SYN,发送SYN-ACK。
  4. ESTABLISHED:三次握手完成,进入数据传输状态。
  5. CLOSE_WAIT:收到客户端的FIN,等待应用程序关闭。
  6. LAST_ACK:发送FIN并等待客户端的ACK。
    CLOSED:连接完全关闭。

在这里插入图片描述

TCP Timers(TCP定时器)

TCP定时器的作用:

  • 连接建立定时器(Connection Establishment Timer):
    控制建立连接的最大时间。
  • 重传定时器(Retransmission Timer):
    如果数据段未被确认,则重传。
  • 延迟ACK定时器(Delayed ACK Timer):
    在交互式数据流中延迟ACK以提高效率。
  • 保持活动定时器(Keepalive Timer):
    检查连接是否仍然存活。
  • 坚持定时器(Persist Timer):
    在接收窗口为零时避免死锁,周期性地探测窗口大小。
    使用指数回退算法(Exponential Backoff)。
  • TIME_WAIT定时器:
    在连接关闭后保持一段时间,防止旧的延迟数据段被误解为新连接的一部分

Selective Acknowledgement(选择性确认)

SACK(选择性确认)的用途:

在TCP中,如果接收方发现多个数据段丢失,可以使用SACK选项通知发送方哪些数据段已成功接收。
SACK允许发送方仅重传丢失的数据段,而不是重传整个窗口的数据,从而提高效率。

实现方式:

TCP的SACK功能通过两个选项实现:

  • SACK-Permitted:连接建立时协商是否允许使用SACK。
  • SACK Option:在数据传输中实际使用,提供丢失和接收数据段的信息。

TCP Congestion Control Parameters(TCP拥塞控制参数)

主要参数:

  • 广告窗口大小(rwnd):
    接收方通知发送方的缓冲区可用空间。
  • 最大分段大小(MSS):
    每个TCP数据段的最大字节数。
  • 拥塞窗口(cwnd):
    发送方根据网络状况调整的窗口大小。
  • 慢启动阈值(ssthresh):
    用于分界慢启动和拥塞避免的阈值。

Streaming Multimedia: UDP or TCP?

UDP 特性:

  • 发送速率固定,忽略网络拥塞。
  • 播放延迟短(2-5秒),以补偿网络延迟抖动。
  • 错误恢复能力弱:丢包可能导致数据损失。
  • 典型应用:多媒体服务(如交互式应用)。

TCP 特性:

  • 不适用于多播,但适用于单播。
  • 通过拥塞控制调节速率,但可能导致波动。
  • 播放延迟较大,但能提高可靠性。
  • 支持穿越防火墙。
  • 典型应用:与 HTTP 结合的流媒体服务。

HTTP Adaptive Streaming (HAS)

HAS 的特点:

  • 基于 TCP 实现,具备高可靠性。
  • 与现有 Web 技术集成:能利用 HTTP,适配现有网络基础设施。
  • 自动适应可用带宽。
  • 标准化支持(如 MPEG-DASH)。

常见变体:

  • Microsoft Silverlight
  • Apple HLS
    选择比特率:根据当前和先前下载速率动态调整每段视频的比特率。

HAS 的分段传输机制:

  • 视频分片:视频文件被划分为2-10秒的视频片段。
  • 多码率编码:每个片段被编码为多个可选比特率。
  • Manifest 文件:
    • 提供可供客户端选择的比特率列表。
  • 客户端算法:
    • 起始选择较低的比特率。
    • 根据传输时间动态调整比特率。
    • 尝试维持播放缓冲区的正常水位。

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

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

相关文章

深入剖析MyBatis的架构原理

架构设计 简要画出 MyBatis 的架构图 >> ​​ Mybatis 的功能架构分为哪三层? API 接口层 提供给外部使用的接口 API,开发人员通过这些本地 API 来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。MyBatis 和数据库的…

CTF 攻防世界 Web: FlatScience write-up

题目名称-FlatScience 网址 index 目录中没有发现提示信息,链接会跳转到论文。 目前没有发现有用信息,尝试目录扫描。 目录扫描 注意到存在 robots.txt 和 login.php。 访问 robots.txt 这里表明还存在 admin.php admin.php 分析 在这里尝试一些 sql…

智能客户服务:科技赋能下的新体验

在当今这个数字化时代,客户服务已经不仅仅是简单的售后服务,它已竞争的关键要素之一。随着人工智能、大数据、云计算等技术的飞速发展,智能客户服务正逐步改变着传统的服务模式,为企业和消费者带来了前所未有的新体验。 一、智能客…

发布/部署WebApi服务器(IIS+.NET8+ASP.NETCore)

CS软件授权注册系统-发布/部署WebApi服务器(IIS.NET8ASP.NETCore) 目录 本文摘要VS2022配置发布VS2022发布WebApiIIS服务器部署WebApi 将程序文件复制到云服务器添加网站配置应用程序池配置dns域名配置端口阿里云ECS服务器配置19980端口配置https协议 (申请ssl证书)测试WebAp…

安卓 文件管理相关功能记录

文件管理细分为图片、视频、音乐、文件四类 目录 权限 静态声明权限 动态检查和声明权限方法 如何开始上述动态申请的流程 提示 图片 获取图片文件的对象列表 展示 删除 视频 获取视频文件的对象列表 获取视频file列表 按日期装载视频文件列表 展示 播放 删除…

找出1000以内的所有回文数

找出1000以内的所有回文数 方法概述检查回文数的方法伪代码C代码实现代码解析运行结果在计算机科学中,回文数是一种具有对称性质的数,即从左向右读和从右向左读都是相同的。例如,121、1331、12321都是回文数。本文将利用数据结构、C语言和算法的知识来编写一个程序,找出100…

如何在NGINX中实现基于IP的访问控制(IP黑白名单)?

大家好,我是锋哥。今天分享关于【如何在NGINX中实现基于IP的访问控制(IP黑白名单)?】面试题。希望对大家有帮助; 如何在NGINX中实现基于IP的访问控制(IP黑白名单)? 1000道 互联网大…

数据结构day3作业

一、完整功能【顺序表】的创建 【seqList.h】 #ifndef __SEQLIST_H__ #define __SEQLIST_H__#include <stdio.h> #include <string.h> #include <stdlib.h>//宏定义&#xff0c;线性表的最大容量 #define MAX 30//类型重定义&#xff0c;表示要存放数据的类…

云计算HCIP-OpenStack02

书接上回&#xff1a; 云计算HCIP-OpenStack01-CSDN博客 7.OpenStack核心服务 7.1Horizon&#xff1a;界面管理服务 Horizon提供了OpenStack中基于web界面的管理控制页面&#xff0c;用户或者是管理员都需要通过该服务进行OpenStack的访问和控制 界面管理服务需要依赖于keyston…

【Linux】基础IO-----重定向与缓冲区

目录 一、文件描述符分配规则&#xff1a; 二、重定向&#xff1a; 1、本质&#xff08;原理&#xff09;&#xff1a; 2、dup2的使用&#xff1a; 3、添加重定向功能到shell&#xff1a; 4、stdout与stderr&#xff1a; 三、Linux下一切皆文件&#xff1a; 四、缓冲区&…

音频客观测评方法PESQ

一、简介 语音质量感知评估&#xff08;Perceptual Evaluation of Speech Quality&#xff09;是一系列的标准&#xff0c;包括一种用于自动评估电话系统用户所体验到的语音质量的测试方法。该标准于2001年被确定为ITU-T P.862建议书[1]。PESQ被电话制造商、网络设备供应商和电…

ubuntu下anconda装pytorch

1、禁用nouveau sudo vim /etc/modprobe.d/blacklist.conf 在文件最后部分插入以下两行内容 blacklist nouveau options nouveau modeset0 更新系统 sudo update-initramfs -u 重启系统 2、装nvidia驱动 卸载原来驱动 sudo apt-get remove nvidia-* &#xff08;若安装…

Hyperledger Fabric 2.x 环境搭建

Hyperledger Fabric 是一个开源的企业级许可分布式账本技术&#xff08;Distributed Ledger Technology&#xff0c;DLT&#xff09;平台&#xff0c;专为在企业环境中使用而设计&#xff0c;与其他流行的分布式账本或区块链平台相比&#xff0c;它有一些主要的区别。 环境准备…

c++中类的应用综合练习

整理思维导图 课上类实现> 、<、!、||、&#xff01;和后自增、前自减、后自减运算符的重载 代码部分&#xff1a; #include <iostream> using namespace std; class complex {int rel;int vir; public:complex(int rel,int vir):rel(rel),vir(vir){}complex(){}…

视频智能分析平台LiteAIServer未戴安全帽检测算法助力矿山安全:精准监督矿工佩戴安全帽情况

矿山作业环境复杂多变&#xff0c;安全隐患层出不穷。其中&#xff0c;矿工未佩戴安全帽这一行为&#xff0c;看似微不足道&#xff0c;实则潜藏着巨大的安全风险。一旦发生事故&#xff0c;未佩戴安全帽的矿工将极易受到重创&#xff0c;甚至危及生命。因此&#xff0c;确保每…

k8s服务搭建与实战案例

Kubernetes&#xff08;K8s&#xff09;作为一个开源的容器编排平台&#xff0c;广泛应用于现代的云原生应用架构中。以下是一些常见的 **Kubernetes 实战案例**&#xff0c;包括从基础部署到高级应用场景的使用。通过这些案例&#xff0c;可以更好地理解 K8s 的运作原理和最佳…

JAVA学习日记(二十六)网络编程

一、网络编程的概念 常见的软件架构&#xff1a; 二、网络编程三要素 IP&#xff1a;设备在网络中的地址&#xff0c;是唯一的标识 端口号&#xff1a;应用程序在设备中的唯一标识 协议&#xff1a;数据在网络中传输的规则&#xff0c;常见的协议有UDP、TCP、http、https、f…

vue 设置 VUE_APP_TITLE 打包部署后不生效

VUE_APP_TITLE 名门望族云科技有限公司网站 这里的 名门望族云科技有限公司网站 两边不能加 (单引号) 部署后,浏览器刷新网站根目录

黑马头条day01 微服务搭建

1.请求调用流程 如http://localhost:8803/static/js/2.0195d7180dc783c3fe99.js这种静态资源&#xff0c;采用http的发送到本地8803端口的静态资源请求&#xff0c;而nginx配置的监听8801、8802、8803&#xff0c;所以请求走到nginx&#xff0c;nginx的admin配置文件 upstream…

LabVIEW热电偶传感器虚拟仿真实验系统

在教学和科研领域&#xff0c;实验设备的更新和维护成本较高&#xff0c;尤其是在经济欠发达地区&#xff0c;设备的短缺和陈旧化严重影响了教学质量。基于LabVIEW的热电偶传感器虚拟仿真实验系统能够通过模拟实验环境&#xff0c;提供一个成本低廉且效果良好的教学和研究平台。…