从输入网址到看到网页
当我们上网的时候,会在浏览器里输入一个URL地址,也就是我们俗称的网址,比如www.baidu.com。然后敲一下回车,百度的首页就展示在浏览器上了,今天我们就来分析一下,从敲击回车按钮到百度首页展示,这中间到底发生了什么。
基本过程
- DNS解析
- TCP链接
- 发出http请求
- 服务器接受http请求并返回处理结果
- 浏览器接受服务器的返回结果并解析展示
- 链接结束
DNS解析
DNS解析的过程就是将你输入的网址指向它所对应的计算机的ip地址,当我们输入www.baidu.com时,DNS会将这个网址解析成它对应的计算机ip地址,例如100.20.201.33,这个ip地址对每台计算机来说都是唯一的。
TCP链接
当浏览器的请求到达服务器之后,tcp会在双方之间建立一个通信通道,使得双方可以进行通信,这部分内容不是很熟悉,所以就不深入去描述了。
发出http请求
这部分的工作是有客户端完成的,也就是浏览器,浏览器构建http请求报文通过tcp协议发送给浏览器的过程就是http请求。http请求主要由三部分组成:请求行、请求报头和请求正文
下面的部分是请求报头
在这个过程中还会涉及到请求的方法,常用的请求的方式有GET POST DELETE PUT 这些方法之间的区别在这里就不展开叙述了。这时候,我们的请求就通过浏览器发送出去了。
服务器接受请求返回结果
自然而然这部分对应的就是后端工程师眼中的HTTP。后端从在固定的端口接收到TCP报文开始,它会对TCP连接进行处理,对HTTP协议进行解析,并按照报文格式进一步封装成HTTP Request对象,供上层使用。这一部分工作一般是由Web服务器去进行,比如apache、nginx、tomcat等。
HTTP响应报文也是由三部分组成:状态码,响应报头和响应报文。
状态码
状态码是由3位数组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息–表示请求已接收,继续处理。
2xx:成功–表示请求已被成功接收、理解、接受。
3xx:重定向–要完成请求必须进行更进一步的操作。
4xx:客户端错误–请求有语法错误或请求无法实现。
5xx:服务器端错误–服务器未能实现合法的请求。
平时遇到比较常见的状态码有:200, 403, 404 500
响应报头
上面的部分就是响应头
响应报文
服务器返回给浏览器的文本信息,通常HTML, CSS, JS, 图片等文件就放在这一部分。
浏览器解析响应报文
浏览器会将接受到到html,css,js进行解析,然后将它们展示在页面上,当然,这部分的过程也有很多可以探究的内容,这里就不详细的描述了。
链接结束
当所有内容都返回给客户端之后,客户端和服务端的链接就关闭了,因为http是无状态的,如果再次请求,就需要重新建立链接。
在这些流程全部完成后,我们就看到我们想要看到的内容了。写的有点简单了,也参考了一些优秀的博客作者的文章。