计网-4.运输层

4. 运输层

4.1 运输层协议概述

  • 端到端
  • TCP 可靠通信 面向连接
  • UDP 不可靠通信 无连接
  • 端口号
  • UDP:DNS, DHCP, RIP, TFTP
  • TCP:HTTP, SMTP, FTP, TELNET

4.2 用户数据报协议UDP

  • 特点:
    • 无连接
    • 尽最大努力交付
    • 面向报文
    • 没有拥塞控制
    • 支持一对一,一对多,多对一,多对多的交互通信
    • 首部开销少,才8字节

4.3 传输控制协议 TCP 概述

  • 每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是点对点的(一对一)

  • 全双工

  • 面向字节流

  • TCP 连接的端点:套接字或插口

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

    • 每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定:

      TCP 连接 ::= {socket1, socket2} = {(IP1: port1),(IP2: port2)}


4.4 可靠传输的工作原理

  • IP层是不可靠传输

  • 停止等待协议:

    • 信道利用率:U = TD / TD + RTT + TA

      • TD:A发送分组需要的时间
      • RTT:往返时间
      • TA:B发送确认分组需要的时间在这里插入图片描述
    • 信道利用率太低

  • 连续ARQ协议:

    • 流水线传输:在收到确认之前,发送方连续发出多个分组
    • Go-back-N(回退N):表示需要再退回来重传已发送过的 N 个分组

4.5 TCP 报文段的首部格式

在这里插入图片描述

  • TCP 首部的最小长度是 20 字节 TCP首部的长度是 4n 字节
  • 序号:每个字节都有一个序号,这里指的最开始发送的序号
  • 确认号:期望收到对方的下一个报文段的数据的第一个字节的序号
  • 紧急URG:应该尽快上传的紧急数据
  • 确认ACK:只有当ACK = 1才有效
  • 推送PSH:接收 TCP 收到 PSH = 1 的报文段后,就尽快交付接收应用进程
  • 同步SYN:
    • SYN = 1 ACK = 0:连接请求
    • SYN = 1 ACK = 1:连接接受

4.6 TCP 可靠传输的实现

在这里插入图片描述


4.7 TCP 的流量控制


4.8 TCP 的拥塞控制

  • 拥塞窗口:cwnd

  • 判断拥塞:

    • 超时重传计时器超时:已经拥塞
    • 收到3个重复的确认:预示可能出现拥塞
  • TCP拥塞控制算法:

    • 慢开始:
      • 由小到大逐渐增大拥塞窗口数值
      • 控制变量:慢开始门限:ssthresh 拥塞窗口:cwnd
      • 在收到一个确认后,拥塞窗口 cwnd 每次的增加量 = min (N, SMSS) SMSS发送方的最大报文段
      • 窗口大小按指数增长
      • 慢开始门限用法:
        • 当 cwnd < ssthresh 时,使用慢开始算法
        • 当 cwnd > ssthresh 时,停止使用慢开始算法,改用拥塞避免算法
        • 当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法
    • 拥塞避免:
      • 每经过一个往返时间 RTT(不管在此期间收到了多少确认),发送方的拥塞窗口 cwnd = cwnd + 1
      • 不是完全避免拥塞,只是让拥塞窗口增长缓慢一点,不容易出现拥塞
      • 当网络出现拥塞,ssthresh = cwnd / 2 cwnd = 1 执行慢开始算法

    在这里插入图片描述

    • 当拥塞窗口 cwnd = 16 时,发送方连续收到 3 个对同一个报文段的重复确认(记为 3-ACK)。发送方改为执行快重传和快恢复算法

    • 快重传:

      • 3-ACK后立即重传
    • 快恢复:

      • ssthresh =cwnd / 2 cwnd = ssthresh 开始执行避免拥塞算法
    • 当 rwnd(接收窗口) < cwnd 时,是接收方的接收能力限制发送窗口的最大值

    • 当 cwnd < rwnd 时,是网络拥塞限制发送窗口的最大值


4.9 TCP 的运输连接管理

  • TCP连接3阶段:连接建立、数据传送、连接释放
4.9.1 TCP 的连接建立
  • 握手 三报文握手

在这里插入图片描述

  • seq是第一个字节的编号
  • 前两个不能带数据,第三个可以携带数据
  • SYN报文段不能携带数据,但要消耗一个序号 **seq**同理
  • ACK报文段 不携带数据就不会消耗序号
4.9.2 TCP的连接释放
  • 四报文握手

在这里插入图片描述

  • FIN 报文段即使不携带数据,也消耗掉一个序号
  • B 第一次发送数据时从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭状态,即B发送数据A还是要接收的
  • 若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接 —>第二次 B 发送数据
  • A 收到连接释放报文段后,必须发出确认 —>第四次
  • 注意:此时 TCP 连接还没有释放掉。必须经过时间等待计时器设置的时间 2MSL 后,A 才释放 TCP 连接

在这里插入图片描述

  • 25
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值