传输层基本服务

  • 传输层核心任务是为应用进程之间提供端到端的逻辑通信服务
  • 传输层主要实现功能:传输层寻址、对应用层报文进行分段和重组、对报文进行差错检测、实现进程间的端到端的可靠数据传输控制、面向应用层实现复用与分解、实现端到端的流量控制、拥塞控制

传输层寻址与端口

  • TCP/IP体系结构寻址的解决方案:“IP地址+端口号”标识一个通信端点
  • 端口号为16位整数、0-1023为数字端口号;1024-49151为登记端口号,必须在互联网数字分配结构(IANA)登记,避免重复;49152-65535为客户端口号或短暂端口号,留给客户进程或用户开发的非标准服务器暂时使用
  • FTP默认端口号21,HTTP默认端口号80、SMTP默认端口号25、DNS默认端口号53

传输层的复用与分解

  • 一个网络应用进程通过一个或多个套接字,实现与传输层之间的数据传递即发送数据和接收数据

无连接的多路复用与多路分解

  • 为UDP分配端口号的两种方法:创建一个UDP套接字时,传输层自动为该套接字分配一个端口号;创建一个UDP套接字后,通过调用bind()为该套接字绑定一个特定端口号
  • UDP套接字是一个二元组(源端口号,目的端口号)

第三章 传输层-LMLPHP

面向连接的多路复用与多路分解

  • TCP套接字是一个四元组(源端口号,目的端口号,源IP地址,目的IP地址)

第三章 传输层-LMLPHP

停-等协议与滑动窗口协议

  • 实现可靠数据传输的措施:
    • 差错检测:利用差错编码实现数据包传输过程中的比特差错检测(甚至纠正)
    • 确认:接收方向发送方反馈接收状态
    • 重传:发送方重新发送接收方没有正确接收的数据
    • 序号:确保数据按序提交
    • 计时器:解决数据丢失问题
  • 停–等协议基本工作过程:发送方发送经过差错编码和编号的报文段,等待接收方的确认;接收方如果正确接收报文段,即差错检测无误且序号正确,则接收报文段,向发送方发送ACK,否则丢弃报文段,并向发送方NAK
  • 滑动窗口协议:发送方和接收方各维护一个窗口,分别为发送窗口Ws和接收窗口Wr
  • GBN协议——回退N步;发送窗口Ws>=1,接收窗口Wr=1
    • GBN必须响应三种类型的事件:上层调用、收到1个ACKn、计时器超时
    • 工作流程简述如下:发送方连续发送多个帧,接收方一个一个按序接收,若是碰到超时或未收到,则重发该帧及其后所有帧

第三章 传输层-LMLPHP

  • SR协议——选择重传
    • SR协议工作流程简述:接收方发现某帧出错后,后续收到的帧可以暂时先存起来,将出错的帧位置留出相应空位

第三章 传输层-LMLPHP

注意:SR可以以排队给没来的人留空位理解,GBN可以简单理解为数据库中的事务操作(“取钱一系列操作”——要做都做,要不做都不做)

用户数据报协议UDP

  • 用户数据报协议UDP是Internet传输层协议,提供无连接、不可靠、数据报尽力传输的服务
  • 应用UDP的原因:
    • 应用进程更容易控制发送什么数据以及何时发送
    • 无需建立连接
    • 无连接状态
    • 首部开销小
  • UDP数据报结构:

第三章 传输层-LMLPHP

  • UDP首部只有4个字段,每个字段由两个字节组成,源和目的端口号用于UDP实现复用和分解
  • UDP校验和求解过程:
    - 按照16位进行按位求和
    - 运算中有溢出回卷
    - 将得到的结果求反码

传输控制协议TCP

  • 传输控制协议(TCP)是Internet一个重要的传输层协议,提供面向连接、、可靠、有序、字节流传输服务
  • 为了实现可靠传输,TCP采用的措施如下:差错检测、重传、累积确认、定时器以及序号和确认序号等
  • TCP报文段结构

第三章 传输层-LMLPHP

  • 源端口号和目的端口号,占16位,用于多路复用/分解来自或送到上层应用的数据
  • 序号和确认序号,占32位,序号哦是对每个应用层数据的每个字节进行编号,确认序号是期望从对方接收数据的字节序号,TCP采用累积确认机制
  • 首部长度(数据偏移),占4位,长度可变最大位60字节,选项字段最多为40字节
  • 保留,占6位,目前值为0
  • URG、ACK、PSH、RST、SYN、FIN各占1位,共6位
    • URG=1——紧急指针字段有效,尽快传输
    • ACK=1——确认序号有效,反之无效
    • PSH=1——尽快将报文段中的数据据交付接收应用进程
    • RST=1——出现严重差错,必须释放连接,再重新建立连接
    • SYN=1——建立新连接请求控制段或同意建立新连接的确认段
    • FIN=1——释放一个TCP连接
  • 接收窗口,占16位,向对方通告接收窗口大小
  • 校验和字段,占16位
  • 紧急指针,16位,URG=1时有效
  • 选项字段,最大段长度MSS,用于对付TCP通告其缓存能够接受的数据段的最大长度是MSS个字节
  • 填充字段,长度为0-3字节,取值全为0,目的是为了使整个首部长度是4字节的整数倍
  • TCP连接管理:
    • 三次握手

第三章 传输层-LMLPHP

  • 详细解释如下:
    • 客户端作为连接建立发起端,选择客户端初始序列号,向服务器发送(SYN=1,seq=x)的SYN段
    • 服务器收到SYN后,选择服务器初始序列号y,向客户发送(syn=1,ack=1,seq=y,ack_seq=x+1)
    • 客户端收到服务器发送报文,向服务器发送(ACK=1,seq=x+1,ack_seq=y+1)的ACK段,当服务器收到ACK后,连接建立
  • 四次挥手

第三章 传输层-LMLPHP

  • 详细解释如下:
    • 客户向服务器发送完最后一个数据段后,发送一个FIN段(FIN=1,seq=u),请求断开客户到服务器的连接
    • 服务器收到后,发送一个ACK段(ACK=1,seq=v,ack_seq=u+1)
    • 服务器发送完最后一个数据段后,服务器向客户发送FIN段(FIN=1,ACK=1,seq=w,ack_seq=u+1)
    • 客户收到服务器发送的FIN段后,向服务器发送ACK段(FIN=1,ACK=1,seq=w,ack_seq=u+1),断开连接
  • TCP能够提供可靠的数据传输服务,是通过一下工作机制来实现的:
    • 应用数据被分割为TCP任务最适合发送的数据库(MSS),封装为TCP段
    • TCP发出一个段后,启动一个计时器
    • 校验和字段,用于检测数据在传输过程中是否发生差错
    • 根据序号程序排序
    • 重复报文段丢弃
    • 流量控制
  • TCP流量控制:协调协议发送方和接收方的数据发送和接收速度,避免因发送方发送数据太空,超出接收方的数据接收和处理能力,导致接收方被数据“淹没”
  • 拥塞控制:通过合理调度、规范、调整向网络中发送数据的主机数量、发送速率或数据量,以避免拥塞或尽快消除已发生的拥塞
04-13 03:56