0
点赞
收藏
分享

微信扫一扫

第5章---应用层

梦幻之云 2022-02-20 阅读 86

5.1 传输层的功能

从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部份的最高层,同时也是用户功能中的最底层。传输层位于网络层之上,他为运行在不同主机上的进程之间提供了逻辑通信,而网络层提供主机与主机之间的逻辑通信。
逻辑通信:逻辑信道是MAC子层向上层提供的服务,表示承载的内容是什么。传输层之间的通信好像是沿水平方向传送数据,事实上这两个传输层之间并没有物理连接
传输层的功能:

  1. 传输层提供应用进程之间的逻辑通信(端到端的通信)。网络层提供的是主机与主机之间的逻辑通信。
  2. 复用和分用。复用是指发送方不同应用进程可以使用同一个传输层协议传送数据;分用是指接收方的传输层在剥去报文首部后能够把这些数据正确交付到目的应用进程。——网络层也有复用与分用,复用指发送方不同协议的数据都可以封装成IP数据报发出去,分用是指接收方的网络层在剥去首部后把数据交付给相应的协议。
  3. 传输层要对收到的报文进行差错检测(首部和数据部分)。——网络层只检查IP数据报的首部。
  4. 提供两种不同的传输协议;面向连接的TCP与无连接UDP。而网络层无法同时实现两种协议。

5.2 传输层的寻址与端口

5.2.1 端口的作用

端口能够让应用层的各种应用进程将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。
端口是传输层服务访问点(Transport Service Access Point,TSAP),它在传输层的作用类似于IP地址在网络层的作用以及MAC地址在数据链路层的作用。IP地址和MAC地址标识的是主机中的应用进程。
在协议层间的抽象的协议端口是软件端口,它与路由器或交换机上的硬件端口是完全不一样的。

5.2.2 端口号

应用进程通过端口号进行标识,端口号长度为16bit,能够表示65536–2^16个不同的端口号。端口号只具有本地意义。
因特网中不同计算机的相同的端口号是没有联系的。根据端口号范围可将端口分为两类:

  1. 服务端使用的端口号, 熟知端口号。它又分为两类,0🔪1023,LAN把这些端口号指派给了TCP/IP最重要的一些应用程序让所有用户都知道。另一类称为登记端口号,1024🔪49151,它是供没有熟知端口号的应用程序使用的,使用这类端口号必须在LAN等级,以防止重复。
应用程序File Transfer Protocol,FTPTelnetSimple Mail Transfer Protocol,SMTPDomain Name System,DNSTrivial File Transfer Protocol,TFTPHyper Text Transfer Protocol,HTTPSNMP
熟知端口号212325536980161
  1. 客户端使用的端口号,数值为49152🔪65535.由于这类端口号仅在客户进程运行时才动态地选择,因此又称短暂端口号或临时端口。通信结束时,刚用过的端口号就不复存在,从而这个端口号就可供其他客户进程以后使用。

套接字

在网络中采用发送方和接收方的套接字组合来识别端点,套接字唯一标识了网络中的一个主机和它上面的一个进程。
套接字Socket=(主机IP地址,端口号)

5.3 无连接服务和面向连接服务

  • 面向连接服务实在通信双方进行通信之前,必须先建立连接,通信过程中,整个链接的情况一直被实时监控和管理。通信结束后释放连接。

  • 无连接服务是指两个实体之间的通信不需要先建立好链接,需要通信时,直接将信息发送到“网络”中,让该信息的传递在网上尽力而为的往目的传送。

5.4 UDP协议

5.4.1 UDP概述

UDP仅在IP数据包服务之上增加了两个最基本的服务:复用和分用以及差错检测。如果应用开发者选择UDP而非TCP那么应用程序几乎直接与IP打交道。为何不选用提供可靠服务的TCP呢?UDP的优点:

  1. UDP无需建立连接。因此UDP不会引入建立连接的时延。
  2. 无连接状态。TCP需要在端系统中维护连接状态,此链接状态包括接受和发送缓存、拥塞控制参数和序号与确认号的参数。而UDP不维护连接状态,也不跟踪这些参数。因此、某些专用应用服务器使用UDP时,一般都能支持更多的活动客户机。
  3. 分组首部开销小。TCP有20B的首部开销,而UDP仅有8 B
  4. 应用层能更好地控制要发送的数据和发送时间。UDP没有拥塞控制,因此网络中的拥塞并不会影响主机的发送效率。某些实时应用要求以稳定的速度发送,能容忍一些数据的丢失,但不允许有较大的时延,UDP正好可以满足。
  5. UDP支持一对一,一对多、多对一和多对多的交互通信。

