在浏览器中输入网址查找一般会分为一下几个步骤:
- DNS域名解析
- TCP连接
- 发送HTTP请求
- 服务器处理请求并返回HTTP报文
- 浏览器显示页面
- TCP断开连接
一、DNS域名解析
当你在浏览器中输入一个网址的时候,这个网址其实并不是真正意义上的网址。互联网上唯一标识一台计算机的标识是IP地址,DNS域名解析的作用就是把网址转换成IP地址。
在这里一般来说会先查找本地的硬盘的hosts文件,如果hosts文件里面有这个对应的IP地址,就直接使用。如果没有,就会向本地的DNS服务器发出DNS请求,在本地的DNS服务器缓存中查询到这个对应的IP地址,就直接使用。如果还是没有,那本地DNS服务器会向域服务器发出请求,直接返回对应的IP地址。
接下来有IP地址了,那就要简历连接了。
2.TCP连接
TCP连接就是所谓的三次握手了,通过三次握手创建一个有连接的、可靠的、流式服务连接。详细请看https://blog.csdn.net/choudan8888/article/details/86369281
里面有详细的三次握手的过程。
3.发送HTTP请求
在完成练级之后,客户端就要像服务器发送HTTP请求,请求的内容包括三点:
- 请求行
- 请求头
- 请求体
请求行:方法+地址+http版本 例如:PUT www.1097501616@qq.com HTTP/1.1
请求头:请求头是指客户端像服务器传递亲求的附加信息和客户自身的信息。
常见的请求包头有:
Accept:浏览器能够处理的内同类型
Accept-Charset:浏览器能够显示的字符集
Accept-Encoding:浏览器能够处理的压缩编码
Accept-Language:浏览器当前设置的语言
Connection:浏览器与服务器之间连接的类型
Host:发出请求的页面所在的域
Cookie:当前页面设置的任何Cookie
请求体:使用POST,GET等方法时,通常需要客户端向服务器传递一些参数数据时,这些数据就存储在请求体中
4.服务器处理请求并返回HTTP报文
服务器处理玩HTTP请求之后会做出相应,响应内容包括三点:
- 响应行
- 响应头
- 响应体
响应行:包含HTTP版本+状态码+状态描述
状态码
状态码有5中可能取值
1xx:指示信息——请求已接受,继续处理
2xx:成功——成功处理了请求的状态码
200:服务器成功处理了请求并提供服务
204:服务器成功处理了请求,但是没有返回任何内容
3xx:重定向——要完成请求必须进行更进一步的操作,重定向不要超过5次
301:请求的网页已永久移动到新位置
302:请求的网页临时移动到新位置
304:如果网页自请求者上次请求之后没有更新,则用301状态码告诉引擎机器人,可以节省带宽
4xx:客户端错误——请求有语法错误或请求无法实现
400:服务器不理解请求的语法
403:服务器拒绝请求
404:服务器找不到请求的页面
410:请求的资源永久删除后,服务器返回此响应
5xx:服务器端错误——服务器无法处理客户端的请求,这些错误是服务器本身的错误。
500:服务器遇到错误,无法完成请求
503:服务器目前无法使用(由于超载或停机维护)。
响应头:与请求头类似,为响应报文添加了一些附加信息。
常见的响应头:
Date:表述消息发送的时间
server:服务器名字
Connection:浏览器和服务器之间连接的类型
Content-type:表述后面的文档属于什么MIME类型
响应体:服务器返回给客户端的文本信息,通常后端返回的数据以HTML,CSS,JS图片等文件就放在这部分
5.浏览器解析渲染页面
浏览器在手法哦HTML,CSS,JS文件后,它将这些信息渲染到客户端页面上。
6.关闭TCP连接
关闭TCP连接就是四次挥手的过程,详细了解可以点击下面网址:https://blog.csdn.net/choudan8888/article/details/86369281