HTTP概述
Web 客户端和服务器
web内容都在服务器上,客户端向服务器发送一条HTTP请求,然后服务器将信息放在HTTP响应中发回给客户端。
【资源 resource】web服务器是web资源的宿主,web资源是web内容的源头。资源可以是静态html,音频,图片等任意内容,也可以是动态生成的内容。网关,搜索引擎也是一种资源。
【媒体类型 】MIME 类型(Multipurpose Internet Mail Extensions type 多用途因特网邮件扩展) web服务器会给每一个对象附加一个MIME 类型,MIME 类型是一种文本标记,形式为对象类型/子类型
例如:HTML格式的文本文档: text/html
ASCLL格式的文本文档: text/plain
JEP格式的图片: image/jpeg
GIF格式的图片: image/gif
【URI】每个服务器资源都有一个名字,这个名字叫做URI(uniform resource identifer 统一资源标识符)就像邮政地址一样,可以作为唯一标识并定位。
URI分作两种URL(统一资源定位符)和URN(统一资源名)
【URN】作为特定内容的唯一名称,与资源的所在地无关。便于搬运和访问,如:urn:ietf:rfc:2141 。可惜还没有大范围使用,现在几乎所有的URI都是URL。
【URL】描述了某资源在特定服务器的特定位置,可以通过它从精确,固定的位置获取资源。
URL的格式分作三部分:【方案 scheme】协议类型,通常是 http://
【服务器的因特网地址】如:xiaoshuwu.u.qiniudn.com
【web服务器上的某个资源】如:/wp-content/uploads/2014/03/HTTP权威指南.jpg
上面这个URL代表的内容就是这张图片
【事务】一个HTTP事务由一个请求命令和一个响应结果组成,这种通信通过格式化数据块 HTTP报文(HTTP message)来进行。
【报文】HTTP报文分作两部分header和body(主体),header包含起始行和首部字段,
【方法 method】 (请求命令):每个请求报文中都包含了一个方法,来告诉浏览器要执行什么动作。
常用方法如:GET:请求某资源 POST:提交某数据 PUT:将数据存储到服务器中 DELETE:删除服务器中的某数据
【状态码】每个响应报文都会携带一个三位数组成的状态码来告知客户端请求是否成功,或提示是否采取其他动作。
常见HTTP状态码如:200 ok 文档正确返回 302 redirect(重定向) 到其他地方去获取资源 404 not found(没找到) 无法找到这个资源
除了数字码,同时还会返回一句解释性的话语,该话语只起到描述作用,整个处理过程都使用数字码。
Web 页面中可以包含多个对象-----需要多个事务才能得到一个丰富完整的页面。客户端先向服务器发送一个请求,服务器发回一个html框架,浏览器解析这个html后提取出里面的链接,图片,音频等嵌入式资源的URL,再一个个地发送请求,这些嵌入式资源可能分布在不同的服务器上,这些服务器再发出响应报文,这样可以分散服务器的压力。
简单报文实例
连接
了解了报文后,我们要讨论一下报文是如何通过传输控制协议(TCP)连接从一个地方到另一个地方去的。
【TCP(传输控制协议)】提供了:无差错的传输 按序传输 未分段的数据流(什么是未分段的数据流呢,就是说可以在任一时刻以任意尺寸把数据发送出去)
TCP是一种可靠的传输协议
【IP(Internet Protocol 网络协议)】
我们已经知道了HTTP客户端通过TCP向服务器发送报文,但是在此之前,还需要用网络协议(IP)地址和端口号在客户端和服务器之间建立一条TCP/IP连接
原来这就是我们常说的IP地址,打个比方,找某个人,IP地址就是那个人公司的电话号码,而端口号就是这个人的分机号。
也就是说在TCP中,当客户端需要与服务器产生通信时,需要先得知服务器的IP地址和服务器上运行的特定软件相关的TCP端口号
这就行了,但是在此之前客户端要则么才能获取到IP地址和端口号呢?
先看我们平常是怎样访问一个网站的呢?当然是URL,URl既然是资源的地址,那么肯定含有提供资源的机器的IP地址和端口号,不是吗
我满看到面这几个URL:
看起来并不复杂,都是我们通常见到的URL
第一个很清晰,IP地址是207.200.83.29,端口是80。
我记得IP地址都是一串数字对吧,可是后两个URL的数字在哪呢?
我们看到后两串URL中包含的是文本形式的域名(或称为主机名)而非一串数字组成的IP地址,然而多数情况就是这样的形式,这时就涉及到了一种称作域名服务(DNS)的机制
实际上主机名就是IP地址比较人性化的一种形式,因为比较容易记忆嘛。而没有标明端口号的就默认为80端口。
【Web结构组件】
【代理】
代理位于客户端和服务器中间,接受客户端的HTTP请求,并将请求(可能还会修改请求)转发给服务器。
代理还可以对请求和响应过滤。
【缓存】
缓存是一种特殊的代理服务器,它可以将经过代理传送的常用文档复制保存起来,下一个请求该文档的客户端就可以从这个代理服务器的缓存中下载了,,因为客户端从附近的缓存下载文档要比从远程的web服务器下载快得多,所以可以大大地提升效率。
【网关】
用于将HTTP转换成其他的协议
【隧道】
用来在一条或多条HTTP连接上传递非HTTP数据。
HTTP隧道的常见用途是通过HTTP连接承载加密的安全套接字层(SSL)流量这样SSL流量就可以穿过只允许web流量通过的防火墙,发送到服务器上了。
【Agent代理】
用户agent代理/agent代理:代表用户发起HTTP请求的客户端程序。所有发布web请求的都是agent代理,已经提到过的有浏览器这一种,其他还有很多,如网络蜘蛛,网络机器人
仅允许非商业转载,转载请注明出处