计算机网络---运输层

计算机网络—运输层

运输层是整个网络体系的关键层次之一,为相互通信的应用进程提供逻辑通信,包含面向连接的TCP协议和面向无连接的UDP协议。

1 运输层协议概述

网络中的两台主机进行端到端通信时,只有主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。从运输层的角度来看,通信的真正端点并不是主机而是主机中的进程。运输层有一个重要的功能—复用(multipuexing)和分用(demultiplexing)。这里的“复用”是指发送方不同的应用进程都可以使用同一个运输层协议来传送数据,而“分用”是指接收方的运输层在剥离报文的首部后能够把这些数据正确交付目的应用进程。
在这里插入图片描述

网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供逻辑通信。

运输层还要对收到的报文进行差错检测。根据需求的不同,有面向连接的TCP协议和无连接的UDP协议。

(1)用户数据报协议UDP (User Datagram Protocol)

(2)传输控制协议TCP(Transmission Control Protocol)

UDP在传送数据之前不需要先建立连接。远地主机的运输层收到UDP报文后不需要给出任何确认;TCP则提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。由于TCP要提供可靠的面向连接的传输服务,不可避免的增加了许多的开销,例如确认、流量控制、计时器以及连接管理等。

运输层的端口:

为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须使用统一的方法(与特定系统无关)对TCP/IP体系的应用进程进行标志。解决方案就是在运输层使用协议端口号。这种在协议栈层间的抽象的协议端口是软件端口,不同于路由器上的硬件端口。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。

运输层用16位端口号来标志一个端口,可允许有65535个不同的端口号。分为两大类。

(1)服务器使用的端口号 一部分是熟知端口号或系统端口号,数值为01023;另一类是登记端口号,数值为102449151;

在这里插入图片描述

(2)客户端使用的端口号 数值为49152~65535。这类端口号仅在客户进程运行时才动态选择,又叫短暂端口号。

2 用户数据包协议UDP

UDP只在IP的数据报服务上增加一点功能,这就是复用和分用以及差错检测。UDP的主要特点:无连接、尽最大努力交付、面向报文的、没有拥塞控制等等;

UDP的首部只有8个字节四个字段:

在这里插入图片描述

3 传输控制协议TCP概述

TCP协议比较复杂,其主要特点:

(1)TCP是面向连接的运输层协议。

(2)每一条TCP连接只能有两个端点。

(3)TCP提供可靠交付的服务。通过TCP连接传送的数据,无差错、不丢失、不重复并按序到达;

(4)TCP提供全双工通信。

(5)面向字节流。

TCP把连接作为最基本的抽象。TCP的很多特性都与面向连接这个特性相关。TCP连接有两个端点,这个端点叫做套接字(socket)或插口。根据RFC793的定义:端口号拼接到IP地址1即构成了套接字。

套接字 socket = (IP地址:端口号)

每一条TCP连接唯一的被通信的两个端口(及两个套接字)确定。即:
TCP连接 = {socket1,socket2} = {(IP1:port1),(IP2:port2)}

套接字是一个抽象的概念,有时容易把一些概念弄混淆。随着网络技术的发展,同一个名词socket有不同的意思,注意区分。

4 可靠传输的工作原理

TCP下面的网络提供的是不可靠的传输,因此TCP必须采取适当的措施才能使两个运输层之间的通信变得可靠.

停止等待协议:

"停止等待"就是每发送完一个分组就停止发送,等待对方的确认.在收到确认后再发送下一个分组.

当接收方检测出了差错就丢弃,其他什么也不用做;可靠传输协议是这样设计的:发送方只要超过一段时间仍然没有收到确认就认为刚才发送的分组丢失了,因而重传前面发送过的分组,这就叫"超时重传".这就需要在发送完分组时设置超时计时器.接受发收到重复的分组:1,丢弃这个重复的分组;2,向发送方发送确认;使用上述的确认和重传机制就可以在不可靠的传输网络上实现可靠的通信.上述协议常称为自动重传请求ARQ(automatic repeat reQuest).

