Notes on Network Protocol Overview
Mar 7, 2019#Network
网络协议大致框架 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 地址的合法租用信息和其他配置信息。