(五)计算机网络之传输层-计网

一、概述

主机才有的层次
功能:为应用层提供通信服务,使用网络层的服务

  • 提供进程与进程之间的逻辑通信
  • 传输层对收到的报文进行差错检测
  • 复用与分用
    • 复用:应用层所有的应用进程都可以通过传输层传输
    • 分用:传输层从网络层收到数据后交付指明的应用进程

    寻址与端口

    端口:传输层的SAP,标识主机中的应用进程(逻辑端口/软件端口)
    端口号只有本地意义,长度为16bit,能表示65536个不同的端口号

    • 服务端使用的端口号
      - 熟知端口号(0 - 1023):给TCP/IP最重要的一些应用程序,让所有用户都知道
      - 登记端口号(1024 - 49151):其他应用程序
    • 客户端使用的端口号:仅在客户进程运行时才做动态选择

    网络中采用发送方和接收方的套接字组合来识别端点

    套接字Socket = (主机IP地址,端口号),唯一标识了网络中的一个 主机和它上面的一个 进程
    应用程序 熟知端口号
    FTP 21
    TELNET 23
    SMTP 25
    DNS 53
    HTTP 80

    二、UDP协议

    无连接的用户数据报协议 - 不可靠、无连接、时延小、适用于小文件
    传送数据之前不需要建立连接,收到UDP报文后不需要给出任何确认

    UDP特点:网络层检错

  • 无连接,减少开销和发送数据之前的时延
  • 使用最大努力交付,即不保证可靠交付
  • 面向报文,适合一次性传输少量数据的网络应用
  • 应用层给UDP多长的报文,UDP照样发送,即一次发一个完整报文,不切片
    (五)计算机网络之传输层-计网_第1张图片

  • 无拥塞控制,适合很多实时应用
  • 首部开销小,8字节(而TCP首部20B)
  • 首部格式
    (五)计算机网络之传输层-计网_第2张图片
    若对方需要回复,可查看源端口号

    UDP校验方式


    三、TCP协议

    0. TCP协议的特点

    面向连接的传输层协议
    每一条TCP连接只能有两个端点(点对点)
    TCP提供可靠交付的服务,可靠有序、不丢不重
    提供全双工通信

    发送缓存:准备发送的数据&已发送但尚未受到确认的数据
    接收缓存:按序到达但尚未被应用程序读取的数据&不按序到达的数据

    面向字节流:TCP将应用程序交下来的数据看作一连串的无结构字节流

    TCP特点:连接

    TCP首部格式

  • 6个控制位
  • 六个控制位 含义
    紧急位URG 1标明报文段中有紧急数据,应尽快传送,不用在缓存中排队
    确认位ACK 1表示确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1
    推送位PSH 1接收方尽快交付接受应用进程,不再等到缓存填满再向上交付
    复位RST 1表明TCP连接中出现严重差错,必须释放连接,然后重新建立传输连接
    同步位SYN 1表明时一个连接请求/连接接收报文
    终止位FIN 1表明此报文段发送方数据已发送完,要求释放连接
  • 窗口
  • 校验和:检验首部+数据,检验时要加上12B伪首部
  • 紧急指针
  • 选项
  • 1. TCP连接管理

    TCP连接的建立采用客户 - 服务器方式,传输的三个阶段:建立连接 - 数据传送 - 连接释放

    • 1.建立连接(三次握手)
      • round 1. 客户端发送连接请求报文段(无应用层数据)
        SYN = 1, seq = x(随机)

      • round 2. 服务器分配缓存、变量,返回确认报文段,允许连接 S
        YN = 1, seq = y , ACK = 1 , ack = x+1(确认号)

      • round 3. 客户端为该TCP连接分配缓存、变量,并向服务器返回确认的确认,可携带数据
        SYN=0, ACK = 1, ack=y+1 ,seq = x+1

    SYN洪泛攻击
    发生在OSI第四层(传输层),利用TCP协议特性。攻击者发送TCP的第一个数据包SYN,服务器返回ACK后,攻击者不进行再确认,则此时TCP处于半连接状态,服务器未收到再确认就重复发送ACK给攻击者,浪费资源。
    若攻击者向服务器大量发送这种TCP连接,每一个都无法完成三次握手,服务器上的TCP连接由于挂起状态而消耗CPU与内存

    • 3.连接释放(四次握手

    参与TCP连接的两个进程中任一都可终止连接,连接结束后,主机中的缓存、变量都被释放

    • round 1. 客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接
      FIN = 1, seq = u

    • round 2. 服务器回送一个确认报文段,客户到服务器这个方向的连接就释放(半关闭状态)
      ACK = 1(ack = u+1), seq = v

    • round 3. 服务器发完数据后,发出连接释放报文段,主动关闭TCP连接
      FIN = 1, seq = w, ACK=1(ack=u+1)

    • round 4. 客户端回送一个确认报文段,等到计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭

    因为2MSL内服务器会受到该确认报文段,若服务器没收到④的确认,会继续发出②的确认报文段

    2. TCP可靠传输

    TCP实现可靠传输的机制:

    1. 校验(与UDP校验一样,增加伪首部)
    2. 序号
    3. 累计确认(接收方向发送方发送确认报文段,期待接收的下一个累计确认)

    TCP默认使用累计确认

    1. 超时重传(TCP发送方再规定时间内没收到确认就要重传已发送报文段)
    • 重传时间:TCP采用自适应算法,动态改变重传时间RTTs (加权平均往返时间)
    • 冗余ACK(冗余确认):每当比期望序号大的报文段到达时,发送一个冗余ACK,指明下一期待字节的序号

    例:发送方已发送1.2.3.4.5报文段
    接收方收到1,返回1的确认(确认号为2的第一个字节)
    接收方收到2,返回1的确认……收到5仍返回1的确认
    发送方收到3个对1的冗余ACK,认为2报文段丢失,则快速重传

    3. TCP流量控制

    使用滑动窗口实现流量控制
    rwnd
    (五)计算机网络之传输层-计网_第3张图片

    4. TCP拥塞控制

    • 出现拥塞的条件:对资源需求的总和 > 可用资源
    • 网络中许多资源同时呈现供应不足 -> 网络性能变坏 -> 网络吞吐量随输入负荷增大而下降
    • 拥塞控制的方法:防止过多数据注入网络
      满开始&拥塞避免,快重传&快恢复

    拥塞控制与流量控制的区别

    控制拥塞的四种算法
    慢开始
    拥塞避免
    快重传
    快恢复

你可能感兴趣的:(计算机网络,网络,udp,网络协议)