HTTP简介、特点、版本、请求方法、状态码
##
一、Web服务基础
用户访问网站的基本流程:
1、双击浏览器,输入目标网址后,系统首先会查找本地的DNS缓存以及hosts文件信息,确定是否存在目标域名对应的ip解析记录,如果有就直接获取ip进行访问服务器,第一次请求时,dns缓存是没有解析记录的,hosts文件多数是开发临时测试用
2、如果本地dns缓存和hosts文件都没有域名解析记录,系统就会把访问的网址解析请求发送给客户端设置的DNS服务器去解析,也叫做Local DNS,如果LDNS服务器的本地缓存有对应的解析记录就会直接返回给客户端IP地址,如果没有LDNS就会继续请求其他的DNS服务器
3、LDNS继续从DNS系统的”.”(根)开始请求目标域名的解析,并且根据每个层级的DNS服务器系统进行系列的查找,最终在DNS网络上找到目标域名对应的授权DNS服务器。这个授权DNS服务器就是企业(个人)购买域名时用于管理域名解析的服务器,服务器上有对应的域名(IP)解析。
4、此时授权的DNS服务器就会把目标对应的IP解析记录,例如(1.1.1.1)发送给LDNS
5、此时LDNS会把解析记录发给浏览器,并且缓存域名和IP的解析记录,便于下一次更快的返回请求
6、浏览器获得ip,请求对应的服务器,网站服务器接收到客户端的请求开始响应处理,将内容返回给浏览器。
二、HTTP协议
全称是HyperText Tansfer Protocol,中文叫超文本传输协议,是互联网最常见的协议。
Http最重要的是www(World Wide Web)服务,也叫web服务器,中文叫“万维网”。
web服务端口默认是80,另外一个加密的www服务应用https默认端口是443,主要用于支付,网银相关业务。
三、HTTP协议的特点
1.HTTP协议是无状态的
就是说每次HTTP请求都是独立的,任何两个请求之间没有什么必然的联系。但是在实际应用当中并不是完全这样的,引入了Cookie和Session机制来关联请求。
2.多次HTTP请求
在客户端请求网页时多数情况下并不是一次请求就能成功的,服务端首先是响应HTML页面,然后浏览器收到响应之后发现HTML页面还引用了其他的资源,例如,CSS,JS文件,图片等等,还会自动发送HTTP请求这些需要的资源。现在的HTTP版本支持管道机制,可以同时请求和响应多个请求,大大提高了效率。
3.基于TCP协议
HTTP协议目的是规定客户端和服务端数据传输的格式和数据交互行为,并不负责数据传输的细节。底层是基于TCP实现的。现在使用的版本当中是默认持久连接的,也就是多次HTTP请求使用一个TCP连接。
四、版本
http协议诞生以来有若干个版本,主要是http/1.0 http/1.1
http/1.0规定浏览器和服务器只能保持短暂的连接,浏览器的每次请求都需要和服务器建立一个TCP连接,服务器完成请求后即断开TCP连接,服务器不跟踪每个链接,也不记录请求
http/1.1是对HTTP的缺陷进行重点修复,从可扩展性,缓存,带宽优化,持久连接,host头,错误通知等访问改进。
http/1.1支持长连接,增加了更多的请求头和响应头信息,例如配置请求头的Connection的值为keep-alive,表示请求结果返回后保持连接
五、Http请求方法
在HTTP通信中,每个请求报文都包含一个方法,以告诉web服务器端需要执行哪些操作,这些动作被称为HTTP的请求方法。
GET 请求指定的页面信息,并返回实体主体。
HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE 请求服务器删除指定的页面。
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器的性能。
TRACE 回显服务器收到的请求,主要用于测试或诊断。
六、HTTP状态码
HTTP状态码表示web服务器响应http请求状态的数字代码。
常见状态码以及作用:
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误
七、HTTP状态码的命令查看
$ curl -I www.oldboyedu.com