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