5.1 运输层协议概述

思维导图:


前言:
第5章 运输层笔记
1. 概览
- 主要内容:介绍运输层协议的特点、进程间通信、端口、UDP和TCP协议、可靠传输、TCP报文段的首部格式、TCP的关键概念(如滑动窗口、流量控制、拥塞控制和连接管理)。
- 重要性:运输层是网络体系结构中的核心层次。
2. 运输层的基础概念
- 逻辑通信:运输层为通信的应用进程提供逻辑通信。
- 端口与套接字:运输层使用端口和套接字来标识和管理不同的通信会话。
3. 无连接的UDP
- 定义:简单的传输协议,不建立连接。
- 特点:高效但可能不可靠。
4. 面向连接的TCP
- 定义:复杂的传输协议,需要建立连接。
- 特点:可靠但可能相对较慢。
5. 可靠传输的工作原理
- 目标:在不可靠的网络上实现可靠传输。
- 方法:
- 停止等待协议
- ARQ协议
6. TCP的关键特性
- 滑动窗口:用于数据流量的有效控制。
- 流量控制:确保数据在合适的速率下流动。
- 拥塞控制:防止网络拥塞。
- 连接管理:管理TCP连接的建立、维护和终止。
笔记:5.1.1 进程之间的通信
1. 运输层的定位
- 位于面向通信部分的最高层。
- 是用户功能中的最低层。
- 只在主机的协议栈中存在,网络核心部分(如路由器)只使用下三层功能。
2. 逻辑通信
- 网络层的通信端点:主机。
- 运输层的通信端点:进程。
- 逻辑通信定义:数据看似是在两端直接传输,但实际上它经过了多个层次,这种“看似”的通信称为逻辑通信。
3. 运输层的主要功能
- 复用 (multiplexing):不同的应用进程都可以使用同一个运输层协议发送数据。
- 分用 (demultiplexing):接收端的运输层可以正确地将数据传递给目的应用进程。
- 提供应用进程间的逻辑通信。
4. 网络层 vs 运输层
- 网络层:提供主机之间的逻辑通信。
- 运输层:为应用进程间提供端到端的逻辑通信。
- 运输层有许多网络层无法替代的功能。
- 运输层对上层屏蔽了网络核心的细节。
5. 差错检测
- 运输层进行报文的差错检测。
- 而网络层中的IP数据报仅检查首部,不检查数据部分。
6. 两种主要运输协议
- 面向连接的TCP:虽然下层网络可能是不可靠的,但TCP为上层提供了一个看似可靠的逻辑通信信道。
- 无连接的UDP:即使使用UDP,逻辑通信信道仍然是不可靠的。

5.1.2 运输层的两个主要协议笔记
主题: 运输层的两大核心协议:UDP和TCP。
-
TCP/IP运输层的两大协议:
- 用户数据报协议 UDP (User Datagram Protocol)
- 传输控制协议 TCP (Transmission Control Protocol)
-
位置于协议栈:
- 应用层
- UDP / TCP
- IP
- 各种网络接口
-
传输数据单位:
- 在TCP/IP中,使用的数据单位:
- TCP -> 报文段 (Segment)
- UDP -> 用户数据报
- 在TCP/IP中,使用的数据单位:
-
UDP特点:
- 无连接:发送数据前不需建立连接。
- 无确认:接收方收到数据后不给出确认。
- 不可靠交付:可能丢包,但某些场景下效率高。
-
TCP特点:
- 面向连接:数据传送前需先建立连接,传送结束后释放连接。
- 无广播、多播。
- 可靠交付:包含确认、流量控制、计时器和连接管理等功能。
- 由于其复杂性,会占用较多的处理资源。
-
应用与协议使用情况:
应用 应用层协议 运输层协议 名字转换 DNS UDP 文件传送 TFTP UDP 路由选择 RIP UDP IP地址配置 DHCP UDP 网络管理 SNMP UDP 远程文件服务器 NFS UDP IP电话 专用协议 UDP 多媒体通信 专用协议 UDP 多播 IGMP UDP 电子邮件 SMTP TCP 远程终端接入 TELNET TCP 万维网 HTTP TCP 文件传送 FTP TCP
结论: 运输层的UDP和TCP各有其用处,不同的应用和场景会选择不同的协议。UDP简单、快速但不可靠;而TCP则提供可靠的连接服务,但可能带来更多的开销。
5.1.3 运输层的端口
1. 复用和分用
- 日常比喻:所有部门通过收发室发送公文(复用),收发室根据地址将公文发送给正确的部门(分用)。
- 在计算机中:应用层所有进程通过运输层发送数据到IP层(复用),从IP层接收数据后再根据标识分发给正确的应用进程(分用)。
2. 如何标识应用进程
- 计算机内部:进程标识符
- 互联网上:由于存在不同的操作系统和进程标识格式,使用统一的端口号(port)来标识不同的应用进程。
3. 端口的重要性
- 定义:在TCP/IP体系中,用于标志应用进程与运输层之间的接口。
- 软硬件区别:这里讨论的是软件端口,与硬件设备的端口完全不同。
- 端口号范围:0-65535,其中有几个特定的区域是为特定的用途预留的。
4. 两大类的端口
- 服务器端端口
- 熟知端口号:0-1023
- 例如:
- FTP: 21
- TELNET: 23
- SMTP: 25
- DNS: 53
- TFTP: 69
- HTTP: 80
- SNMP: 161
- HTTPS: 443
- 例如:
- 登记端口号:1024-49151
- 熟知端口号:0-1023
- 客户端端口
- 短暂端口号:49152-65535,用于短期、临时通信。
5. 端口的应用
- 当服务器收到客户的报文时,它可以根据客户的端口号将数据返回给客户。
- 服务器端的熟知端口是固定的,确保客户可以始终找到它,而客户端的短暂端口是动态分配的,用完即弃。
6. 小结
端口在运输层中起到了非常关键的作用,是确保数据能够正确传输到目标应用进程的关键。而为了满足各种应用和场景,端口又分为了不同的类型和范围,每种都有其特定的用途和意义。

