文章目录
五层协议之传输层
一、传输层概述
1. 传输层的功能
当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有传输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。
-
传输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。
-
传输层还要对收到的报文进行差错检测。
-
传输层需要有两种不同的运输协议,即面向连接的
TCP
和无连接的UDP
。
2. 两个主要协议
(1) 用户数据报协议 UDP
(User Datagram Protocol)
(2) 传输控制协议TCP
(Transmission Control Protocol)
-
UDP 在传送数据之前不需要先建立连接。对方的传输层在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。如局域网广播、域名解析。
-
TCP 则提供面向连接的服务。TCP 不提供广播或多播服务。由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。
3. 端口
1)产生背景
端口为什么会产生?
我们知道,计算机的每个进程都有一个进程标识符(PID)。如果一个进程p给一个计算机A发请求,计算机A发送的答复数据也该由这个进程p负责处理,但是进程的创建和销毁都是动态的,导致发送方A无法确认这个答复包要交给目的计算机的哪个进程处理。而且有时我们会改换接收方的进程号,但并不需要通知所有发送方。
解决这个问题的方法就是在传输层使用协议端口号(protocol port number),或通常简称为端口(port)。
虽然通信的终点是应用进程,但我们可以把端口想象是通信的终点,因为我们只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就由 TCP 来完成。
区分软件端口和硬件端口:
在协议栈层间的抽象的协议端口是软件端口。
路由器或交换机上的端口是硬件端口。如Serial端口。
硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。
2)TCP端口
端口用一个 16
位端口号进行标志。
端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。
3)三类端口(了解)
-
熟知端口,数值一般为
0~1023
。 -
登记端口号,数值为
1024~49151
,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在 IANA 登记,以防止重复。 -
客户端口号或短暂端口号,数值为
49152~65535
,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。
二、用户数据报协议UDP
1. UDP的特点
虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。
-
UDP 是无连接的,即发送数据之前不需要建立连接。
-
UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。
-
UDP 支持一对一、一对多、多对一和多对多的交互通信。
-
UDP 的首部开销小,只有
8
个字节。
2. UDP的首部格式
源端口、目的端口表示发送进程和接受进程。
长度指的是UDP首部和UDP数据的字节长度。
检验和的计算需要用到IP首部的部分信息,称之为伪首部。与UDP首部拼接在一起然后求和取反得到检验和。
计算完检验和后将伪首部丢弃。
三、传输控制协议TCP介绍
1. TCP的特点
-
TCP 是面向连接的传输层协议。
-
每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一)。
-
TCP 提供可靠交付的服务。
-
TCP 提供全双工通信。
-
面向字节流。
2. TCP的连接端点
TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是传输层的协议端口。TCP 连接的端点叫做套接字(socket)或插口。端口号和IP地址拼接构成了套接字。
四、可靠传输的工作原理
1. 可靠传输的四种情况
这种可靠传输协议常称为自动重传请求ARQ(Automatic Repeat reQuest)。
还有一种情况是,当A发M1给B,B收到了,但B的回复包阻塞了。A等一段时间后于是重发M1, 这个M1中途丢了。但之前那个阻塞的回复包送达了A。此时A认为B收到了重传的M1,实际上重传的M1丢了。
但这没有任何影响,因为B保存了A第一次送达的M1。
2. 信道利用率
U = T D T D + R T T + T A U = \dfrac {T_D}{T_D + RTT + T_A} U=TD+RTT+TATD