URL请求过程
一、URL(Uniform Resource Locator)统一资源定位符,是可以从互联网上得到的资源的位置和访问方法的一种简洁表示,是互联网上标准资源的地址。互联网上的每一个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该如何处理它。
基本URL包含模式(协议)、服务器名称(IP地址)、路径和文件名,如:协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件名后缀?参数=值#标志。我们可以把URL分割成3个部分:协议、网络地址、资源路径。
协议是从该计算机获取资源的方式,常见的是HTTP、HTTPS、FTP,不同的协议有不同的通讯)内容格式;
网络地址指示该连接网络上的哪一台计算机,可以是域名或者IP地址,可以包括端口号(默认为80);
资源路径指示从服务器上获取哪一项资源。
二、DNS(Domain Name System)计算机域名系统,它是由解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应的IP地址,并具有将域名转化为IP地址的功能的服务器。其中域名必须对应一个IP地址,一个IP地址可以同时对应多个域名,但IP地址不一定有域名。
域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。将域名映射为IP地址的过程就称“域名解析”。在Internate上域名和IP地址是一对一或多对一的关系,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,他们之间的转换工作就称为域名解析,域名解析需要专门的域名解析服务器来执行,DNS就是进行域名解析的服务器。所以在上网输入网址时域名解析系统根据你输入的域名找到相对应的IP地址,这样才能上网,总结:域名的最终指向是IP。
三、TCP三次握手连接
当DNS解析完成后我们就拥有了目标IP和端口号,浏览器知道了服务器的IP地址之后就要根服务器的IP地址之后就要跟服务器建立连接了。
浏览器先发一个报文段,告诉服务器我想上你;服务器收到了之后回复说我准备好了,可以上;浏览器收到后回复我也准备好了,并告诉服务器:你已允许我上你了。三次握手之后,TCP连接就建立起来了,这时候浏览器就可以和服务器正式通讯了,也就是开始基于HTTP协议的信息交换。
四、HTTP通信
超文本传输协议(HyperText Transfer Protocol)是互联网上应用最广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP的最初目的是为了提供一种发布和接收HTML页面的方法。HTTP规定了客户机和服务器之间沟通的语言和规则
五、Servlet(Java的一个public interface)
servlets是这个公共接口的实现,servlets接收并响应客户端的请求。
ServletContainer(Servlet容器)是Web服务器或者应用服务器的一部分用于提供基于请求/响应发送模式的网络服务,解码基于MIME的请求,并且格式化基于MIME的响应。Servlet容器同时包含和管理他们的生命周期里Servlet。
六、浏览器渲染
当服务器提供了资源之后,浏览器获得数据,渲染网页然后呈现给用户,浏览器会执行操作:解析HTML,CSS,JS 渲染:构建DOM树,渲染,布局,绘制
渲染结束后,浏览器根据某些时间机制运行JS代码或与用户交互。
URL请求过程的更多相关文章
- 一次URL请求过程--tomcat
一:请求的过程 1.DNS域名解析 2.建立TCP连接(三次握手) 3.发送请求--tomcat进行处理 4.四次挥手关闭连接 二:详解1---DNS域名解析 1.浏览器会检查缓存中有没有这个域名对应 ...
- 在浏览器中输入URL后,执行的全部过程。会用到哪些协议?(一次完整的HTTP请求过程)
在浏览器中输入URL后,执行的全部过程.会用到哪些协议?(一次完整的HTTP请求过程) 整个流程如下: 域名解析 为了将消息从你的PC上传到服务器上,需要用到IP协议.ARP协议和OSPF协议. 发起 ...
- Objective-C中把URL请求的参数转换为字典
上一篇博客中是把URL转换为字典,那么我们如何把URL请求中的参数封装成字典,然后再封装成数组呢?对OC中字符串操作熟练的小伙伴们应该觉得这是一个a+b的问题,没错把URL中的参数转换为字典主要是对字 ...
- ASP.NET 运行时详解 揭开请求过程神秘面纱
对于ASP.NET开发,排在前五的话题离不开请求生命周期.像什么Cache.身份认证.Role管理.Routing映射,微软到底在请求过程中干了哪些隐秘的事,现在是时候揭晓了.抛开乌云见晴天,接下来就 ...
- web应用程序servlet的映射名称的规则及请求过程
首先用MyEclipse创建一个web Project(工程名起为TestServletProject),新建一个Servlet(这里servlet的名字起TestServlet),将请求的servl ...
- zepto源码研究 - ajax.js(请求过程中的各个事件分析)
简要:ajax请求具有能够触发各类事件的功能,包括:触发全局事件,请求发送前事件,请求开始事件,请求结束事件等等,贯穿整个ajax请求过程,这是非常有用的,我们可以利用这些事件来做一些非常有意思的事情 ...
- mvc请求过程总结
前言 最近在思考一个问题,我的学习方法一般主要是看博客来学习新东西,但是光看,基本也没总结过,所以经常会出现这样的问题,某个知识点我知道,但是就是不能很好的表达出来,很简单的东西往往都不知道如何简短精 ...
- spring MVC处理请求过程及配置详解
本文主要梳理下Spring MVC处理http请求的过程,以及配置servlet及业务application需要的常用标签,及其包含的意义. spring MVC处理请求过程 首先看一个整体图 简单说 ...
- TOMCAT原理详解及请求过程
Tomcat: Tomcat是一个JSP/Servlet容器.其作为Servlet容器,有三种工作模式:独立的Servlet容器.进程内的Servlet容器和进程外的Servlet容器. Tomcat ...
随机推荐
- Android SDK无法更新解决方法
我这里主要说的是mac下如何设置Android SDK更新,windows下类似 首先说明为什么要这么麻烦,没办法身处在大天朝中,伟大的防火墙,苦逼的程序猿想要查点资料都是非常难的.不废话了,下面进入 ...
- Cocos2d-x 关于Android.mk 自动读入CPP
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...
- C++11lambda表达式
[C++11lambda表达式] mutable 修饰符,用于修改[]中以值传递的变量,无mutable修饰符的话则不行. 使用示例: #include <vector> #include ...
- oracle学习 八 分页(使用rownumber)(持续更)
rownumber是查询的数据集之后加入一个伪列(连续的)使用它可以去制作以oracle数据库为基础的分页,语句类似于公式直接套用如下: select * from (select rownum r, ...
- SetTimer函数的用法
什么时候我们需要用到SetTimer函数呢?当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数 了.使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以 ...
- SSH下载的方法2
------------------------------下作下载方法二---------------------------------------------------String msg=n ...
- 局部化原理(Laplace渐进估计方法)
设$f(x)$于$[0,1]$上严格单调递减,且$f(0)=1,f(1)=0$,证明: $$\int_{0}^{1}f^{n}(x)dx \sim \int_{0}^{\delta}f^{n}(x), ...
- Freescale OSBDM JM60仿真器
OSBDM-JM60 - 9S08JM60 Based OSBDM — It includes interfaces and firmware applied to all the targets s ...
- Animated Scroll to Top
Due to a number of requests, I'm writing a detail tutorial on how to create an animated scroll to to ...
- JS原生方法实现jQuery的ready()
浏览器加载页面的顺序: 1. 解析HTML结构 2. 加载外部脚本和样式表文件 3. 解析并执行脚本代码 4. 构造HTML DOM模型==ready() 5. 加载图片等组件 6. 页面加载完毕== ...