参考引用
- 计算机网络微课堂-湖科大教书匠
- 计算机网络(第7版)-谢希仁
1. 运输层概述
-
之前所介绍的计算机网络体系结构中的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信,但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程
-
如何为运行在不同主机上的应用进程 (AP) 提供直接的通信服务是运输层的任务,运输层协议又称为端到端协议
-
运输层向高层用户屏蔽了下面网络核心的细节 (如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道
-
根据应用需求的不同,因特网的运输层为应用层提供了两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP
2. 运输层端口号,复用与分用概念
2.1 运输层端口号
- 运行在计算机上的进程使用进程标识符 PID 来标志,因特网上的计算机并不是使用统一的操作系统,不同的操作系统 (windows,Linux,Mac OS) 又使用不同格式的进程标识符。为了使运行不同操作系统的计算机的应用进程之间能够进行网络通信,就必须使用统一的方法对 TCP/IP 体系的应用进程进行标识
- TCP/IP 体系的运输层使用端口号来区分应用层的不同应用进程
- 端口号使用 16 比特表示,取值范围 0~65535
- 熟知端口号:0~1023,IANA 把这些端口号指派给了 TCP/IP 体系中最重要的一些应用协议,例如:FTP 使用 21/20,HTTP 使用 80,DNS 使用 53
- 登记端口号:1024~49151,为没有熟知端口号的应用程序使用。使用这类端口号必须在 IANA 按照规定的手续登记,以防止重复。例如:Microsoft RDP 微软远程桌面使用的端口是 3389
- 短暂端口号:49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用
- 端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程,在因特网中不同计算机中的相同端口号是没有联系的
- 端口号使用 16 比特表示,取值范围 0~65535
2.2 发送方的复用和接收方的分用
- TCP/IP 体系的应用层常用协议所使用的运输层熟知端口号
3. UDP 和 TCP 对比
-
UDP和 TCP 是 TCP/IP 体系结构运输层中的两个重要协议
- 用户数据报协议 UDP(User Datagram Protocol)
- 传输控制协议 TCP(Transmission Control Protocol)
-
UDP 和 TCP 对比
-
对比一
-
对比二
-
对比三
-
对比四
-
对比五
-
4. TCP 控制
4.1 TCP 流量控制
-
一般来说,总是希望数据传输得更快一些
- 但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失
-
所谓流量控制 (flow control) 就是让发送方的发送速率不要太快,要让接收方来得及接收
- 利用滑动窗口机制可以很方便地在 TCP 连接上实现对发送方的流量控制
-
示例
4.2 TCP 拥塞控制
-
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫做拥塞 (congestion)
- 在计算机网络中的链路容量 (即带宽)、交换结点中的缓存和处理机等,都是网络的资源
-
若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降
-
四种拥塞控制算法
- 慢开始 (slow-start)
- 拥塞避免 (congestion avoidance)
- 快重传 (fast retransmit)
- 快恢复 (fast recovery)
5. TCP 运输连接管理
5.1 TCP 连接建立
- TCP 是面向连接的协议,它基于运输连接来传送 TCP 报文段
- TCP 运输连接的建立和释放是每一次面向连接的通信中必不可少的过程
- TCP 运输连接有以下三个阶段
- 建立 TCP 连接
- 数据传送
- 释放 TCP 连接
TCP 的运输连接管理就是使运输连接的建立和释放都能正常地进行
-
TCP 的连接建立要解决以下三个问题
- 使 TCP 双方能够确知对方的存在
- 使 TCP 双方能够协商一些参数 (如最大窗口值、是否使用窗口扩大选项和时间截选项以及服务质量等)
- 使 TCP 双方能够对运输实体资源 (如缓存大小、连接表中的项目等) 进行分配
-
TCP 使用 “三报文握手” 建立连接
5.2 TCP 连接释放
- TCP 通过 “四报文挥手” 来释放连接