6.传输层
- 传输层处于面向应用部分的最底层 和 面向通信部分的最高层
- 在网络通信中传输层有着承上启下的作用
网络边缘
在计网中,网络边缘通常是由主机、存储、服务器、数据库等各种软硬件设备组成,是网络信息资源的集散地
在网络边缘的主机平台上,运行着从物理层到应用层完整的TCP/IP协议
网络核心
网络核心由提供数据转发服务的网络路由器,以及连接各路由器的链路组成
在网络核心上的路由器平台上,运行着从物理层到网际层的TCP/IP协议
传输层的作用与主要功能
作用
为运行在网络边缘的不同主机上的各个应用程序之间提供通信服务
传输层面向应用,是一种真正的端到端通信服务
另外一个主要作用是在应用层和网络层之间充当复用器得的作用
各种网络应用通过传输层的端口被提交到统一的网络层,并由IP协议用统一的方式将其发送到网络中
主要功能
在PSI/RM中,传输层位于资源子网和通信子网之间
- 对高层应用屏蔽了通信的细节,无需过多考虑各种通信因素对网络通信过程本身的影响
- 提供端到端之间的无差错保证,弥补网络层提供服务的差异和不足
传输层提供的服务
面向连接的服务
TCP服务
- 通信可靠,对数据有校验与重发等机制
- 实现复杂,代价较大,通信速率相对较低
面向无连接的服务
UDP服务
- 对数据没有校验和重发
- 实现简单,通信速率高
TCP
- TCP提供面向连接的服务
- TCP不提供广播或者多播服务
- 因为TCP提供可靠的,面向连接的传输服务,因此不可避免的增加了许多开销模式的协议数据单元的首部增大很多,还要占用很多处理机资源
TCP报文段
在传输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道
但是这样的信道不知道经过了哪些路由器,也不知道上面的传输层是否建立连接
UDP
UDP在传输数据之前不需要先建立连接 ,对方的运输层在收到UDP报文后,也不需要给出任何确认
UDP不提供可靠交付,但在某些情况下UDP是最有效的工作方式
端口
为了使运行不同操作系统的计算机的应用进程能够互相通信,必须用统一的方法对TCP/IP体系的应用进程进行标志
解决问题的方法就是在传输层中使用协议端口号,简称为端口
硬件端口与软件端口
- 路由器或者交换机上的端口是硬件端口(是不同硬件设备进行交互的接口)
- 在协议栈层间的抽象的协议端口是软件端口
软件端口是应用层各种协议的进程与传输层协议进行层间交互的一种接口
端口号
使用一个16位端口号进行标志
- 端口号只是为了标志本计算机应用层中的各进程
端口号类型
- 熟知端口:0~1023之间,IANA(Internet Assigned Numbers Authority)管理 ,0端口一般不用
- 登记端口号:1024~49151之间,为没有熟知端口号的应用程序使用
- 客户端口号或者短暂端口号:49152~65535之间,留给客户进程暂时使用
传输服务访问点
在OSI/RM中,当两个不同主机的两个进程需要通信的时候,必须指明对方是哪一个进程,这个标记称为传输层地址也称为传输服务访问点(Transport Service Point,TSAP)
传输服务访问点 = 主机IP地址 + 端口号
如何知道对方的TSAP
- 采用名字服务器或者目录服务器:用户与名字服务器建立连接,向服务器发送一个报文,指明服务的名称,服务器将该服务对应的TSAP返回给用户,类似114查号
套接字(Socket)
为了使应用程序能够方便的使用协议栈软件进行通信的一种方法
- 以标准的UNIX文件描述符加以标识
BSD中的定义,每一个Socket都可以用一个被称为半相关方式进行描述
Socket = {协议,本地地址,本地端口}
对于一个完整的Socket,则用一个相关描述
{协议,本地地址,本地端口,远程地址,远程端口}
地位
套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议栈进行通信的接口,是应用程序与网络协议栈进行交互的接口
流式套接字 (Stream Socket)
- 提供面向连接,可靠的数据传输服务
- 数据无差错,无重复的发送
- 按发送顺序接收,内设流量控制,避免数据流超限
- 数据被看作是字节流,无长度限制
数据报式套接字(Datagram Socket)
- 提供无连接服务
- 数据报以独立报形式发送
- 不提供无差错保证,数据可能丢失或重复,接收顺序混乱
原始套接字(Raw Socket)
原始式套接字允许对较低层次的协议,比如IP,ICMP直接访问,用于检验新的协议的出现
用户数据报协议UDP(User Datagram Protocol)
是OSI参考模型和TCP/IP模型中都有的一种面向无连接的传输层协议
UDP最基本的目的:面向事务的简单,不可靠信息传送服务
UDP在IP的数据报服务上增加了一些功能:端口的功能和差错检测功能
主要特点
- UDP是无连接协议,在发送前不需要建立连接
- UDP使用尽最大努力交付,不保证可靠交付,不使用拥塞控制
- UDP面向报文,没有拥塞控制,适合多媒体通信的要求
- UDP支持一对一,一对多,多对一和多对多得交互通信
- UDP首部只有8个字节,开销小
典型运用
RPC,其对程序员屏蔽了网络运作的细节
- RPC是客户机/服务器模式中实现分布式计算的通信协议
- RPC采用无连接对话方式,有错误控制能力
传输控制协议TCP(Transmission Control Protocol)
是一种面向连接,可靠的,基于字节流的传输层通信协议
是TCP/IP协议簇中最复杂也是最精彩的协议
特点
- 是面向连接的传输层协议
- 每一条TCP连接只能有2个端点,每一条TCP只能是点对点的(一对一)
- TCP提供可靠交付的服务
- TCP提供全双工通信
- 面向字节流
TCP连接
-
TCP连接是一种虚连接而不是真正的物理连接
-
TCP连接的建立都是采用客户服务器模式
- 主动发起连接建立的为客户端
- 被动等待连接建立的叫服务器
-
TCP将连接作为最基本的抽象
-
每一套TCP连接都有两个端点
-
TCP连接的端点叫做套接字或者端口
-
端口号拼接到IP地址就构成了套接字
TCP连接的三个阶段
- 连接建立
- 数据传送
- 连接释放
传输连接的管理就是使传输连接的建立和释放都能正常的进行
TCP连接的建立(三次握手)
TCP连接的建立过程被称为三次握手
- 第一次:客户端向服务器:客户端向服务器提出连接建立请求,发出同步请求报文
- 第二次:服务器向客户端:服务器收到客户端的连接请求后,向客户端发出同意建立连接的同步确认报文
- 第三次:客户端向服务器:客户端在收到服务器的同步确认报文后,向服务器发出确认报文
当服务器收到来自客户端的确认报文后,连接就被建立
TCP连接的释放(四次挥手)
TCP连接释放的建立过程被称为四次挥手
- 第一次:客户端到服务器:客户端向服务器发出一个连接释放报文
- 第二次:服务器到客户端:服务器收到客户端的释放连接请求后,向客户端发出确认报文
- 第三次:服务器到客户端:服务器在发送完最后的数据后,向客户端发出连接释放确认报文
- 第四次:客户端到服务器:客户端在收到服务器连接释放报文后,向服务器发出确认报文
MSL(Maximum Segment Lifetime)
是任何报文在网络上存在的最长时间,超过这个时间的报文将被丢弃
TCP计时器
重传计时器
TCP是一种能提供可靠传输的通信协议,其可靠性来自于协议的确认重传机制
当接收端收到一个TCP报文后,就会向发送方发出一个确认报文,但是由于网络的不确定,发送的数据报文和确认报文都有可能在传输过程中丢失
重传计时器在发送方发出数据报文后就启动计时器
- 在设定时间截止前收到确认报文,传输成功,撤销计时器
- 否则传输失败,重新发送数据报文
坚持计时器
当接收方发出一个零窗口确认报文,发送方立即停止发送数据报文直到接收方发出非零窗口的确认报文
因为TCP不会对确认报文进行确认,因此接受放在发出非零窗口确认报文后就进入等待发送方发送数据报文
如果该确认报文在中途丢失,在通信会陷入死锁
坚持计时器就是为了破解该死锁而设定
当发送方收到一个零窗口确认时,启动坚持计时器
- 如果在设定时间到达之前收到接收方的非零窗口确认报文,撤销计时器,恢复正常发送数据报文
- 如果设定时间内仍然没有收到接收方的非零窗口确认报文,则发送方发出一个只有一个字节数据的探测报文并消耗一个序号,但是该序号会被确认报文忽略
坚持计时器的值与重传计时器相同,如果在截止时间后没有收到接收方的非零窗口确认报文,就发送另一个探测报文,并加倍设置坚持计时器的值,如此反复,直到收到接收方的非零窗口确认报文位置
但是坚持计时器的值也有最大值限制(通常是60s)
保活计时器
用于判断两个TCP段点之间长久的连接是否正常
当客户端与服务器建立了TCP连接后,保活计时器就被激活(通常是2小时)
每当服务器收到来自客户端的报文,就重置计时器
- 当计时截止后仍然没有收到客户端的报文,服务器向客户端发出探测报文,并且每隔75s发送一个探测报文
- 如果发送10个探测报文后仍然没有得到客户端的确认报文,服务器假定该客户端遇到了故障,强制关闭该连接
时间等待计时器
也叫做2MSL计时器,是TCP终止连接时启动的计时器
设置该计时器的主要目的是为了能够正常关闭服务器的连接
可靠传输
可靠传输就是无差错传输(所有发送的数据都能被无差错接受)
无差错接受指只接受没有传输错误的数据,丢弃或者更正所有在传输过程中发生错误的数据
差错检测
具有发现传输过程中可能出现的各种差错的能力,也就是从发送到接收的传输过程的各个阶段都具有差错检测的能力
在差错检测中,有纠错码和检错码两种不同的编码技术
条件
- 各数据位无差错
- 无数据丢失
- 无数据重复
- 数据顺序与发送端保持一致
停止等待协议
①简单流控
基本思想
由接收端控制发送端发送数据的速度
该思想是现代网络中各种流控方法的基础
基本方法
- 发送端
- 等待从上层应用中获得数据
- 获得数据并封装成可发送的数据报文
- 发送报文,等待接收端的确认报文转1
- 接收端
- 等待发送端发送数据
- 获得数据并转交给上层应用
- 向发送端发送确认报文,转1
②有差错的流控
在不可靠的信道中,假设不会丢失报文
算法如下
- 发送端
- 从上层获得数据并计算校验码,封装报文并缓存
- 发送报文并等待接收端应答报文
- 收到接收端应答报文,如果肯定,删除缓存并转1,如果否定提取缓存数据报文并转2
- 接收端
- 等待并获得发送端发送的报文,缓存并校验
- 如果校验错,删除缓存并发否定保温,转1,如果正确,上交缓存并删除缓存,发肯定报文
③有报文丢失的流控
无论是数据报文(发送端发送)还是应答报文(接收端发送),都有可能在传输过程中丢失
- 若数据报文丢失,接收端未收到数据报文,等待发送端发送
- 若应答报文丢失,发送端未收到应答报文,等待接收端发送
上述两种情况,都会使得发送端等待接收端发送应答报文,而接收端等待发送单发送数据报文,形成死锁
可以通过设置重发计时器来破解死锁
连续ARQ协议
发送方可以连续发送多个报文,不需要每发完一个报文就停止并等待对方确认,也被称为流水传输
有很高的信道利用率
回退N的连续ARQ
在回退N协议(GO-Back-N,GBN)中,接收方只接受按序到达的正确报文
在发送方等待确认的时候,有多个报文正在传送中,也就是说,让多个保温处于等待确认的状态,以便在发送方等待确认的同时,信道也能保持忙碌状态
如果接收方正在校验的报文出错或者丢失,发送方重传该出错的报文以及其后所有已经发送的报文
特点
- 控制简单,缓冲区较少(发送方N个缓存,接收方1个)
滑动窗口(Sliding window,SW)
是一种流控方法,用于约束发送方可发送报文的数量
- 停等ARQ协议是连续ARQ协议窗口为1的特例
滑动窗口用法
- 差错控制:控制“连续ARQ”的参数
- 流量控制:控制发送报文的速率
TCP滑动窗口的特点之一:面向字节流
缓存与接收缓存的作用
- 发送缓存用于暂时存放
- 发送应用程序传送给发送方TCP准备发送的数据
- TCP已经发出但是尚未收到确认的数据
- 接收缓存用于暂时存放
- 按序到达的,但是尚未被接受应用程序读取的数据
- 不按序到达的数据
超时重传时间
重传机制是TCP中最重要和最复杂的问题之一,也是TCP可靠传输的基石
- TCP每次发送一个报文段,就对该报文段设置一次计时器,只要计时器设置的重传时间到但是还没有收到确认,就重传这段
超时重传时间(RetransmissionTime-Out,RTO)
该参数的确定对TCP性能有重大影响
往返时间(Round Trip Time,RTT)
该参数是确定超时重传时间的最重要基础
- 倘若RTO<RTT,会造成很多不必要的重传
- 倘若RTO远大于RTT,会降低整体网络利用率
加权平均往返时间 RTTS
TCP用该参数反映往返时间
TCP中RTTS的计算方法
- 如果是第一测量到的RTT样本,RTTS就为测量到的RTT样本值
- 否则
新RTTS = (1-α) x (旧RTTS) + α x (新的RTTS样本)
—————————————未完待——————————————
Q.E.D.
Comments | 0 条评论