HTTP工作流程
来源:互联网 发布:windows好用的v翻墙 编辑:程序博客网 时间:2024/06/05 15:10
大致流程是:
1. 由http客户端发起一个请求,创建一个到服务器指定端口(一般是80端口)的tcp连接。
2. http服务器就在端口监听客户端的请求。
3. 一旦收到请求,http服务器向客户端返回状态和内容。
详细来看一下http走过的环节:
从输入网址到页面完全渲染,计算机和浏览器做过很多事情,以在chrome浏览器中搜索www.baidu.com为例。
第一步:域名解析(将域名解析为IP地址)。(如果找到相应的缓存则停止搜索,域名解析到此结束)
1. chrome搜索自身的DNS缓存。 //这个缓存的时间大概有一分钟 chrome://net-internals/#dns
2. 搜索操作系统自身的DNS缓存。(如果浏览器自身的DNS缓存不存在或已经失效)
3. 读取本地的HOST文件。(如果操作系统自身的DNS缓存没有找到)
4. 浏览器发起一个DNS的一个系统调用。即是向本地DNS主控服务器(一般是你的宽带运营商提供的)发起一个域名解析请求。(如果本地HOST中没有找到相应的配置项)
这个过程有分为几步:
(1)宽带运营商服务器查找自身缓存。如果找到对应的条目,并且也没有过期,那么解析也就成功了。
(2)运营商服务器代替浏览器发起一个迭代的DNS解析请求。(如果运营商服务器在自身的DNS缓存中没有找到有效的DNS缓存)
什么是迭代的DNS解析请求呢?首先运营商服务器会到根域的DNS服务器查找baidu.com的IP地址,在这里找到了com域的IP地址,然后又到com域的DNS服务器查找baidu.com的IP地址,在这里找到baidu.com域的IP地址,然后又到baidu.com域的DNS服务器里找到了www.baidu.com的ip地址(由域名注册商提供)。
运营商DNS服务器将拿到的结果返回给操作系统内核同时也缓存在了自己的缓存区。
操作系统内核然后将结果返回给了浏览器。
最终浏览器拿到了www.baidu.com对应的IP地址。
第二步:建立TCP/IP连接(即客户端与请求的URL地址取得连接)
XMLHttpRequest对象通过open方法打开与请求URL地址的连接。
5. 浏览器获得域名对应的IP地址后,就发起http“三次握手”,建立起TCP/IP连接。
浏览器就会以一个随机端口向服务器的web程序发起一个TCP连接请求,这个连接请求通过层层的路由设备到达了服务器端以后,进入到网卡,然后进入到内核的TCP/IP协议栈,还可能要经过防火墙的过滤,最终达到了web服务端。然后就建立起了这个TCP/IP的连接。
具体这三次握手干了啥事?
第三步:发送HTTP请求
XMLHttpRequest对象通过send方法发送请求。
6. TCP/IP连接建立起来后,浏览器就可以向服务器发送一个HTTP请求了。例如用http的GET方法请求一个根域里的一个域名,协议可以使用HTTP 1.0 。
第四步:服务器端处理请求并返回响应
7. 服务器端接收到请求,根据路径参数,经过后端的一些处理,然后把处理后的一个结果数据返回给浏览器。如果请求的是百度的页面,就会把完整的HTML页面代码返回给浏览器。
8. 浏览器在拿到该网页完整的HTML代码,在解析和渲染这个页面的时候,里面的JS、CSS、图片静态资源,它们同样也是一个个HTTP请求,都需要经过上面主要的七个步骤。
9. 浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现给了用户。
视频资源参考http://www.imooc.com/learn/348
- http服务器端工作流程
- HTTP工作流程
- HTTP的工作流程
- http协议工作流程
- HTTP工作流程
- http 工作流程
- HTTP--WWW服务工作流程
- http协议概念及其工作流程
- 简述HTTP网络协议工作原理的流程
- 工作流程
- 工作流程
- 工作流程
- 工作流程
- 工作流程
- dalvik虚拟机的工作流程(转http://blog.csdn.net/wsh604/article/details/7452726)
- 【HTTP】Web服务器工作流程小结--从建立连接到日志记录
- struts2工作原理 工作流程
- flash工作流程设计
- Centos7.0 PHP5.3以上连接SqlServer2008
- 第三周项目1-个人所得税计算器(if语句的嵌套)
- 子贡赎人
- C Looooops poj 2115 扩展欧几里得
- OKHttp源码解析
- HTTP工作流程
- OkHttp使用教程
- 允许超时的互斥量
- 常用Maven收集以及Maven技巧
- mybatis 批量insert,update
- tableView分组 头部悬停
- std::map 删除指定条件的元素
- hadoop系列文档3-配置Hdfs高可用HA
- Oracle回收站操作