数据包称谓

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。

参考链接

自顶向下看网络模型


物理层

  • 负责 0/1 电信号的传输

    物理介质

    网线、光缆啥的

数据链路层

  • 规定一组 0/1 电信号的分组方式。采用 以太网协议
  • 以太网协议,依靠MAC地址发送数据。

    以太网协议

  • 一组 0/1 电信号为一帧、即数据帧(Frame)

    • 包含标头数据 部分
    • 标头 包含数据包的一些说明项,比如发送者、接收者、数据类型等等;长度,固定为18字节。
    • 数据 则是数据包的具体内容。长度,最短为46字节,最长为1500字节。
      • 如果数据很长,就必须分割成多个帧进行发送。

        mac 地址

  • 标识网卡的物理地址

  • 长度是48个二进制位,通常用12个十六进制数表示

    • 前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。有了MAC地址,就可以定位网卡和数据包的路径了。

      广播

  • 数据包不会精准投放

  • 以太网规定只会向同一子网(即同一局域网)内将数据包进行广播
    • 让网络中各个计算机自己判断该数据包是否是发给自己的

物理介质

  • 交换机

网络层

  • 建立 主机到主机 的通信
  • 解决不同子网下的数据通信
    • 以太网协议是依托 MAC 地址发送数据包
    • 以太网又只会向同一子网将数据包进行广播
  • 可以采用 ip 确定网络地址 + MAC 确定物理地址的方式进行数据传输

  • 数据传输方式

    1. MAC 地址属于同一子网,广播方式发送
    2. MAC 地址属于不同子网,路由方式进行发送

如何判断是否同一个子网

  • ip + 子网掩码确定网络地址

    ip 协议

  • ip + 子网掩码 进行目标地址匹配 —> ip 协议 作用在这一层

    • ip 有 32 位
    • ip 与 子网掩码 进行二进制与运算网络部分相同,则表明属于同一个子网(局域网)
      • 子网掩码为1的部分就是用来判断网络地址
  • IP协议的作用主要有两个

    • 为每一台计算机分配IP地址
    • 确定哪些地址在同一个子网络。

      ip 数据包

  • ip 数据包也分为 标头数据

    • 放在以太网数据帧的 数据 部分内
    • 标头 部分主要包括版本、长度、IP地址等信息。长度为20到60字节
    • 数据 部分则是IP数据包的具体内容。长度最长为 65515 字节
      • ip 数据包的总长度最大为 65535 字节
      • 由于以太网的 数据 部分最长是 1500 字节,所以会分为多个以太网数据包

ARP协议

  • 上面说过,将数据传输到目标网卡,需要 ip 确定网络地址 + MAC 确定物理地址
    • ip 一般是确定的,但是 MAC 不一定
  • 分发送方接收方是否同一网络区分
    • 同一网络
      • 会发送一个 ARP 请求帧
        1. 源主机根据自己的路由表内容,确定数据包要转发的 ip 为目标 ip,会从本地的 APR 缓存中检查是否有匹配到的 MAC 地址
        1. 源主机如果没有找到映射会发送一个ARP请求数据帧,将包含自己的ip目标 ip 的ARP请求广播(使用MAC = 0x FF.FF.FF.FF.FF.FF 表示广播)到局域网络上的所有主机
        1. 同一子网中的各个主机判断ip并且进行判断,目标主机确定 ARP 请求中的 ip 地址和自己的一致,则将源主机的 ip 地址 和 mac 地址映射添加到本地 ARP 缓存中;非目标主机发现不匹配,会丢弃 ARP 请求
        1. 目标主机将包含自己的 MAC 地址的 APR 回复信息发回源主机
        1. 源主机收到返回消息后将目标IP地址和 MAC 地址存入本机ARP缓存中并保留一定时间(生存期),下次请求时直接查询ARP缓存以节约资源。
    • 不同网络
      • 通过交换机将数据包交给连接不同子网的网关(比如路由器)进行处理
        • 源主机将自己的 ip 地址目标主机 ip 地址 写入数据包中,而目标 MAC 地址为同一网段的网关的 MAC 地址(表明交给路由器)
        • 路由器接收、判断数据包后,根据自己的ARP映射表将目标主机 ip 地址对应的 MAC 地址写入头部,通过目标主机的子网的交换机进行广播通知
        • 可能会出现通过多个网关进行多次转发
      • 网关会存储多个子网的交换机的地址

物理介质

  • 路由器

传输层

  • 同一主机不同端口如何通信
    • 即是建立 端口到端口 的通信
  • 为数据帧加入 端口 信息,即新的协议

UDP

  • 最简单的协议

    UDP 数据包

  • 数据包也分为 标头数据

    • 放在ip数据帧的 数据 部分内
  • 标头 部分主要主要定义了发出端口和接收端口。长度为 8 个字节
  • 数据 部分则是数据包的具体内容。
  • udp 数据包的总长度最大为65535字节

TCP

  • 它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。

    TCP 数据包

  • 数据包也分为 标头数据

    • 放在ip数据帧的 数据 部分内
  • 标头 部分主要主要定义了发出端口和接收端口。长度为 20 个字节
  • 数据 部分则是数据包的具体内容。
  • tcp 数据包的总长度理论上无限

应用层

  • 规定应用程序的数据格式。

HTTP 协议

  • http 协议走这一层

疑问

  1. 发送请求前,源主机会先判断请求是否为同一子网,是就发送 ARP 请求,否则直接转发请求给网关(会用到MAC地址?