传输层协议详解

article/2025/10/10 22:10:26
一、传输层的概念和服务
1、传输层的基本概念
  • 传输层负责端到端之间的数据传输控制
  • 传输层依赖于网络层的服务,对应用层提供传输服务
2、传输层的功能

跟踪会话

  • 跟踪源主机和目的主机上应用程序间的每次通信

数据分段

  • 将数据分段,并管理每个分段

数据重组

  • 将数据重组,并管理每个片段

标识应用程序

  • 标识不同的应用程序
3、因特网传输层提供的服务
  • 无连接不可靠的服务(UDP)
  • 面向连接可靠的传输服务(TCP)

因特网传输层不能提供的服务

  • 实时性保证
  • 带宽承诺
  • 可靠的广播通信
二、UDP协议
1、UDP协议概述

特性:

  • “最简单的”Internet传输协议
  • 提供不可靠的数据传输,又称“尽力而为”的服务,其本质是宁缺毋滥,尽力传输

UDP协议允许:

  • 数据丢失
  • 应用数据乱序到达
  • 在UDP收发双方之间,无需握手建立连接
  • 每个UDP数据段的操作都互相独立
2、UDP协议的首部
三、可靠传输协议
1、可靠传输协议概述

概念:

  • 可靠传输协议保证接收方接收到的数据一定是正确、按序

注意:

  • 可靠传输协议不能保证数据一定到达

应用层次:

  • 可靠传输协议的机制可以用于数据链路层、网络层、传输层和应用层
2、停止等待协议的设计

定义:

  • SW(stop and wait)停止等待协议
  • 发送方每发送一个报文,必须收到接收方的回复确认后才能发送下一个报文

停止等待协议1.0的讨论

差错的方法

  • 校验和、CRS冗杂检验等

从错误中恢复的方法

  • 使用确认(ACKs)和否认(NAKs)机制
  • 若收到NAK,重传分组(缓存机制)

停等协议的设计缺陷?
ACK/NAK出错
重复分组
……

所以引入了序号机制

停等协议2.0

停等协议3.0
前提:数据可能出错丢失

数据丢失的处理方法:

  • 发送方对发送的分组定义一个超时时间(定时器),若在超时时间里没有收到ACK,则认为数据丢失。
  • 数据超时则直接重传数据

停等协议3.0超时讨论

问题:

  • 数据超时是否一定丢失?

结论:

  • 数据超时并非一定丢失了,可能确认丢失,也可能分组或确认延迟了
  • 超时未丢失将导致重复分组问题,使用序号解决重复分组问题

进一步思考:

  • 超时时间如何确定,固定的还是变化的?

结论:

  • 超时时间应当根据RTT(往返时间)动态变化
  • 超时时间应当大于历史分组的RTT

更特殊的情况


http://chatgpt.dhexx.cn/article/SlOL2JgV.shtml

相关文章

TCP-面向连接的传输层协议