总结:
重点:
- 运输层的功能:复用和分用,即将多个应用层进程的数据集中传输,并在接收端正确分发给相应的应用进程。
- 端口的概念与重要性:端口是运输层与应用层交互的地址或接口,用于明确标识应用进程。
- 端口的分类:包括服务器端的熟知端口和登记端口,以及客户端的短暂端口。
难点:
- 为何不能用进程标识符在互联网上标识进程:由于互联网上存在多种操作系统,而不同操作系统使用不同的进程标识格式。
- 软件端口与硬件端口的区别:两者服务的目标和层次不同,前者服务于应用与运输层之间的通信,后者服务于物理设备间的连接。
易错点:
- 混淆端口的概念:可能将软件端口与硬件端口混为一谈,或误解其用途。
- 端口号范围与应用:可能误解端口号的范围和其对应的应用,例如将客户端的短暂端口与服务器的熟知端口混淆。
- 复用与分用的概念:可能混淆这两个相反的过程,特别是在理解其在运输层中的应用时。
建议在学习运输层时,重点理解其为应用层提供的服务和功能,并牢记与其交互的各种协议和概念,特别是与端口相关的内容。同时,注意端口在实际通信中的应用,理解其在确定通信双方身份中的关键作用。

相关文章:
5.1 运输层协议概述
思维导图: 前言: 第5章 运输层笔记 1. 概览 主要内容:介绍运输层协议的特点、进程间通信、端口、UDP和TCP协议、可靠传输、TCP报文段的首部格式、TCP的关键概念(如滑动窗口、流量控制、拥塞控制和连接管理)。重要性…...
Jmeter保存csv数据文件出现乱码
在Jmeter的聚合报告中,点击“Save Table Data”,打开保存的CSV文件中文出现乱码。这是因为CSV文件的格式不是UTF-8导致。 解决办法如下: 方法:使用记事本打开csv文件(打开方式选择记事本),点击左上角菜单“文件-》另存…...
双闭环直流电机调速系统设计
要 在我们日常生活中,无刷直流电机随处可见,因为其相比其他电机而言结构相对简单,运行稳定且便于维修等优势,最重要的是直流电机在调速方面具有很好的优势。随着自动控制技术和微电子技术的不断革新,目前的技术水平为…...
[ poi-表格导出 ] java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader
解决报错: org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader 报错描述: 表格导出本来使用正常,偶然就报了以上错误…...
基于FPGA的图像差分运算及目标提取实现,包含testbench和MATLAB辅助验证程序
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2022/07/28 01:51:…...
闭环思维笔记
这本书的情况我已经看完了,道理方面还是不错的,但案例方面跟我前几年在抖音看到的畅销书的案例一样,答辩,所以要看的人一定要根据不同的情况和场景去实施。 闭环思维的核心就是有始、有终、有反馈,在开始和结束过程中前…...
JMeter如何开展性能测试
文章目录 性能测试指标理解透彻以及测算微聊性能测试性能测试流程准备流程 👑作者主页:Java冰激凌 性能测试指标理解透彻以及测算 虚拟用户数: 线程 用户并发数:指在某一时间,一定数量的虚拟用户同时对系统的某个功…...
使用logback按天生成日志并按等级进行分类
先看效果---->>>> 按照:error、info、warn进行分类: 每个文件里面按日期进行分类: 其中对应的Maven如下: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven…...
【Linux】Linux项目部署及更改访问端口号和jdk、tomcat、MySQL环境搭建的配置安装
目录 一、作用 二、配置 1、上传安装包 2、jdk 2.1、解压对应安装包 2.2、环境变量搭建 3、tomcat 3.1、解压对应安装包 3.2、启动 3.3、设置防火墙 3.4、设置开发端口 4、MySQL 三、后端部署 四、Linux部署项目 1、单体项目 五、修改端口访问 1、进入目录 2…...
Pytorch 注意力机制解析与代码实现
目录 什么是注意力机制1、SENet的实现2、CBAM的实现3、ECA的实现4、CA的实现 什么是注意力机制 注意力机制是深度学习常用的一个小技巧,它有多种多样的实现形式,尽管实现方式多样,但是每一种注意力机制的实现的核心都是类似的,就…...
Python上下文管理:with语句执行原理
什么是上下文管理器 上下文管理器(Context Manager)是 Python 中用于管理资源分配和释放的一种机制。它允许您在进入和退出代码块时执行特定的操作,例如打开和关闭文件、建立和关闭数据库连接、获取和释放锁等。上下文管理器常常与 with 语句…...
Mac-Java开发环境安装(JDK和Maven)
JDK安装 1、访问oracle官网,下载jdk 点击下载链接:https://www.oracle.com/java/technologies/downloads/#java11-mac 选择Mac版本,下载dmg 打勾点击下载,跳转登陆,没有就注册,输入账号密码即可下载成功…...
mac下的vscode配置编译环境
基础开发环境 创建Dockerfile文件,内容如下: FROM ubuntu:20.04RUN apt update & apt install make gcc cmake git ninja-build -y CMD [ "sleep", "infinity" ]创建docker-compose.yml文件,内容如下: …...
洗衣洗鞋柜洗衣洗鞋小程序
支持:一键投递、上门取衣、自主送店、多种支付方式 TEL: 17638103951(同V) -----------------用户下单-------------- -------------------------多种支付和投递方式------------------------- -----------------商家取鞋--------------...
vi vim 末尾编辑按GA 在最后一行下方新增一行编辑按Go
vim 快速跳到文件末尾 在最后一行下方新增一行 移到末尾,并且进入文本录入模式 GA (大写G大写A) 在一般模式(刚进入的模式,esc模式) GA 或 Shift ga 先 G 或 shiftg 到最后一行 然后 A 或 shifta 到本行末尾 并且进入文本录入模式 在最后一行下方新增一行 (光标换行,文字不…...
LeetCode热题100 240.搜索二维矩阵||
题目描述: 编写一个高效的算法来搜索 m*n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例1: 输入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,2…...
Anaconda安装及使用教程
前言:鉴于本人曾经学过计算机双学位,近日突然发现电脑上装了Anaconda,然而脑子里对为什么装这个,啥时候装的以及怎么用的都忘记了。因此,想学习了解下这个软件。 1 Anaconda简介 Anaconda,一个开源的Pyth…...
动态规划算法实现------转换(编辑、变换)问题
目录 一、字符串转换问题 1.1问题 1.2确定动态规则(DP、状态转移方程)、初始值 (1)插入操作实现状态转移 (2)删除操作实现状态转移 (3)替换操作实现状态转移 (4)初始值 1.3动态规划算法代码实现 (1)完整代码 (2)程序速度优化 二、矩阵变换问题 2.1问题 2.2矩阵乘法 (1)矩阵相乘…...
C#使用Oracle.ManagedDataAccess.dll
1、添加引用 在网上下载一个Oracle.ManagedDataAccess.dll,引用即可,视操作系统的位数,最重要的是减少了Oracle客户端的安装; 2、web.config字串 <appSettings> <add key"hrp" value"Data Source (…...
分享88个工作总结PPT,总有一款适合您
分享88个工作总结PPT,总有一款适合您 88个工作总结PPT下载链接:https://pan.baidu.com/s/1y08X9RMdIOCncbs28aMgDw?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 蓝色水彩风年终总结PPT模板 清新水彩简…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
