• 浏览器输入www.baidu.com的请求过程是怎么样的? 响应的过程是怎样的呢?


    假设我们电脑的相关配置为:
    ip地址:192.168.31.37
    子网掩码:255.255.255.0
    网关地址:192.168.31.1
    DNS地址:8.8.8.8

    1. DNS 解析

    我们打开一个浏览器,请求ww.baidu.com地址,这个时候找DNS 服务器。 DNS 服务器解析域名之后,返回一个 IP 地址,比如 172.194.26.108 。接看会判断两个 IP 地址是不是一个子网的,用子网掩码 255.255.255.0 ,对两个IP地址做与运算,拿到192.168.31.0172.194.26.0,明显不是一个子网的。

    DNS 解析

    那就得发送一个数据包给网关,其实你就认为是我们的路由器吧,就是 192.168.31.1,而且我们是可以得到网关 IP地址的 mac 地址的,现在我们从应用层出发,通过浏览器访问一个网站,是走应用层的 http 协议的。

    2. 发送http请求

    http 协议分为几个部分:
    请求方法+URL地址+http版本,如:GET http://172.194.26.108/test HTTP/1.1,
    请求头:

    Host:upload.guangzhou.io
    Proxy-Connection: keep-alive
    User-Agent: Mozilla/5.0
    
    空行
    
    请求体:比如常见的可以放一个json串
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    由此就构成了http请求报文;

    3. 请求传递的过程

    浏览器请求一个地址,先按照应用层的http协议,封装一个应用层数据包,数据包里就放了http请求报文
    这个时候会将这个http请求报文打包成一个数据包,仅仅只是数据包的数据部分,此时是数据包是没有头的。上面根据http协议搞一个http请求报文,然后搞一个数据包出来,就是网络模型中到的应用层干的事儿了。

    接着就是跑传输层来了,这个层是tcp协议,这个tcp协议会让你设置端口,发送方的端口随机选一个,接收方的端口一般是默认的80端口。这个时候,会把应用层数据包给封装到tcp数据包中去,而且会加一个tcp头,这个tcp数据包是对应一个tcp头的,这个tcp头里就放了端口号信息。

    接着就来到了网络层,走的是ip协议,会把tcp头和tcp数据包封装到以太网数据包里去,然后再加上一个ip头,ip头里有本机和目标机器的ip地址,这里的本机ip地址为192.168.31.37,目标机器ip地址为172.194.26.108;
    接着就来到了数据链路层,走的是以太网协议,会把ip头和ip数据包封装到以太网数据包里去,加上一个以太网数据包的头,里面包含本机网卡的mac地址,网关的mac地址。

    在这里插入图片描述

    之后一个以太网数据包会被切割为4个数据包,每个数据包里包含以太网头,ip头和切割后的ip数据包。ip头里包含了每个数据包的序号,这4个以太网数据包通过交换机发到你的网关上,然后你的路由器可以联通别的子网,将数据包转发到别的子网的路由器里去,最后到达百度的某台服务器机器;

    在这里插入图片描述百度服务器接收到4个以太网数据包以后,根据ip头的序号,把4个以太网数据包里的ip数据包给拼起来,还原成一个完整的ip数据包。接着从ip数据包里拿出tcp数据包,再从tcp数据包里拿出http数据包,读取出http数据包里的各种协议内容,转给服务器上部署的系统去执行,把结果进行响应。

    在这里插入图片描述

    参考

    https://blog.csdn.net/weixin_44811851/article/details/121877358

  • 相关阅读:
    Android RecyclerView 两种以上ViewHolder显示错乱
    k8s核心操作_k8s中的存储抽象_基本概念与NFS搭建_Deployment使用NFS进行挂载---分布式云原生部署架构搭建028
    【RL+Transformer综述】A Survey on Transformers in Reinforcement Learning论文笔记
    发现安全漏洞后需要怎样进行漏洞的生命周期管理
    学习笔记-FRIDA脚本系列(二)
    【运维日常】mac刻录ubuntu系统进U盘,插入服务器安装系统
    sql语法复习
    Windows Server 2012 R2系统 修改远程登陆密码
    Python SSL操作手册
    【Mysql】 InnoDB引擎深入- 二级索引、联合索引、回表、索引覆盖
  • 原文地址:https://blog.csdn.net/agonie201218/article/details/128010236