游览器发起一次HTTP请求到网站呈现在游览器界面都发生了些什么?

[参考原文] [1] [参考译文] [2]
[1]: http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/
[2]: http://blog.csdn.net/wuhenliushui/article/details/20038819


1.输入网址

在游览器输入一个网址,游览器会根据你的网址找到对应的IP地址,域名到IP地址的转换是通过DNS服务器,游览器缓存,系统缓存一般会记录域名对应的IP地地址段时间,详细可以查看参考文章。


2. 游览器和服务器建立一个TCP连接

TCPTransfer Control Protocol,采用三次握手建立一个连接

第一次握手:主机发送位码为syn=1,生成随机数seq number=RanNum的数据包到服务器,服务器由syn=1知道主机要求建立连接。
第二次握手:服务器发送ack number=RanNum+1,syn=1,ack=1,生成随机数seq=RanNumServer的包
第三次握手:主机收到ack number后确认其是否正确以及位码是否为1,若满足,再发送ack number=RanNumServer+1,ack=1到服务器,服务器确认ack number和ack=1后完成三次握手。


3. 游览器给web服务器发送一个HTTP请求

HTTPHyper Text Transfer Protocol(超文本传输协议)的缩写,用于从万维网服务器传输超文本到本地游览器的传送协议,是基于TCP/IP通信协议来传递数据的。
那么一个HTTP请求都包含哪些信息呢?
首先是请求方法,比如GET POST等,然后是请求URL,还有HTTP协议的版本,这三部分归为请求行。
然后是请求头部,这部分是以KEY:VALUE的形式存在于请求消息中的,根据需要有许多请求头部可以选择。
再后面就是cookie,游览器保存了用户和网站之间联系的信息就是通过cookie

HTTP请求方法:
HTTP1.0定义了三种请求方法:GET, POSTHEAD方法。
HTTP1.1新增了五种请求方法:OPTIONSPUT, DELETETRACECONNECT方法。


GET 请求指定的页面信息,并返回实体主体。HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE 请求服务器删除指定的页面。
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器的性能。
TRACE 回显服务器收到的请求,主要用于测试或诊断。


4. 服务器响应HTTP请求

服务器响应包含状态行,响应头和相应正文,状态行包含了HTTP协议版本,状态码。响应头和请求头类似,内容是关于本次响应的一些信息。
然后就是响应正文了,基于是图片,文件或者页面等。


5. 游览器显示响应正文

这里就是用户在游览器看到的网站页面了。

你可能感兴趣的:(游览器发起一次HTTP请求到网站呈现在游览器界面都发生了些什么?)