协议那些事(一)
以下单流程为例
-
当我们在浏览器中输入一串URL https://cn.bing.com/, 浏览器其实只知道名字 cn.bing.com 并不知道具体的地点 不知如何访问 于是通过地址簿去查找
于是需要了解--地址簿协议- 一般使用 DNS
- 更为精准的则是 HTTPDNS
-
无论使用哪种协议 最终都会获得一个唯一IP 也就是我们的目标地址 知道了目标地址 浏览器开始打包请求 假设我们发送了一个下单请求
这里就又要使用--传输协议了- 通常使用HTTP协议
- 但是如果需要加密传输 比如购物请求 我们则使用的是HTTPS协议
无论使用哪种传输协议 协议都会包含请求内容 通常格式如下
-
DNS/HTTP/HTTPS所在层 既是应用层 请求在应用层被封装成包后 便交由下一层去处理 也就是传输层 这一步通常使用socket编程来实现
而传输层主要协议有- 无连接协议UDP
- 面向连接协议TCP 【会确认连接 如果没收到确认 则会重复发送( 这里重复发送的不是下单请求 而是连接确认 除非TCP连接断开 浏览器应用层才会重新发送下单请求 )直到收到确认 所以我们通常也称这个为安全连接】
TCP协议包含两个端口
- 浏览器监听端口
- 电商服务器监听端口
操作系统会根据端口来判断 得到的包应该给哪个进程 于是请求包又被包了一层 如下
- 这里传输层完成封装后 浏览器便将包交由网络层 网络层使用IP协议 即会标明源IP(客户端IP) 和目标IP(电商服务器IP)
于是包再次被封装 如下
操作系统会辨别目标IP是在本地还是外地 如果目标IP在外地 我们则要通过网关 【操作系统启动时就会被DHCP配置Ip地址 以及默认的网关IP】
那操作系统又是怎么发送消息给网关的呢 则是通过ARP协议 发布消息 网关订阅消息 接到消息后网关会告知操作系统自己的MAC地址
- MAC地址:MAC地址全球唯一 固化在网卡里 【网卡是硬件 需要软件支持即操作系统识别 识别出来就是一个字符串 于是MAC地址可修改--修改注册表中的记录】
于是包又被封装了一层 如下
然后操作系统就将包交给了MAC层 网卡再通过包里网关的MAC地址 找到网关【通常是一个路由器 由一个路由表 决定IP走向】
网关也不是一下子就跳转到目的地 通常需要几次跳转(通过MAC地址)才能到达 而如何跳转
则又用到了路由协议- OSPF
- BGP
- 接着目标服务器终于发现了MAC地址是找自己的 于是取下包的MAC头 交给本机操作系统的网络层 进行IP核对 核对上后就取下包的IP头 交由传输层即TCP层 TCP层会原路回复一个包 表明确认连接
- 接着网络包就平安到达了TCP层 TCP层中包含目标端口号 而这个端口号 是被电商网站进程监听的 网站监听到下单请求后 再告诉相关进程 比如扣减库存 支付等进程 【进程间的交流可以通过RPC GRPC Webapi】
- 最后电商网站处理完毕 就会回复一个HTTPS的包 返回给浏览器 告知操作成功