第3章 传输层 第一节 传输层的基本服务 一、传输层的基本服务[识记] 传输层的核心任务是为应用进程之间提供端到端的逻辑通信服务。为此,传输层主要实现如下功能:传输层寻址;对应用层报文进行分段和重组;对报文进行差错检测;实现进程间的端到端可靠数据传输控制;面向应用层实现复用与分解;实现端到端的流量控制;拥塞控制等。 Internet网络有两种传输层协议,即TCP和UDP,TCP提供面向连接的、可靠的、有序的字节流传输服务,UDP则提供无连接、不可靠的数据报传输服务。 传输层端口号为16位整数,其中0~1023为熟知端口号:1024~49151为登记端口号,为没有熟知端口号的应用程序(服务器)使用,必须在互联网数字分配结构(IANA)登记、以防止重复;49152~65535为客户端口号或短暂端口号,留给客户进程或用户开发的非标准服务器暂时使用。 传输层的端口号分为服务器端使用的端口号与客户端使用的端口号两大类。服务器端使用的端口号包括熟知端口号和登记端口号。FTP服务器默认端口号是21,HTTP服务器默认端口号是80,SMTP服务器默认端口号是25,DNS服务器默认端口号是53。 二、无连接服务与面向连接服务[领会] 传输层提供的服务可以分为无连接服务和面向连接服务两大类。无连接服务是指数据传输之前无需与对端进行任何信息交换(即“握手”),直接构造传输层报文段并向接收端发送;面向连接服务是指在数据传输之前,需要双方交换些控制信息,建立逻辑连接,然后再传输数据,数据传输结束后还需要再拆除连接。 第二节 传输层的复用与分解 一、复用与分解的基本概念[领会] 支持众多应用进程共用同一个传输层协,并能够将接收到的数据准确交付给不同的应用进程,是传输层需要实现的一项基本功能,称为传输层的多路复用与多路分解,简称为复用与分解,也称为复用与分用。 二、UDP与TCP实现复用与分解的方法[领会] Internet传输层提供无连接服的传输层协议是UDP。为UDP套接字分配端口号有两种方法:一种方法是创建一个UDP套接字时,传输层自动地为该套接字分配一个端口号(通常从1024~65535分配一个端口号),该端口号当前未被该主机中任何其他UDP套接字使用;另一种方法是:在创建一个UDP套接字后,通过调用bind()函数为该套接字绑定一个特定的端口号。 UDP套接字的端口号是UDP实现复用与分解的重要依据。 Internet传输层提供面向连接服务的是TCP。TCP套接字与UDP套接字不同,TCP套接字是由一个四元组:<源IP地址,源端口号,目的IP地址,目的端口号>来唯一标识的。 第三节 停-等协议与滑动窗口协议 一、可靠数据传输基本原理[领会] 不可靠传输信道的不可靠性主要表现在: (1)不可你传输信道在传输数据的过程中,可能发生比特差错。 (2)不可靠传输信道在传输数据的过程中,可能出现乱序。 (3)不可靠传输信道在传输数据的过程中,可能出现数据丢失。 实现可靠数据传输的措施主要包括以下几种: (1)差错检测:利用差错编码实现数据包传输过程中的比特差错检测(甚至纠正)。 (2)确认:接收方向发送方反馈接收状态。 (3)重传发送方重新发送接收方没有正确接收的数据。 (4)序号:确保数据按序提交。 (5)计时器:解决数据丢失问题, 二、停-等协议工作原理[领会] 停-等协议的主要特点是每发送一个报文段后就停下来等待接收方的确认,这也是该协议名称的基本含义。 停-等协议的基本工作过程是:发送方发送经过差错编码和编号的报文段,等待接收方的确认;接收方如果正确接收报文段,即差错检测无误且序号正确,则接收报文段,并向发送方发送ACK,否则丢弃报文段,并向发送方发送NAK,发送方如果收到ACK,则继续发送后续报文段,否则重发刚刚发送的报文段。 三、滑动窗口协议工作原理[领会] 在可靠数据传输协议中,从发送方向接收方传送的系列分组可以看成是填充到一条流水线(或一条管道)中,故称这种协议为流水线协议或管道协议。 最典型的流水线可靠传输协议是滑动窗口协议。滑动窗口协议对分组连续编号,发送方按流水线方式依序发送分组;接收方接收分组,按分组序号向上有序提交,并通过确认向发送方通告正确接收的分组序号(也可以利用否定确认通告出现差错的分组序号)。发送方根据收到ACK的序号以及计时器等,或者向接收方继续发送新的分组,或者重发已发送的某个(或某些)分组。 滑动窗口协议实质上就是将可靠数据传输的工作过程,抽象到分组序号空间,即发送方确保分组按序发送,接收方确保分组按序提交。滑动窗口协议的发送方和接收方各维护一个窗口,分别称为发送窗口Ws和接收窗口Wr。 第四节 用户数据报协议(UDP) 一、UDP特点[识记] 用户数据报协议UDP是Internet传输层协议,提供无连接、不可靠、数据报尽力传输服务。开发应用人员在UDP上构建应用,原因有以下几点: (1)应用进程更容易控制发送什么数据以及何时发送。 (2)无需建立连接。 (3)无连接状态。 (4)首部开销小。 二、UDP数据报结构[识记] UDP数据报结构如图3-1所示: file:///C:/Users/Administrator/AppData/Local/Temp/ksohtml11268/wps7.jpg 三、UDP校验和及其计算[领会] UDDP校验和提供了差错检测功能。 UDP计算校验和时,对所有参与运算的内容(包括UDP报文段)拨16位(16位对齐)求和,求和过程中遇到的任何滥出(即进位)都被回卷(即进位与和的最低位再加)。最后得到的和取反码,就是UDP的校验和,填入UDP数据的校验和字段。UDP在生成校验和时,校验和字段取全0。参与UDP校验和计算的内容包容包括3部分:UDP伪首部、UDP首部和应用层数据。 第五节 传输控制协议(TCP) 一、TCP特点[领会] 传输控制协议(TCP)是Internet一个重要的传输层协议。TCP提供面向连接、可靠、有序、字节流传输服务。 TCP是面向连接的传输层协议,应用程序在使用TCP之前,必须先建立TCP连接。 TCP提供全双工通信服务,即TCP允许通信双方的应用进程在任何时候都能发送数据和接收数据。 二、TCP报文段结构[领会] TCP报文段结构如图3-2所示: file:///C:/Users/Administrator/AppData/Local/Temp/ksohtml11268/wps8.png (1)源端口号与目的端口号字段分别占16位,标识发送该报文段的源端口和目的端口,用于多路复用分解来自或送到上层应用的数据。 (2)序号字段与确认序号字段分别占32位。TCP的序号是对每个应用层数据的每个字节进行编号。 (3)首部长度字段占4位,指出TCP段的首部长度,以4字节为计算单位。 (4)保留字段占6位,保留为今后使用,目前值为0。 (5)URG、ACK、PSH、RST、SYN和FIN字段各占1位,共占6位,为6位标志位(字段),URG=1时,表明紧急指针字段有效,通知系统此报文段中有紧急数据。应尽快传送(相当于高优先级的数据);ACK=1时,标识确认序号字段有效,当ACK=0时,确认序号字段无效;TCP收到PSH=1的报文段时,就尽快将报文段中的数据交付接收应用进程,而不再等到整个缓存都填满了后再向上交付;当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立TCP连接;SYN=1时,表示值TCP报文段是一个建立新连接请求控制段或者是同意建立新连接的确认段(此时ACK=1),FIN用来释放一个TCP连接,当FIN=1时,表明该TCP报文段的发送端数据已发送完毕,并请求释放TCP连接。 (6)接收窗口字段占16位用于向对方通告接收窗口大小(单位为字节)。 (7)校验和字段占16位,校验和字段校验的范围类似UDP。 (8)紧急指针字段占16位,该字段只有URG=1时才有效。 (9)选项字段的长度可变。 (10)填充字段,长度为0~3字节,取值全0,其目的是为了使整个首部长度是4字节的整数倍。 三、TCP连接建立过程与连接拆除过程[领会] TCP建立连接采用三次提手协议,过程如图3-3所示。 file:///C:/Users/Administrator/AppData/Local/Temp/ksohtml11268/wps9.jpg TCP连接采用四次挥手的对称断连机制,过程如图3-4所示。 file:///C:/Users/Administrator/AppData/Local/Temp/ksohtml11268/wps10.jpg 四、TCP的可靠数据传输机制[领会] TCP在提供不可靠尽力服务的IP之上实现端到端的可靠数据传输。TCP的可靠数据传输服务确保了一个进程从其接收缓存中读出的数据流是无差错、无缺失、无冗余以及无乱序的字节流,该字节流与连接的另一方端系统发送出的字节流是完全相同的。 TCP的可靠数据传输实现机制包括差错编码、确认、序号、重传、计时器等。 五、TCP的流量控制[领会] 流量控制的目的是协调协议发送方与接收方的数据发送与接收速度,避免因发送方发送数据太“快”。超出接收方的数据接收和处理能力,导致接收方被数据“淹没”,即数据到达速度超出接收方接受、缓存或处理的能力,致使数据在接收方被丢弃。发送窗口较大小反映了接收方接收和处理数据的能力,发送窗口较大,表明允许发送方以较高的平均速率向接收方发送数据,反之,限制发送方以较低速率发送数据。 六、TCP的拥塞控制[领会] 拥塞是指太多主机以太快的速度向网络中发送太多的数据,超出了网络处理能力,导致大量数据分组“拥挤”在网络中间设备(如路由器)队列中等待转发,网络性能显著下降的现象,拥塞的直接后果如下: (1)数据分组通过网络的时延显著增加。 (2)由于队列满导致大量分组被丢弃。 拥塞控制就是通过合理调度、规范、调整向网络中发送数据的主机数量、发送速率或数据量,以避免拥塞或尽快消除已发生的拥塞。拥塞控制可以在不同层实现,比较典型的是在网络层和传输层进行拥塞控制。 拥塞控制的基本思想是AIMD,拥塞窗口的调整主要分为慢启动阶段和拥塞避免阶段。在慢启动阶段,每收到1个确认段.拥塞窗口增加1个MSS,每经过1个RTT.拥塞窗口增长1倍;在拥塞避免阶段,每经过1个RTT,拥塞窗口才增加1个MSS。
|