向浏览器输入网址,到完成请求的整个过程

简介: 向浏览器输入网址 http://www.baidu.com/查询本地计算机有没有存储域名baidu.com 对应的服务器IP, 如果存储了,浏览器直接向目标服务器发起三次握手的连接请求;如果没有存储, 则向DNS服务器发起"查询baidu.
    1. 向浏览器输入网址 http://www.baidu.com/
    1. 查询本地计算机有没有存储域名baidu.com 对应的服务器IP, 如果存储了,浏览器直接向目标服务器发起三次握手的连接请求;如果没有存储, 则向DNS服务器发起"查询baidu.com对应服务器IP"的请求, DNS服务器返回baidu.com对应的目标IP后, 向目标IP发起三次握手的连接请求,如果连接成功,则在本地备份目标IP

将请求发送到目标IP的具体细节(为什么MAC地址与IP地址缺一不可) : 在OSI七层协议中MAC地址属于第二层数据链路层, IP地址属于第三层网络层, 浏览器发出的请求时, 会发起ARP广播, 查询本地网络中,是否存在目标IP主机, 如果存在, 直接将浏览器请求的MAC地址定为目标IP主机的MAC地址, 如果不存在, 则将浏览器请求的MAC地址定为本地网络环境中路由器A的MAC地址, 路由器A会将浏览器请求转发到另一个网络的路由器B(请求的mac地址被修改, 修改为路由器B的mac地址), 路由器B子网内如果存在目标主机IP, 则直接将浏览器请求的ip地址修改为目标主机的MAC地址, 如果不存在, 则转发给浏览器C, 通过不断地修改请求MAC地址完成了浏览器请求在互联网内的层层接力,最终到达目标IP主机

请求与响应

    1. 服务器接收到请求后, 如果设置反向代理服务软件(如Nginx), Nginx会将请求转发到服务对应的端口(以Django服务为例, 如果Django运行在3309端口, Nginx会将请求从80端口转发到3309端口)
    1. Django接收到请求后, 中间件会对请求进行预处理, 然后请求会根据正则, 匹配主目录下的urls.py, 匹配成功后, 会将请求分发给独立的App, 在App内也含有urls.py, 通过正则匹配, 请求会被对应到App内相应的视图函数
服务器处理请求
    1. 视图函数会处理请求, 产生响应, 响应通过中间件的处理后, 离开Django, 返回给Nginx, Nginx 会将响应返回给浏览器(这里简化返回路线)

关于三次握手和四次挥手:

三次握手:

    1. 浏览器发起连接请求(浏览器: 我们明天早上8点见面, 收到请回复)
    1. 服务器接收到请求后, 返回响应(服务端: 确认收到, 我们明天早上八点见面)
    1. 浏览器发出接收到服务器响应的确认信息(浏览器: 我收到了你的确认信息!)

四次挥手:

    1. 浏览器发出断开连接的请求(浏览器: 我该问的都问完了, 没有其它的问题了)
    1. 服务端返回响应(服务端确认了浏览器不会再发送请求的信息)(服务器: 我收到了你问完了的信息了,待我把你前面的问题回答完, 我们就断开连接)
    1. 服务端发出断开连接的请求(服务器: 我把你的问题都回答完了, 你确认没有其他要问的了么?)
    1. 浏览器返回响应(浏览器确认了服务端已经将资源发送完毕的信息)(浏览器: 我没有其它要问的, 断开连接吧!)
      三次握手与四次挥手.png
目录
相关文章
|
7月前
|
测试技术
用navigator.sendBeacon完成网页埋点异步请求记录用户行为,当网页关闭的时候,依然后完美完成接口请求,不会因为浏览器关闭了被中断请求。
用navigator.sendBeacon完成网页埋点异步请求记录用户行为,当网页关闭的时候,依然后完美完成接口请求,不会因为浏览器关闭了被中断请求。
|
缓存 网络协议
DNS中电脑网址能打开,用手机浏览器不行,需要解析什么?
DNS中电脑网址能打开,用手机浏览器不行,需要解析什么?
615 1
|
1月前
|
域名解析 网络协议 前端开发
浏览器输入域名网址访问后的过程详解
1、以91处理网为例,客户端浏览器通过DNS解析到www.91chuli.com,IP地址是202.108.22.5,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到202.108.22.5,然后通过TCP进行封装数据包,输入到网络层。
67 2
|
3月前
|
Web App开发 存储 安全
Python编写脚本,打开浏览器输入网址,自动化登陆网站
Python编写脚本,打开浏览器输入网址,自动化登陆网站
171 4
|
3月前
|
JSON 前端开发 JavaScript
java中post请求调用下载文件接口浏览器未弹窗而是返回一堆json,为啥
客户端调接口需要返回另存为弹窗,下载文件,但是遇到的问题是接口调用成功且不报错,浏览器F12查看居然返回一堆json,而没有另存为弹窗; > 正确的效果应该是:接口调用成功且浏览器F12不返回任何json,而是弹窗另存为窗口,直接保存文件即可。
157 2
|
5月前
|
缓存 JavaScript 前端开发
浏览器处理预检请求的响应
浏览器处理预检请求的响应
|
5月前
|
缓存 网络协议 Java
(六)网络编程之化身一个请求感受浏览器输入URL后奇妙的网络之旅!
在浏览器上输入一个URL后发生了什么? 这也是面试中老生常谈的话题,包括网上也有大量关于这块的内容。
151 2
|
5月前
|
域名解析 Web App开发 缓存
在浏览器上输入一个网址后,发生了什么?/HTTP的工作流程/DNS域名解析过程
在浏览器上输入一个网址后,发生了什么?/HTTP的工作流程/DNS域名解析过程
Request请求转发和重定向的资源路径问题,目录到底加不加,取决于浏览器用,还是服务器用,规避项目目录发生修改,导致重定向失败
Request请求转发和重定向的资源路径问题,目录到底加不加,取决于浏览器用,还是服务器用,规避项目目录发生修改,导致重定向失败
|
6月前
|
域名解析 存储 缓存
HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口
【6月更文挑战第23天】 HTTP请求流程概览:浏览器构建请求行含方法、URL和版本;检查缓存;解析IP与端口;TCP连接(HTTP/1.1可能需排队);三次握手;发送请求头与体;服务器处理并返回响应;TCP连接可能关闭或保持;浏览器接收并显示响应,更新缓存。HTTP版本间有差异。
102 5