5.1运输层协议概述
5.1.1进程之间的通信
运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
通信的两端应当是两个主机中的应用进程。
运输层复用和分用:复用指在发送方不同的应用进程都可以使用同一个运输层协议传送数据,而分用是指接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程。
运输层提供应用进程间的逻辑通信。从应用层看,好看这种通信就是沿水平方向直接传送数据,但事实上这两个运输层之间并没有一条水平方向的物理连接。
网络层为主机之间的通信提供服务,而远输层则在网络层的基础上,为应用进程之间的通信提供服务。运输层还要对收到的报文进行差错检测。
面向连接的TCP和无连接的UDP。运输层向高层用户屏蔽了下面网络核心的细节,它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。
当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道,但当运输层采用无连接的UDP协议时,这种逻辑通信信道仍然是一条不可靠信道。
5.1.2运输层的两个主要协议
①用户数据报协议UDP。②传输控制协议TCP。
TCP报文段,UDP用户数据报。
UDP在传送数据之前不需要先建立连接。TCP则堤供面向连接的服务。
5.1.3运输层的端口
运输层的复用和分用功能,应用层所有的应用进程都可以通过运输层再传送到网终层,这是复用。运输层从IP层收到发送给各应用进程的数据后,必须分别交付指明的各应用进程,这就是分用。
应用层与运输层之间的界面上有端口,每一个端口用一个称为端口号的正整数来标记。
运输层端口号分类:
①服务器端使用的端口号,又分为熟知端口号,登记端口号。
②客户端使用的端口号,又称短暂端口号。
5.2用户数据报协议UDP
只在IP的数据报服务之上增加了很少一点功能,这就是复用和分用功能以及差错检测功能。
特点:①无连接的。②尽最大努力交付。③面向报文的。④没有拥塞控制。⑤支持一对一,一对多,多对一,多对多的交互通信。⑥首部开销小,只有8个字节,比TCP的20个字节的首部要短
5.2.2UDP的首部格式
每个字段是2字节:①源端口,②目的端口,③长度,④检验和。捡验和是把首部和数据部分一起都捡验。
5.3传输控制协议TCP概述
特点:①面向连接的运输层协议。②每一条TCP连接只能有两个端点。③TCP提供全双工通信。④面向字节流,流指的是流入到进程或从进程流出的字节序列。面向字节流的含义是:虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。
TCP根据对方给出的窗口值和当前网络的拥塞程度,决定一个报文段应包含多少字节。UDP发送报文长度是应用进程给出的。如果应用进程只发来一个字节,TCP也可以等待积累足够多的字节后再构成报文段发送出去。
TCP把连接作为最基本的抽象,TCP连接的端点叫作套接字或插口,端口号拼接到IP地址即构成了套接字。每一条TCP连接唯一地被通信两端的两个端点所确定。
5.4可靠传输的工作原理
理想传输条件特点:①传输信道不产生差错。②不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据。
5.4.1停止等待协议
①无差错情况:发送确认。
②出现差错:超时重传,超时计时器。在收到确认前必须暂时保留己发送的分组的副本。分组和确认分组都必须进行编号。超时计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些,因为分组会经过哪些网络以及产生多大的时延都是不确定因素。
③确认丢失和确认迟到,自动重传请求ARQ。两个行动:丢弃重复分组,向接收方向发送方发送确认。
④信道刮用率:停止等待协议优点是简单,缺点是信道刮用率低。U=TD/(TD+RTT+TA)。
流水线传输提高信道利用率。
5.4.2连续ARQ协议
发送方每收到一个确认,就把发送窗口向前滑动一个分组。
接牧方一般都是采用累积确认的方式。
优点容易实现,即使确认丢失也不必重传,缺点是不能向发送方及时反映接收方己经正确收到所有分组的信息。
5.5TCP报文段的首部格式
20字节是固定的,后面有4n字节按需可增:
①源端口和目的端口 各占2个字节。②序号 4字节。③确认号 4字节,期望收到对方下一个报文段的第一个数据字节的序号。④数据偏移 4位。⑤保留 6位 ⑥紧急URG ⑦确认ACK ⑧推送PSH ⑨复位RST ⑩同步SYN ⑩①终止FIN ⑩②窗口 2字节。⑩③检验和 ⑩④紧急指针⑩⑤选项
窗口值作为接收方让发送方设置其发送窗口的依据。窗口安段明确指出了现在允许对方发送的数据量。窗口值经常动态变化。
最大报文段长度MSS。
5.6TCP可靠传输的实现
①以字节为单位的滑动窗口。发送窗口位置由窗口前沿和后沿的位置共同确定。
缓存空间和序号空间都是有限的,并且都是循环使用的。
发送缓存存放:准备发送的,己发送未确认的。
接收缓存:按序到达但尚未被接牧,未按序到达的。
①A的发送窗口并不总是和B的接收窗口一样大。②未按序到达的数据,TCP并未规定如何处理,③接收方必须有累积确认的功能。
5.7TCP的流量控制
利用滑动窗口实现流量控制。
流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。TCP的窗口单位是字节,不是报文段。
解决死锁局面:TCP为每一个连接设有一个持续计时器,时间到了就发一个零窗口探测报文段,1字节。
5.8TCP的拥塞控制
网络中某一资源的需求超过了该资源所能提供的可用部分。会使性能变坏,吞吐量随输入负符的增大而下降。
引起因素:①某个节点缓存的容量太小。②处理机处理的速率太低。
拥塞控制是一个全局性过程。流量控制是个端到端问题。
闭环控制:监测网络系统。发送拥塞发生的信息到可采取行动的地方。调整网络系统的运行。
拥塞控制方法:慢开始,拥塞避免,快重传和快恢复。
5.9TCP的运输连接管理
连接建立:SYN=1,ACK=1。SYN报文段不能携带数据,但要消耗掉一个序号ACK报文段可以携带数据,如果不携带数据则不消耗序号。3报文握手。
连接释放:FIN=1,ACK=1。四报文握手。