TCP 主要特点工作方式建立连接---三次握手为什么 TCP 建立连接需要三次握手,而不是两次?连接终止---四次挥手为什么要四次挥手为什么要等待2MSL TCP流量控制TCP拥塞控制1.慢开始和拥塞避免2.快重传和快恢复 传输控制协议(TCP,Tran…

简介 传输层协议——UDP协议

UDP协议: UDP:User Datagram Protocol 用户数据报协议 UDP简介: UDP是一种面向无连接的传输层协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。UDP提供面向事务的简…

TCP(传输控制协议详解)详解

TCP协议的特点 (1)TCP协议是面向连接的运输层协议 在数据传输前必须建立连接,数据传输之后释放连接。 (2)TCP提供可靠交付的服务 所谓可靠是指在传输过程中无重复,无丢失,无错误。但是同时会…

TCP/IP协议(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)

TCP/IP协议 TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协…

用户数据报协议UDP和传输控制协议TCP

目录 UDP UDP的功能 UDP的特点 UDP的首部格式 TCP TCP的功能 TCP的特点 TCP面向流的概念 套接字(socket) 无连接工作流程和面向连接的工作流程对比 UDP UDP的功能 UDP只在IP的数据报服务上增加了很少一点功能: 1.复用和分用功能 2.差错检测…

TCP(传输控制协议)

TCP 最主要的特点 TCP 是应用程序在使用 TCP 协议之前,必须先建立 TCP 连接。 在传送数据完毕后,必须释放已经建立的 TCP 连接面向连接的运输层协议每一条 TCP 连接只能有两个,每一条 TCP 连接只能是(一对一)点对点TCP 提供的服务。 通过 TCP…

传输层-传输控制协议(TCP)

目录 TCP 协议概述TCP 报文段结构TCP连接管理三次握手四次挥手 TCP 可靠数据传输TCP拥塞控制 TCP 协议概述 传输控制协议(TCP)是Internet传输层协议。提供面向连接、可靠、有序、字节流传输服务。 面向连接:应用程序在使用 TCP 之前&#x…

传输控制协议---TCP协议【详解】

目录 一、协议简介 二、TCP报文格式 1、字段解析 2、报文解析 三、TCP的重传机制 1、超时重传 2、快速重传 3、 SACK 方法 4、Duplicate SACK 四、TCP的滑动窗口机制 五、流量控制 六、拥塞机制 1、慢启动 2、拥塞避免算法 3、拥塞发生 4、快速恢复 七、TCP的三…

传输控制协议(TCP)

可靠的流传输服务 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。本文介绍TCP把他当成TCP/IP网际协议族的一部分,是一个独立的通信协议。 五个可靠交付特征 1.面向流…

传输控制协议TCP

一、概述 概念:传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP最主要的特点: (1)TCP是面向连接的运输层协议。 (2&a…

[2] SDL的基础知识以及利用SDL播放视频

此博文相关知识点从雷神的博客以及视频学习,截图也是用了他的课件, 雷神博客地址:http://blog.csdn.net/leixiaohua1020/ 日期:2016.10.1 作者:isshe github:github.com/isshe 邮箱:i.ssheoutlook.com …

Start Game:SDL2简介

Start Game:SDL2简介 官网简介: Simple DirectMedia Layer是一个跨平台开发库,旨在通过OpenGL和Direct3D提供对音频、键盘、鼠标、操纵杆和图形硬件的低级别访问。它被视频播放软件、模拟器和流行游戏使用,包括Valve的获奖目录和许…

SDL2的学习之路<三>显示文字

前言 上节介绍了怎么利用SDL接口去显示图片,这节主要介绍怎么去显示文本信息。 SDL2展示文字需要在官网下载SDL2_ttf的扩展库。这个第一节已经讲过了。 使用时需要先初始化库,使用结束时释放库资源。 TTF_Init(); //初始化库 … TTF_Quit(); //释放 显…

VS2019配置SDL2库

“SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、MacOS…

SDL系列教程(一):SDL简介

SDL教程(一) 作者:akinggw 在阔别半年后,我又回来了。这次回来,首先要向大家问声好,然后继续我们的游戏开发之旅。在以前的日子里,我主要在翻译一些游戏开发方面的文章,而现在&…

SDL2源代码分析1:初始化(SDL_Init())

SDL源代码分析系列文章列表: SDL2源代码分析1:初始化(SDL_Init()) SDL2源代码分析2:窗口(SDL_Window) SDL2源代码分析3:渲染器(SDL_Renderer) SDL2源代码…

SDL2入门教程(01_hello_SDL)

注: 本教程翻译自 lazyfoo的教程,原网址戳这里。翻译目的为鼓励自己坚持下去,可能语言不准确,仅供参考。 Hello SDL: 你的第一个图形窗口 这一篇教程包含最主要也最基础的一步——弹出一个窗口(Window) …

SDL2源代码分析2:窗口(SDL_Window)

SDL源代码分析系列文章列表: SDL2源代码分析1:初始化(SDL_Init()) SDL2源代码分析2:窗口(SDL_Window) SDL2源代码分析3:渲染器(SDL_Renderer) SDL2源代码…

SDL2使用简介

转自我的Gitee项目 SDL2使用简介 SDL2使用简介开发环境搭建WindowsVisual StudioCode::BlocksDev-Cpp CMake(CLion)问题总结 SDL2库使用介绍初始化创建窗口绘制矩形刷新屏幕读取输入直接扫描键盘读取系统事件 实例 绘制图片 SDL2使用简介 开发环境搭建 Windows Visual Stud…

SDL2 简明教程(二):创建一个空的窗口

系列文章目录 SDL2 简明教程(一):使用 Cmake 和 Conan 构建 SDL2 编程环境 SDL2 简明教程(二):创建一个空的窗口 文章目录 系列文章目录创建空窗口总结 创建空窗口 在上一篇文章中,我们了解…