协议那些事(一)

以下单流程为例

  • 当我们在浏览器中输入一串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的包 返回给浏览器 告知操作成功

各层涉及到的主要协议如图

原文地址:https://www.cnblogs.com/Alicia-meng/p/14239698.html