传输层
Apr 15th, 2020
Last updated
Apr 15th, 2020
Last updated
传输协议(Transport protocol)是整个网络体系结构中的关键协议之一。
实现进程到进程的可靠/不可靠通信服务。
可将多对进程通信复用到一条网络连接上。
传输层为应用进程之间提供逻辑通信,网络层为主机之间提供逻辑通信。
1) 用户无法对通信子网加以控制,无法采用更好的通信处理机制来解决网络层服务质量问题,更无法改进数据链路层纠错能力 2) 传输层的职责是在两个不同系统的进程之间提供一种交换数据的可靠机制,协议具有端到端 (peer-peer) 的意义。 3) 传输层的存在使得传输服务比网络服务更可靠,报文丢失、残缺等错误都可以被传输层检测到并可以采取相应的补救措施。
连接管理
定义允许两个用户象直接连接一样交谈的规则
流量控制(Flow Control)
传输层定义了端用户之间的流量控制,数据链路协议定义了两个中间相邻接点的流量控制
差错检测(Error Detection)
数据链路层提供了可靠的链路传输,但在路由器将含有分组的帧重新格式化,可能会出现影响分组内容的错误。帧校验和是在新帧创建后计算的,可能包含了错误数据。传输层的差错检测用于检测此错误
建立无连接和面向连接的通信
拥塞控制(congestion control)
流量控制 vs 拥塞控制
流量控制是端到端的控制,原理是通过滑动窗口的大小改变来实现。
拥塞控制控制全局网络的速率。
Transport vs. Link Layers
Peer-Peer vs. Point-Point
Logical link vs. physical link
Must establish connection
Variable RTT
May vary within a connection
Can't expect endpoints to exactly match link
Buffer space availability
Transmission rate
Don’t directly know transmission rate
provide logical communication between apps' processes running on different hosts
transport protocols run in end systems
transport vs network layer services:
network layer: data transfer between end systems
transport layer: data transfer between processes
程序是一个在时间上按照严格顺序的操作序列,是存储的代码,是一个静态的概念;
进程是一个动态的概念,是读入内存正在执行的代码;进程状态反映出进程执行过程的变化;
要保证系统正常地工作,操作系统必须对进程的创建、撤消与状态转换进行控制;
从进程的观点看,操作系统核心是控制和协调进程的运行,解决进程之间的通信。
BSD UNIX 引入了管道(pipe)、命名管道(named pipe)和软中断信号(signal)机制;
AT&T UNIX引入了消息(message)、共享存储区(shared memory)和信号量(semaphore)等;
UNIX系统的消息、共享存储区和信号量统称为进程通信(inter process communication,IPC)机制;
IPC机制不适应于网络环境中的进程通信。
计算机网络最根本的目的是要实现网络环境中分布式进程的通信,以实现各种网络服务功能。
分布式进程通信与单机进程通信的主要区别:
网络中主机的高度自治性;
不同的主机系统之间,没有一个统一的高层操作系统进行全局控制、调度与管理;
网络中一台主机对其它主机的
活动状态
希望与什么进程通信无从知道
需要解决的问题:
进程命名与寻址方法
多重协议的识别
要建立一个机制,为准备通信的进程建立连接
网络中计算机的硬件、软件与数据资源是其它主机的用户可以共享的资源;
每一项网络服务都对应一个"服务程序"进程;
"服务程序"进程要为每一个获准的网络用户请求执行一组规定的动作,以满足用户网络资源共享的需要;
客户与服务器分别表示相互通信的两个应用程序的进程;
网络环境中一个完整的进程通信标识需要一个五元组来表示:
协议
本地地址
本地端口号
远程地址
远程端口号
客户端
被用户调用后运行,在打算通信时主动向远地服务器发起通信(请求服务)。因此,客户程序必须知道服务器程序的地址。
不需要特殊的硬件和很复杂的操作系统。
服务器端
一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。
系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。因此,服务器程序不需要知道客户程序的地址。
一般需要强大的硬件和高级的操作系统支持。