网络协议大致框架 from 极客时间 - 趣谈网络协议

客户端

  • 应用层

    浏览器输入网址,DNS 查找目标 IP。HTTPS 协议打包请求信息。此处包含 HTTP 头和报文信息。

  • 传输层

    通过 socket 编程来实现 TCP ( 面向连接 ) 和 UDP 两种协议。TCP 头包含客户端和服务器监听端口。如果发生丢包,客户端会发包重试。

  • 网络层

    操作系统的网络层使用 IP 协议封装 IP 头,包括客户端和服务端 IP。

  • 数据链路层

    操作系统通过 ARP 协议查找网关 MAC,封装 MAC 头,包括客户端 MAC 和网关 MAC.

  • 物理层

    通过路由协议寻找目标服务器 IP 以及 MAC 地址

服务端

和客户端相反的方向,服务器校验 MAC 地址正确,取 MAC 头,然后交给操作系统网络层检验 IP ,取 IP 头,再交给传输层,即 TCP 层。这一层里服务端收到的每一个包都要原路返回回复给客户端。TCP 头中包含服务器的端口号,找到服务端的进程对请求处理(此处处理往往通过 RPC 即远程调用方式来实现不同进程间调用通信)。最后再将处理结果原路返回给客户端浏览器。

网络分层的理解

  • 只要在网络上跑的包,都是完整的可以有下层没上层,绝不可能有上层没下层
  • 二层设备收到的是整个网络包。包括 HTTP, TCP, IP, MAC都有。二层设备只把 MAC 头摘下来,看看到底是丢弃、转发、还是自己留着。二层设备是工作在数据链路层的设备,通常是交换机,可以通过地址表确定 MAC 地址和对应端口。如果都不存在会更新地址表。
  • 三层设备就是把 MAC 头摘下来之后,再把 IP 头摘下来,看看到底是丢弃、转发、还是自己留着。三层设备是工作在网络层的设备,通常是指路由器。

ifconfig

  • IP 是地址,有定位功能; MAC 是身份证,误定位功能
  • CIDR 无类型域间选路。把 IP 分为网络号和主机号,中间斜杠 / 区分
  • IP 分公有 IP 和私有 IP

DHCP ( Dynamic Host Configuration Protocol )

动态主机配置协议。新机器加入会发送一个广播包,里面封装了 MAC 头,IP 头,UDP 头,BOOTP 头,以及请求内容。MAC 地址是唯一的身份,可以确定是否需要分配新的 IP。DHCP server 会广播返回消息包。包括 MAC 头,IP 头,UDP 头,BOOTP 头,同时包含新 IP 地址的合法租用信息和其他配置信息。