美文网首页
HTTP从浏览器(客户端)到服务器,发生了什么?

HTTP从浏览器(客户端)到服务器,发生了什么?

作者: 软萌白甜Hedy | 来源:发表于2019-08-10 23:57 被阅读0次

  在我还没有开始接触计算机和编程的时候,虽然天天上网,但仅限于输入网址→回车键→等待结果的不走心过程,脑子里从未思考过,网络上的信息传递到底经历了怎样的过程,才把结果呈现在我眼前,今天就让我们都用程序员的眼和脑来梳理一下背后的过程。

从网址到真正的IP地址

输入网址:https://www.jianshu.com/p/4aa3bb16f36c
  一般情况下,网络上输入的地址都称为网址,官方的名字叫URL(Uniform Resource Locator,统一资源定位符),完整的URL的完整格式包括:协议名://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件/文件名.后缀?参数=值#标志,之所以使用它也是为了便于非专业人士记忆,就用刚刚的网址为例,它的组成包括了:
协议名称:https,每个协议有自己固定的通讯规则,所以协议主要规定了浏览器通过何种内容格式来获取想要的文件。
网络地址:www.jianshu.com(依次为 子/三级域名.二级域名.顶/一级域名),网络地址指示目标资源所在的服务器,也可用IP地址+端口号表示。
资源路径:/p/4aa3bb16f36c,以“/”开始,说明目标资源放在服务器的具体的位置,类似我们的文件路径。
  将上述地址输入完毕后,浏览器首先会查看浏览器缓存,若未找到对应的IP地址,则会查看系统缓存里的host文件,会再去查找路由器缓存,若还是未找到,则通过查询DNS服务器将网址转换成网络便于读取的IP地址,这一步也叫DNS解析服务。

建立TCP连接

  HTTP协议的底层依靠的是TCP连接,所以查到真正的IP地址后,浏览器会跟服务器之间建立TCP连接,TCP连接是一种面向连接的,可靠的传输协议,所以它的建立需要先进行“三次握手”,三次握手在专门讲TCP/IP协议的部分已经讲过,在此不再赘述,配置网上找的简图一张:


三次握手.png
浏览器向服务器发送HTTP请求

  HTTP是网络模型里应用层的协议,HTTP协议有一套自己的通讯规则,所以在TCP建立之前,浏览器会按照http协议的规则,将需要请求的内容生成HTTP报文的格式,以这种统一规划的报文形式在网络里传输。当TCP连接的三次握手完成,代表TCP连接成功建立,浏览器就会将HTTP请求的报文发送给服务器。请求报文的格式可以大致划分为请求头和请求体,请求头包含了关键的信息:协议名称,请求方法(常用为post和get),目标URL,请求返回是否需要缓存,客户端是否需要cookie等。
  按照网络模型的层次划分,HTTP协议处于应用层,在浏览器客户端的这一层来说,应用层的下面依次还有传输层(TCP),网络层(IP),数据链路层和物理层,浏览器生成的HTTP协议会在TCP连接建立好后,会加上TCP/IP两层的报文首部,IP协议的作用是把TCP分割好的数据包包装好发送给接收方,但保证数据准确送达还有需要MAC地址(物理链路层唯一性),经过ARP协议,将IP地址转换成MAC地址,拥有TCP/IP首部的数据包经由物理链路层、物理层,传给MAC地址显示的目标地。

服务器接收HTTP请求

  数据包到达服务器会按照物理层、数据链路层、网络层、传输层、应用层的顺序将数据包恢复到HTTP报文的格式。

服务器响应HTTP请求并返回浏览器

  服务器上的操作系统发现Tomcat监听8080端口,所以操作系统会将HTTP报文传给Tomcat,Tomcat是一个servlet容器,所谓servlet,它是运行在Web服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。Tomcat在收到HTTP请求的报文并解析后,会生成HttpServletRequest和HttpServletResponse两个对象,HttpRequestServlet封装HTTP报文的请求资源,Tomcat将HttpServletRequest对象传递给Servlet,并通过Servlet的service()方法处理请求(诸如访问数据库之类),生成的结果将由HttpServletResponse传给Tomcat,Tomcat获取内容,会生成一个HTTP响应体,响应体(包含协议版本,状态码,响应数据等)会经由服务器端的封装,经由TCP/IP,回到浏览器,浏览器再经过一层层解析,最后将响应数据渲染成页面。

关闭TCP连接

  浏览器完成了一次完整的请求并收到回复,此时,TCP连接等待下一次请求或选择关闭连接,若需要关闭连接,则通过四次挥手关闭,简图如下:


四次挥手.png

相关文章

  • HTTP从浏览器(客户端)到服务器,发生了什么?

      在我还没有开始接触计算机和编程的时候,虽然天天上网,但仅限于输入网址→回车键→等待结果的不走心过程,脑子里从未...

  • HTTP状态查询

    列举HTTP服务器状态,方便以后查询,理解浏览器发生了什么 100客户端应当继续发送请求。这个临时响应是用来通知客...

  • HTTP

    HTTP本身是一个协议,是从web服务器传输超文本到本地浏览器到传递协议 HTTP只能有客户端发起,服务端返回结果...

  • http请求生命周期流程

    HTTP 请求/相应 1、客户端连接到Web服务器 一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口...

  • http 报文 和 请求方法

    HTTP的报文结构 HTTP有两类报文结构 请求报文-从客户端向服务器发送请求报文 响应报文 - 从服务器到客户端...

  • http1.x 与 http2.0 区别

    HTTP 概述 Http 的建立使客户端浏览器与服务器能够进行交互的能力。从1991年的http0.9、1996年...

  • http协议

    http协议:对浏览器客户端和服务器之间数据传输的格式规范 http请求:浏览器 -> 服务器端 http响应:服...

  • http缓存机制

    什么是http缓存 当客户端向服务器请求资源时,会先抵达浏览器缓存,如果浏览器有“要请求资源”的副本,就可以直接从...

  • 从输入网址到浏览器返回内容(一),服务器处理篇

    本文基于从输入网址到浏览器呈现页面内容,中间发生了什么?整理而得。 从输入网址到浏览器返回内容 浏览器与服务器建立...

  • Tomcat总体架构与核心配置详解

    1.浏览器访问服务器的流程 b/s(浏览器/服务器模式) 浏览器是客户端(发送http请求) ———> 服务器端 ...

网友评论

      本文标题:HTTP从浏览器(客户端)到服务器,发生了什么?

      本文链接:https://www.haomeiwen.com/subject/svdcdctx.html