UDP常用于一次性传输较少数据的网络应用,如DNS、SNMP等;UDP不保证可靠交付,但这不意味着应用对数据的要求是不可靠的,所有维护可靠性的工作可由用户在应用层完成。应用开发者可根据应用的需求来灵活设计自己的可靠性机制。
UDP是面向报文的、发送方UDP对应用层交下来的报文再添加首部后就向下交付给IP层,一次发送一个报文,既不合并也不拆分,而是保留这些报文的边界;接收方UDP对IP层交上来的UDP数据报,再取出首部后原封不动交给上层应用进程,一次交付一个完整的报文。

5.4.2 UDP首部格式

在这里插入图片描述

5.4.3 UDP校验

在计算校验和时,要在UDP数据报之前增加12B的伪首部,伪首部并不是UDP真正的首部。只是在计算校验和时,临时添加在UDP数据报的前面,得到一个临时的UDP数据报。校验和就是按照这个临时的UDP数据报来计算的。
UDP校验和计算方法和IP数据报首部校验。但不同的是,IP数据报只校验首部;UDP校验首部和数据部分。
在这里插入图片描述

UDP校验过程

  1. 发送方首先把全0放入校验和字段并添加伪首部,把UDP数据报视为许多16位的字串连接起来。
  2. 若UDP数据报的数据部分不是偶数个字节,则要在数据部分末尾填入一个全0字节(不发送此字节)。
  3. 按二进制反码求出这些16位字的和,将此和的二进制反码写入校验和字段,并且发送。
  4. 接收方把收到的UDP数据报加上伪首部(如果不是偶数字节,则补上全0字节)按二进制反码求这些16位字的和。
  5. 若无差错应该全为1,否则丢弃整个数据报。

在这里插入图片描述

这种检错方法的检错能力不强,但它的好处是简单、处理速度快。

5.5 TCP协议

5.5.1 TCP协议的特点

TCP是在不可靠的IP层之上实现的可靠的数据传输协议,他主要解决传输的可靠、有序、无丢失和不重复问题。TCP是TCP/IP体系中非常复杂的一个协议,主要特点如下:

  1. TCP是面向连接的传输层协议。
  2. 每条TCP连接只能有两个端点,每条TCP连接只能是点对点的。
  3. TCP提供可靠的交付服务,保证传送的数据无差错、不丢失、不重复且有序。
  4. TCP提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据,为此TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。
    发送缓存用来暂时存放:①发送应用程序传送给发送方TCP准备;②TCP已发送但尚未收到确认的数据。
    接收缓存用来暂时存放:①按需到达但尚未被接受应用程序读取的数据;②不按需到达的程序。
  5. TCP是面向字节流的,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅视为一连串无结构的字节流。
    TCP和UDP在发送报文时所采用的方式完全不同。UDP报文的长度由发送应用进程决定,而TCP报文长度则根据接收方给出的窗口值和当前网络拥塞程度来决定。
    在这里插入图片描述

5.5.2 TCP报文段

TCP传送的数据单元称为报文段。TCP报文段既可以用来运载数据,有可以用来建立连接、释放连接和应答。一个TCP报文段分为首部和数据两部分,整个TCP报文段作为IP数据报的数据部分封装在IP数据报中。
在这里插入图片描述
在这里插入图片描述

5.5.3 TCP连接管理

TCP是面向连接的协议,因此每个TCP连接都有三个阶段:连接建立、数据传送和连接释放。TCP连接的管理就是使运输链接的建立和释放正常运行。
在TCP连接建立过程中,要解决三个问题:

  1. 要使每一方能确知对方存在。
  2. 要允许双方协商一些参数。
  3. 能够对运输实体资源进行分配。
    TCP把连接作为最基本的抽象,每条TCP连接都有两个端点,连接的端口为套接字—,每条TCP连接唯一地被通信两个端点确定即两个套接字的连接。

