传输层/运输层协议
引入传输层的原因
消除网络层的不可靠性。向上层屏蔽通信子网的实现细节,弥补上层提出要求和下层提供服务间的差异
传输层.png传输层服务
传输层服务.pngA:相当于电信的服务,通信子网提供的服务质量比较高,减少了传输层的工作量
B:相当于因特网服务,因为通信子网提供的服务质量不可靠,增加了传输层的工作量
传输层的作用范围
提供从源主机到目的端主机的可靠传输,关心的是一个主机的进程与另一个主机的进程之间的通信
传输层的作用范围.png应用进程之间的通信
传输层提供进程级的访问能力。两个主机进行通信实际上就是两个主机中的应用进程互相通信。应用进程之间的通信又称为端对端的通信。传输层的另一个重要功能就是复用和分用
传输服务
传输实体:完成传输层功能的硬软件(端口),网络层的实体是IP地址
传输层实体利用网络层提供的服务向高层提供有效、可靠的服务,用服务质量QoS来衡量
传输层提供两种服务
• 面向连接的传输服务:连接建立,数据传输,连接释放 → TCP
• 无连接的传输服务:不可靠的传输 → UDP
传输服务的要素
寻址方法:定义传输服务访问点TSAP(端口号),将应用进程与这些TSAP相连
在Internet中,TSAP内容如→:(IP address,local port)本地端口号
服务访问点TSAP
服务访问点TSAP.png传输层常用端口号
传输层常用端口号.png↑是默认端口号,比如一个网址是WWW.xxxx.yy,后面是带一个默认的端口号80的。
如果是自己设定的服务器,可以自己起端口号(比如8080,如果是FTP则可以起2121等),但是别人是怎样知道私人起的这样的端口号的呢?↓↓↓
远方客户程序如何获得服务程序的TSAP?
方法1:预先约定、广为人知的,比如telnet是(IP地址,端口23)
方法2:从名字服务器(name server)或目录服务器(directory server)获得TSAP
传输层寻址
当服务程序很多时,使用初始连接协议(initial connection protocol)来获取端口号↓
一个称为进程服务器的进程同时在多个端口上监听
远方客户程序向它实际想访问的服务程序的TSAP发出连接建立请求
如果没有服务程序在此TSAP上监听,则远方客户和进程服务器建立连接
进程服务器产生所请求的服务进程,并使该进程集成和远程客户的连接
进程服务器返回继续监听
远方客户程序与所希望的服务程序进行数据传输
寻址过程
寻址过程.png(1)注册进程连接到公用TSAP上
(2)用户进程与公用TSAP相连接
(3)注册进程使文件服务运行,并给它分配TSAP
(4)文件服务进程连接到指定的TSAP
(5)注册进程将进程地址通知用户进程
(6)用户与文件服务进程连接
面向连接传输层协议的设计
• 分组和组装:网络层PDU长度小于传输层PDU,对传输层PDU进行分段
• 拼接和分割:当传输层的PDU长度小于网络层PDU时,对传输层PDU进行拼接
• 多路复用和分流:多个传输连接映射到一个网络连接上(怎样将若干个传输层的应用进程复用到一条网络连接上,到对端之后要进行分流的过程)
• 流量控制和缓冲管理
动态缓冲区的分配
动态缓冲区的分配.png建立连接与释放连接
连接的建立和释放是面向连接的传输层服务要解决的一个重要问题。释放连接是通过断连请求以及断连确认实现的。如果断连的时机选择不当而突然发出断连请求或断连指示有可能造成丢失数据
断连不当引起的数据丢失
断连不当引起的数据丢失.png在A向B发送第二个数据请求的时候,B突然发了一个断开连接的请求,这时A发送的数据就会发生丢失。这属于非对称式
两种连接释放方法
• 非对称式:一方释放连接,整个连接断开,存在丢失数据的危险
• 对称式:每个方向的连接单独关闭,双方都执行DISCONNECT才能关闭整条连接
释放连接保证数据有效传输的措施
三次握手的连接释放请求(正常情况下):
a.png三次握手的连接释放请求(在A发送删除连接后丢失的情况下):
B会启动一个定时器,如果设置的时间内没有收到A的删除连接的联络,那么B会自动断开连接
三次握手的连接释放请求(B发送的DC+丢失的情况下):
B发送的DC+发送丢失,这时超过了A设定的定时器的时间,这时A会重发DR+
三次握手的连接释放请求(B发送的DC+丢失并且A重发的DR+也丢失的情况下):
A和B都会设置定时器。在都丢失的情况下,A和B的计时器都会超时,双方都会断开连接