停止等待协议优点是简单,缺点是信道利用率太低,信道大部分时间都是空闲的;为了提供效率,可以采用流水线传输,即发送方可以连续发送多个分组,使用的是连续ARQ协议和滑动窗口协议.

连续ARQ协议:

滑动窗口协议比较复杂,是TCP协议的精髓所在.连续ARQ协议规定,发送方每收到一个确认,就把发送窗口向前移动一个分组的位置.

在这里插入图片描述

5 TCP报文段的首部格式

TCP报文段首部的前20个字节是固定的,后面有4n字节是根据需求而增加的选项.

在这里插入图片描述

首部的字段体现了TCP的全部功能;每个字段都有其规定,意义和作用,这里没有赘述.

6 TCP可靠传输的实现

TCP采用以字节为单位的滑动窗口来传输数据;

超时重传时间的选择,采用了自适应算法.记录报文发出的时间以及收到相应的确认的时间,得到往返时间RTT.保留RTT的一个加权平均往返时间 :
在这里插入图片描述
超时时间:

在这里插入图片描述

收到的报文无错误,但是没有按序?(例如收到1-30,40-50,但是31至39没有收到),可以采用使用选择确认(Selective ACK). 告诉发送方缺失分组的边界,这样就只用重传确实的分组而不是所有的分组.这是一个可选项,但大部分实现还是重传所有未被确认的数据块.

7 TCP的流量控制

利用滑动窗口实现流量控制

所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收.接收方可以发送接收窗口的大小,动态调整.发送方的发送窗口不能超过接收方给出的接收窗口的数值.

TCP的传输效率

在这里插入图片描述

8 TCP的拥塞控制

在计算机网络中的链路容量(即带宽),交换结点中的缓存和处理机等,都是网络的资源.在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏.这种情况就叫做拥塞(congestion).

网络拥塞往往是多因素引起的,拥塞控制是一个全局性的过程.

在这里插入图片描述

TCP进行拥塞控制的算法有四种,即慢开始(slow-start),拥塞避免(congestion avoidance),快重传(fast retransmit)和快恢复(fast recovery).

主动队列管理AQM

上面的算法讨论的TCP拥塞控制并没有和网络层采取的策略联系起来,其实他们之间有着密切的联系。

路由器的队列都是按照先进先出的规则处理,队列已满时后面到达的所有分组将被丢弃,叫做尾部丢弃策略(tail-drop policy)。这会导致一连串的分组的丢失,这会影响多条TCP连接,导致许多TCP连接在同一时间突然都进入慢开始状态,这种现象称为全局同步。全局同步使得全网的通信量突然下降了很多,而在网络恢复正常后,其通信量又突然增大了很多。

为了避免全局同步现象,1998年提出了主动队列管理AQM(active queue management)。所谓主动,就是在队列达到某个值得警惕的数值时就主动丢弃到达的分组,从而减轻拥塞,甚至不出现网络拥塞。AQM有不同的方法,早期流行的随机早期检测RED,但结果还不太理想。现有的算法还在实验阶段,没有成为IETF的标准。

9 TCP的运输连接管理

TCP是面向连接的协议,包含连接建立、数据传送和连接释放三个阶段。建立连接中要解决三个问题:确知对方的存在、协商一些参数和运输实体分配。

TCP的连接建立

TCP的建立连接的过程叫做握手,握手需要在客户和服务器之间交互三个TCP报文。

在这里插入图片描述

客户端在收到服务器的确认后还要进行第三次确认主要是为了防止已失效的连接请求报文段突然又传送到了服务器,因而产生错误。

TCP的连接释放:

在这里插入图片描述

在这里插入图片描述
释放有四次报文传送;
在这里插入图片描述

TCP的有限状态机:描述了各种状态的转换
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值