TCP连接建立

连接的建立经历以下3个步骤,也称三次握手
在这里插入图片描述

在这里插入图片描述

TCP连接释放

通常称为四次握手。
在这里插入图片描述
1)连接建立:

  1. SYN=1,seq=x。
  2. SYN=1,ACK=1,seq=y,ack=x+1。
  3. ACK=1,seq=x+1,ack=y+1。

2)连接释放:
4. FIN=1,seq=u。
5. ACK=1,seq=v,ack=u+1。
6. FIN=1,ACK=1,seq=w,ack=u+1。
7. ACK=1.seq=u+1,ack=w+1。

ACK、SYN、FIN一定等于1。

5.5.4 TCP可靠传输

TCP的任务实在IP层不可靠的、尽力而为服务的基础上建立一种可靠数据传输服务。TCP使用了校验、序号、确认和重传等机制来达到这一目的。TCP校验机制与UDP校验一样。
在这里插入图片描述

序号

TCP首部的序号字段用来保证数据能有序提交给应用层,TCP把数据视为一个无结构但有序的字节流,序号建立在传送的字节流上,而非报文段上。
TCP连接传送的数据流中的每个字节都编上一个序号。序号字段的值是指本报文段所发送数据的第一个字节的序号。
在这里插入图片描述

确认

TCP首部确认号是期望收到对方的下一个报文段的数据的第一个字节的序号。
TCP采用默认使用累计确认。在这里插入图片描述

重传—超时与冗余ACK

有两种事件会导致TCP对报文段进行重传:超时和冗余ACK。

  • 超时
    TCP每发送一个报文段就对这个报文段设置一次计时器。计时器设置的重传时间到期但还未收到确认时,就要重传这一报文段。
    由于TCP的下层是一个互联网环境,IP数据报所选择的路有变化很大,因而传输层的往返时延方差也很大。为了计算超时计时器的重传时间,TCP采用一种自适应算法,它记录一个报文段发出的时间,以及受到相应确认的时间,时差称为往返时间RTT(Round-Trip Time)。TCP保留了RTT的一个加权平均往返时间RTTs。
  • 冗余ACK(冗余确认)
    超时触发重传存在的一个问题是超时周期往往太长。所幸发送方通常可在超时事件发生之前通过注意所谓的冗余ACK来较好的检测丢包情况。冗余ACK就是再次确认某个报文段的ACK,而发送方先前已经收到该报文段的确认。在这里插入图片描述

5.5.5 TCP流量控制

在这里插入图片描述
在这里插入图片描述

5.5.6 TCP拥塞控制

拥塞控制是指防止过多的数据注入网络,保证网络中的路由器或链路不至过载。

拥塞控制与流量控制的区别

  • 拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程,设计所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
  • 相反,流量控制往往是之点对点的通信量的控制,是端到端的问题。

接收窗口:接收方根据目前接收缓存大小所许诺的最新窗口值,反映接收方的容量。由接收方根据其放在TCP报文首部的窗口字段通知发送方。
拥塞窗口:发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络的当前容量。只要网络未出现拥塞,拥塞窗口就在增大一些,以便把更多分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一点。
发送窗口的最小值=min[rwnd,cwnd]。

慢开始和拥塞避免

慢开始先令拥塞窗口cwnd=1,即一个最大报文段长度MSS。每收到一个对新报文段的确认后,将cwnd加1,即增大一个MSS。
拥塞避免算法的思路是让拥塞窗口cwnd缓慢增大,具体做法是:每经过一个往返时延RTT就把发送方的CWND加一而不是加倍(加法增大)。
在这里插入图片描述
为了防止cwnd增长过大引起网络拥塞,还需设置一个慢开始门限ssthresh状态变量。ssthresh的用法如下:

当cwnd<ssthresh时,使用慢开始算法。

当cwnd>ssthresh时,改用拥塞避免算法。

当cwnd=ssthresh时,慢开始与拥塞避免算法任意。
在这里插入图片描述

举报

相关推荐

0 条评论