TCP/IP 网络分层模型

TCP/IP的设计通过把复杂的网络通信划分出多个层次,每个层次都有不同的职责,层次内只专心做自己的事情。网络分层模型 - 图1
层次顺序“由下至上”

  1. 链路层(数据链路层, 网络接口层)Link Layer
    • 连接网络的硬件
      • 控制操作系统、硬件设备驱动、NIC(Network Interface Card 网卡)、光纤等物理可见部分
    • 在底层网络上发送原始数据包
    • 使用MAC地址标记网络上的设备
  2. 网络层(网络互连层)Internet Layer
    • 使用IP协议,能过IP地址取代MAC地址
    • 处理网络上流动的数据包(网络传输的最小数据单位)
    • 规定通过怎样的传输路线传送数据包给对方
  3. 传输层 Transport Layer
    • 网络连接中两台设备的数据传输,把数据在IP地址标记的两点之间传输
      • TCP Transmission Control Protocol 传输控制协议 (打电话)
        • 特点:面向连接(收发数据前,必须建立可靠的连接)
        • 建立连接基础:三次握手
        • 应用场景:数据必须准确无误地收发
          • HTTP请求、FTP文件传输、邮件收发
        • 优点:稳定、重传机制、拥塞控制机制、断开连接
        • 缺点:速度慢、效率低、战胜资源、容易被攻击(三次握手 -> DOS、DDOS攻击)
        • TCP/IP协议组:提供点对点的连接机制,制定了数据封装、定址、传输、路由、数据接收的标准
      • UDP User Data Protocol 用户数据报协议 (喇叭叫人)
        • 特点:面向无连接(不可靠的协议,无㽵主传输机制)
        • 无连接信息发送机制
        • 应用场景:无需确保通讯质量且要求速度快、无需确保信息的完整
          • 消息收发、语音通话、直播
        • 优点:案例、快速、漏洞少(UDP flood攻击)
        • 缺点:不可靠、不稳定、容易丢包
        • 只要目的源地址、源端口号、地址、端口号确定,则可以直接发送信息报文,但不能保证一定能收到或收到完整的数据
  4. 应用层 Application Layer
    • 提供应用服务时的通信活动
      • HTTP FTP DNS等等

        OSI 网络分层模型

        开放式系统互联通信参考模型 Open System Interconnection Reference Model

在TCP/IP发明出来的70年代,除了它还有很多网络协议在整个网络世界。对于这种“野路子”太多的情况,国际标准组织想要个“大一统”,设计出一个新的网络分层模型。用这个新框架统一既存的各种网络协议。
网络分层模型 - 图2

  1. 物理层,网络的物理形式
    1. 电缆、光纤、网卡、集线器
  2. 数据链路层,相当于 TCP/IP 的链接层
  3. 网络层,相当于 TCP/IP 的网络层
  4. 传输层,相当于 TCP/IP 的传输层
  5. 会话层,维护网络中的连接状态
    1. 保持会话和同步
  6. 表示层,把数据转换为合适、可理解的语法和语义
  7. 应用层,面向具体的应用传输数据

    两个分层之间映射关系

    网络分层模型 - 图3

    TCP/IP协议栈工作方式

    HTTP 协议的传输过程就是这样通过协议栈逐层向下,每一层都添加本层的专有数据,层层打包,然后通过下层发送出去。
    接收数据则是相反的操作,从下往上穿过协议栈,逐层拆包,每层去掉本层的专有头,上层就会拿到自己的数据。

但下层的传输过程对于上层是完全“透明”的,上层也不需要关心下层的具体实现细节,所以就 HTTP 层次来看,它不管下层是不是 TCP/IP 协议,看到的只是一个可靠的传输链路,只要把数据加上自己的头,对方就能原样收到。
网络分层模型 - 图4


总结

  1. TCP/IP 分为四层,核心是第二层的 IP 和第三层的 TCP,HTTP 在第四层
  2. OSI 分为七层,基本对应 TCP/IP,TCP 在第四层,HTTP 在第七层
  3. OSI 可以丢失一、五、六层来映射到 TCP/IP。
  4. 日常交流常用使用 OSI 模型、四层、七层术语
  5. HTTP 利用 TCP/IP 协议栈逐层打包再拆包,实现数据传输。但下面的细节并不可见。