3.1 概述和运输层服务
1.运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信。运输层协议运行在端系统上。
3.1.1 运输层和网络层的关系
1.网络层:主机-主机,运输层:进程-进程
3.1.2 因特网运输层概述
3.2 多路复用和多路分解
1.运输层将从网络层接收的报文段交给进程,实际上是交给套接字
2.将运输层报文段中的数据交付到正确的套接字的工作称为多路分解demultiplexing
3.在源主机从不同套接字收集数据块,并为每个数据块封装上首部信息生成报文段,再把报文段传递到网络层,称为多路复用multiplexing
无连接的多路复用和多路分解
1.一个UDP套接字是由一个二元组来全面标识的,该二元组包含一个目的IP地址和一个目的端口号
面向连接的多路复用和多路分解
1.TCP套接字是由一个四元组(源IP地址,源端口号,目的IP地址,目的端口号)来标识的
2.Web服务器与TCP。使用持续HTTP,同一个服务器套接字交换HTTP报文,如果是非持续HTTP,那么每一个新的TCP连接都会创建一个新的套接字
3.3 无连接运输:UDP
1.适用UDP的原因:(1)关于何时、发送什么数据的应用层控制更为精细(2)无需建立连接(3)无连接状态(4)分组首部开销小(8个字节)
3.3.1 UDP报文段结构
3.3.2 UDP检验和
1.checksum和sum相加要为全1,计算过程中任何溢出都要回卷
3.4 可靠数据传输原理
3.4.1 构造可靠传输协议
1.经完全可靠信道的可靠数据传输:rdt 1.0(底层通道是完全可靠的)
2.经具有比特差错信道的可靠数据传输:rdt 2.0(仍假设按序发送),使用自动重传请求协议
(1)差错检测(2)接收方反馈,肯定确定ACK和否定确定NAK(3)重传。
不收到ACK不会再次发送,所以称为停等stop-and-wait协议
rdt 2.1,返回的NAK带上序号
rdt2.2,如果失败则发送上次成功接收的包的ACK,无NAK,称为冗余ACK
3.经具有比特差错的丢包信道的可靠数据传输:rdt 3.0(丢包),引入超时机制
3.4.2 流水线可靠数据传输协议
1.停等机制的信道利用率很低,因此要使用流水线技术pipelining,因此需要增加序号范围、增加缓存,应对差错处理的方法有回退N步(Go-Back-N)和选择重传(Selective Repeat)
3.4.3 回退N步
1.GBN也常被称作滑动窗口协议
2.GBN必须响应三种事件:(1)上层调用,检测发送窗口是否已满,即是否有N个已经发送但未被确认的分组(2)收到一个ACK(3)超时事件。收到一个ACK定时器就重新启动,如果发生超时,发送发重传所有已发送但还未被确认的分组
3.4.4 选择重传
1.不论接收是否失序,但是交付给上层时是有序的
2.窗口空间必须小于等于序号空间大小的一半
3.5 面向连接的运输:TCP
3.5.1 TCP连接
1.TCP连接提供的是全双工服务,也是点对点的
2.三次握手,初期会设置发送缓存
3.5.2 TCP报文段结构
2.序号和确认号,其中确认号为流中第一个丢失的字节数
3.5.3 往返时间的估计与超时
1.根据样本RTT(SampleRTT)来计算均值EstimatedRTT
3.5.4 TCP可靠数据传输
1.TCP发送方有三个主要事件:从上层应用程序接收数据;定时器超时;收到ACK。对于收到ACK,如果当前正在确认的是先前未被确认的报文段,就要更新确认过的报文数,如果当前还有未被确认的报文段就要启动定时器
2.超时间隔加倍,重传失败后定时器事件加倍
3.冗余ACK就是再次确认某个报文段的ACK。如果发送方收到3个冗余ACK,TCP就执行快速重传
4.是回退N步还是选择重传。(1)TCP是积累式的(2)选择确认,它允许TCP接收方有选择地确认失序报文段,而不是积累地确认最后一个正确接收地有序报文段,此时SR协议更加合适。
3.5.5 流量控制
1.流量控制是一个速度匹配服务,即发送方的发送速率与接收方应用程序的读取速率相匹配。
2.让发送发维护一个接收窗口,该窗口容量必须大于等于最后一个发送的字节序号减去最后一个被确认的字节序号,其中接收窗口大小等于接收方的接收缓存的剩余空间
3.保证接收方的缓冲器不会溢出。当接收方的缓冲器满了之后发送方还要发送一个字节的报文段来确认。
3.5.6 连接控制
1.三次握手:第一次客户向服务器发出请求,SYN=1且序号随机;第二次服务器为用户分配TCP缓冲和变量,且SYN=1,序号为服务器初始序号;第三次,客户为连接分配缓存和变量,并向服务器发出确认,此时SYN=0.第三次握手可以携带用户到服务器的数据。
2.关闭连接
3.6 拥塞控制原理
1.异步传递方式(ATM)网络中可用比特率(ABR)服务中的拥塞控制
3.6.1 拥塞原因与代价
1.两个发送方和一台具有无穷大缓存的路由器
当分组的到达速率接近链路容量时,分组经历巨大的排队时延
2.两个发送发和一台具有有限缓存的路由器
(1)发送方必须执行重传以补偿因为缓存溢出而丢弃的分组,此时数据被交付给接收方的速率只有1/3R
(2)发送方在遇到大时延时所进行的不必要重传会引起路由器利用其链路带宽来转发不必要的分组副本,此时吞吐量只有R/4
3.4个发送方和具有有限缓存的多台路由器及多跳路径
当一个分组沿一条路径被丢弃时,每个上游路由器用于转发该分组到丢弃该分组而使用的传输容量最终被浪费掉了
3.6.2 拥塞控制的方法
1.端到端拥塞控制(1)网络层不会向端系统提供网络拥塞的反馈信息
2.网络辅助的拥塞控制,路由器向发送方提供关于网络中拥塞状态的显示反馈信息。一般反馈有两种方法,一种是拥塞分组,另一种是路由器标记或更新分组中的某个字段来指示
3.6.3 网络辅助的拥塞控制例子:ATM ABR 拥塞控制
1.ATM通常采用一种面向虚电路的方法来处理分组交换
2.ABR是一种弹性数据传输服务,轻载充分利用,拥塞则抑制
3.资源管理RM信元用来在主机和交换机之间传递与拥塞相关的信息。
4.ATM ABR拥塞控制是一种基于速率的方法。即发送方明确地计算出它所能发送的最大速率,并据此作出调整。
5.显示转发拥塞指示EFCI比特;拥塞指示CI比特、无增长NI比特;显示速率ER的设置
3.7 TCP拥塞控制
1.发送方的发送速率大概是cwnd/RTT,因此通过调整cwnd的值,发送方能调整速率
2.TCP拥塞控制算法分为(1)慢启动(2)拥塞避免(3)快速恢复
慢启动SS
1.cwnd的值以MSS开始,并且每确定一个报文段就增加一个MSS
2.一旦出现丢包,就将cwnd设置为1,并且将ssthresh(慢启动阈值)设置为cwnd/2
3.或者也可以当cwnd到达慢启动阈值时直接进入拥塞避免阶段
4.如果检测到3个冗余ACK,TCP执行一次快速重传并进入快速恢复状态
拥塞避免CA
1.每个RTT只将cwnd增加一个MSS。一种具体方法是MSS*(MSS/cwnd)
2.当出现超时时,将cwnd设置为1,并且将ssthresh(慢启动阈值)设置为cwnd/2
3.当收到3个冗余ACK时,将cwnd设置为cwnd的一半,并且将ssthresh(慢启动阈值)设置为cwnd/2
快速恢复
1.收到的每个冗余ACK,cwnd增加一个MSS,丢失报文段的一个ACK到达时,TCP进入拥塞避免状态。
2.如果出现超时事件,则和慢启动一样
TCP拥塞控制回顾
在拥塞避免阶段有加性增、乘性减AIMD拥塞控制方式
TCP吞吐量宏观描述
一条连接的平均吞吐量=0.75*W/RTT,W为窗口长度