网络网络网络安全实验室

传输层

2016-08-11  本文已影响486人  半人前

在网络层之上,是传输层。由于网络层提供的尽力而为的服务,不保证数据传输的准确性,于是传输层提供了保证准确性的 TCP 协议。TCP 协议提供的是<b>面向字节流</b>和<b>面向连接</b>的服务,<b>面向字节流</b>指的是:应用层提供的数据是一串无结构的字节流,传输层可以对数据进行分段,数据没有长度限制;而<b>面向连接</b>指的是:发送端传输层和接收端传输层之间开始数据传输前有协调过程,且提供的是按序、可靠的传输服务。传输层的另外一个协议是 UDP 协议,UDP 协议提供的是<b>面向报文</b>和<b>面向无连接</b>的服务,<b>面向报文</b>指的是:应用层提供的一系列报文,传输层不对报文进行分割和拼装,报文长度受到限制;<b>面向无连接</b>指的是:发送端传输层和接收端传输层之间开始数据传输前没有协调过程,且提供的是不按序、不可靠的传输服务。

端口号

IP 地址是全网的统一编址,标识着互联网中不同的终端,具有全球意义,而端口号是在终端中统一编址,标识终端中不同的应用进程,具有本地意义。我们把 32 位 IP 地址加上 16 位的端口号成为 48 位<b>插口</b>。
端口号是由<b>互联网数字分配机构(The Internet Assigned Numbers Authority, IANA)</b>分配的,分为著名端口号、注册端口号和临时端口号三种类型。著名端口号的范围是 0 ~ 1023,由 IANA 统一分配,如 UDP 著名端口号: 53 用于 DNS 服务、67 / 68 用于 DHCP 服务,TCP 著名端口号:20 用于 FTP 数据连接服务,21 用于 FTP 控制连接服务等等;注册端口号的范围是 1024 ~ 49151,由用户向 IANA 申请注册;最后的临时端口号 49152 ~ 65535 用于本地分配。

UDP

UDP 提供的服务比较简单,因此 UDP 首部也比较简单,如下:

UDP 首部

TCP

TCP 提供的是按序、可靠的传输服务,需要注意的是,TCP 协议没有对传输速率作任何保证。

TCP 首部

建立和释放连接的过程

建立连接的过程 释放连接的过程
发送窗口

发送窗口指的是发送端允许发送的序号范围,假设接收窗口大小为 WS,最后一次收到的确认序号为 A,则发送窗口是 A + 1 ~ A + 1 + WS

接收窗口

接收窗口指的是接收端的可用窗口长度,假设接收端的缓冲区长度为 L,已经确认但仍未向应用层提交的字节数为 X,则接收窗口是 L - X

差错控制机制

差错控制机制的本质是出错重传,一般来说,以下情况视为出错:

发送端确定某个 TCP 报文出错的依据有两个:一是发送端长时间未收到确认应答,重传定时器溢出;二是连续接收到 4 个确认序号相同的确认应答

对于偶而丢失 TCP 报文的情况:

  1. 发送端在发送窗口内按序发送
  2. 当接收到连续4个确认序号相同的应答帧,重传数据
  3. 定时器溢出,重传数据
  4. 一般情况下重传定时器溢出时间大于接收到4个确认序号相同的确认应答时间
偶尔丢失 TCP 报文

对于丢失大量 TCP 报文的情况:
必然导致重传定时器溢出

丢失大量 TCP 报文

拥塞控制机制

<b>拥塞</b>是指分组交换设备中经过某条链路的流量超出链路的传输能力,使得输出队列中等待输出的报文越来越多,以至于发生输出队列溢出,报文丢弃的情况
<b>拥塞窗口(CWND)</b>:网络能承载的发送端至接收端的流量

因此,发送端的实际窗口值 = MIN[CWND, 接收端公告的窗口字段值]

在 TCP 连接刚建立时,发送端采用<b>慢启动</b>的方式探测网络状态,具体过程如下:

  1. TCP 连接刚建立时,发送 1 个 TCP 报文
  2. 收到确认应答后,发送 2 个 TCP 报文
  3. 往后依次成倍增大,直到达到接收端公告的窗口值或探测到报文丢失

如果发送端重传定时器溢出,说明发生了较为严重的拥堵,此时调整方案如下:

  1. 重新开始慢启动,将当前拥塞窗口的一半作为慢启动阈值
  2. 一旦超过该阈值,流量线性增长,逐步接近拥塞点

如果连续收到多个重复确认应答,说明拥堵不是很严重,采用如下调整方案:

  1. 流量下降到当前拥塞窗口的一半
  2. 流量线性增长
拥塞控制机制

参考资料:
传输层的服务特性
端口号
TCP 的特点与格式
建立和释放连接过程
TCP 差错控制机制
TCP 拥塞控制机制

上一篇下一篇

猜你喜欢

热点阅读