传输层

传输层提供的功能

1 传输层的功能

传输层位于网络层之上,为应用层提供通信服务,它是通信部分的最高层和用户功能的最低层。
传输层的功能:

  • 提供进程之间的逻辑通信(端到端通信)
  • 复用:不同进程可以使用同一传输层协议传递数据
  • 分用:数据接收方能够将不同应用进程的数据正确交付
  • 差错检测:对报文的首部和数据部分进行差错检测
  • 提供两种传输协议:TCP和UDP

2 传输层的寻址与端口

  1. 端口的作用
    端口用于标识主机中的应用进程
  2. 端口号
    端口号长度为16bit,能够表示65536(216)个不同端口号
    常用端口号:
应用进程 FTP TELNET SMAP DNS TFTP HTTP SNMP
端口号 21 23 25 53 69 80 161
  1. 套接字

    套接字=(主机号:端口号)
    套接字唯一的标识了网络中一个主机和其上的一个进程

3 无连接服务与面向连接服务

  1. TCP协议
    TCP协议是面向连接的传输控制协议,提供可靠的传输服务,不提供广播或组播服务。应用场合有:FTP、HTTP和TELNET等
  2. UDP协议
    UDP是无连接的非可靠的传输层协议,UDP具有较好的速度,应用场合有:TFTP、DNS、SNMP和RTP等

UDP协议

1 UDP概述

UDP在IP数据报服务基础之上增加了复用和分用以及差错检测两个最基本服务。 UDP协议有以下优势:

- 无需建立连接:速度快
- 无连接状态:不用维护连接状态
- 分组开销小:TCP首部20字节,UDP首部8字节
- 没有拥塞机制:网络中拥塞不会影响主机发送效率

UDP常用于一次性传输较少量的数据,UDP不提供可靠传输,可靠性由应用层完成。

2 UDP的首部格式

UDP数据报包含首部和数据部分,其中首部占8字节平分成四段,分别为:

- 源端口
- 目的端口
- UDP长度(包含首部和数据部分)
- UDP校验和

3 UDP校验

伪首部:在UDP数据报前加上12字节的伪首部,形成临时UDP数据报,用于计算校验和,伪首部不传送或递交,其唯一功能就是计算校验和。
校验:IP数据报的校验只检验数据部分,而UDP的校验将首部和数据部分一起检验。
校验和计算:将临时UDP以16位为一个数,进行二进制反码运算求和,所得结果再求反即为校验和
反码:二进制数据第一位为符号位,符号位为‘0’表示正数,符号位为‘1’表示负数,正数的反码为其本身,负数的反码为其各个数位取反(符号位不变)。

TCP协议

1 TCP协议特点

TCP协议是在不可靠的IP层之上提供可靠的数据传输的协议。
TCP协议特点:

- 面向连接的传输层协议
- TCP连接是点对点连接
- 提供可靠的交付服务
- 提供全双工通信
- TCP是面向字节流的:TCP把应用进程交下来的数据看成无结构的字节流

2 TCP报文

TCP传输的数据单元是数据段,TCP数据段分为TCP首部和TCP数据两部分,TCP段作为IP数据报的数据部分封装。TCP首部前20字节是固定的,总长度是4N字节。
TCP报文段各字段含义:

- 源端口和目的端口:各占2字节
- 序号:标记本段的第一个字节的序列
- 确认字段:确认号=N,表示序号N-1前的数据都正确接收
- 数据偏移:首部长度
- 保留字段:
- 紧急为URG
- 确认位ACK:ACK=1时确认位有效
- 推送位
- 复位位RST
- 同部位SYN:SYN=1 表示连接请求或连接接收报文
- 终止位FIN:FIN=1表示要求释放连接
- 窗口字段:
- 校验和:检验首部和数据部分
- 紧急指针字段
- 选项字段
- 填充字段

3 TCP连接管理

  1. TCP连接建立
    三次握手:
    三次握手
    第一步:客户机发起连接请求
    第二步:服务器同意建立连接后发回确认,为该连接分配缓冲和变量
    第三步:客户机收到确认报文后向服务器给出确认,为连接分配缓存和变量

    关键字段:

    1
    2
    3
    SYN=1, seq=x
    SYN=1, ACK=1,seq=y,ack=x+1
    ACK=1, seq=x+1,ack=y+1
  2. TCP连接释放
    四次挥手:
    四次挥手
    第一步:客户机发送释放连接报文
    第二步:服务器收到释放报文后发出确认
    第三步:服务器发送连接释放报文
    第四步:客户机收到释放报文后,发出确认。

    关键字段:

    1
    2
    3
    4
    FIN=1,seq=u
    ACK=1,seq=v,ack=u+1
    FIN=1,ACK=1,seq=w,ack=u+1
    ACK=1,seq=u+1.ack=w+1

TCP可靠传输

  1. 序号:TCP首部的序号字段用来保证数据有序提交
  2. 确认:TCP首部的确认号表示期望收到对方的下一个报文段的数据的第一的字节的序号
  3. 重传:
    • 超时:每发送一个报文段,为其设置计时器,计时器到期还未收到确认则重传该报文
    • 冗余ACK:接收方每收到一个比期望序列号大的失序报文段,发送一个冗余ACK(指明下一个期待字节的序号)给发送方,发送方收到三个冗余ACK就重传.

TCP流量控制

流量控制:流量控制服务匹配发送方的发送速率和接收方的读取速率来防止发送方使接收方缓存溢出。TCP利用窗口机制来实现流量控制。
接收窗口rwnd:衡量接收方的接收容量,由TCP报文首部的窗口字段给出。
拥塞窗口cwnd:由当前网络的拥塞情况决定,反映网络的当前容量。
发送方的发送窗口大小为接收窗口和拥塞窗口中的最小值,反应。

TCP拥塞控制

拥塞表现为通信时延的增加,拥塞控制就是防止过多的数据注入网络中。
拥塞控制和流量控制:
拥塞控制是全局性的过程,涉及所有主机和路由器。
流量控制是点对点的通信量控制,由接收端控制发送端。

拥塞控制算法有两种:

1 慢开始和拥塞避免

  1. 慢开始算法
    拥塞窗口大小随着传输次数增加而呈2的指数倍增长,当拥塞窗口增大到慢开始门限(ssthresh)时改用拥塞避免算法。

  2. 拥塞避免算法
    拥塞窗口大小随着传输次数线性增长,当出现网络拥塞时的窗口大小为cwnd,将慢开始门限降至cwnd的一半。

  3. 网络拥塞的处理
    发生拥塞时,将慢开始门限降至出现拥塞时的发送方cwnd的一半,再将拥塞窗口大小重新设为1,执行慢开始算法

2 快重传和快恢复

  1. 快重传
    当发送方连续接到3个重复的ACK,直接重传该ACK对应报文段。

  2. 快恢复
    当收到3个冗余ACK时,将慢开始门限设为此时cwnd值的一半,并从慢开始门限处继续执行拥塞避免算法