了解学习Http协议

Http协议

1.概念

协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(http)是一种通信协议,它允许将超文本标记语言(html)文档从web服务器传送至客户端的浏览器。

2.浏览器显示网页内容原理

我们在浏览器的地址栏中输入地址URL后,就能看到网页,它的原理实际是:在浏览器器的地址栏中输入URL后,浏览器会向web服务器发送请求(Request),服务器接收到请求后进行处理,生成相应的结果(Response),再将结果发送给浏览器,浏览器解析Response中的Html文档,之后我们就看到了网页。

3.打开一个网页需要浏览器向web服务器发送多个请求

当在浏览器中输入URL时,浏览器发送一个Request去获取html文档,服务器再将Response发送回给浏览器。

浏览器解析Response的html文档,发现其中引用很多个文件,例如:imag,js文件,css文件。

浏览器会再自动发送Request去获取这些文件。待所有的文件都下载成功后,网页就显示出来了。

4.代理服务器

当我们的浏览器向web发送请求时,有可能会经过代理服务器,最后再到web服务器。

代理服务器   a.可以提高访问速度,且多数代理服务器都有缓存功能。b.可以隐藏自己身份。c.可以科学上网,突破当前限制。

5.URL结构详解

URL(Uniform Resource Locator) 地址用于描述一个网络上的资源,  基本格式如下

schema://host[:port#]/path/.../[?query-string][#anchor]   
例如:https://www.baidu.com/s?ie=utf-8&f=8#stuff
schema 指的是底层使用的协议   host 指的是IP地址与域名  port# 指的是端口号,默认是80可以省略不写,使用其他的端口必须指明 path 指的是请求的资源路径 query-string 指的是发送给服务器的数据 anchor 指的是锚

schema:   http      host:www.baidu.com     path:s    query-string:ie=utf-8&f=8    anchor:stuff

6.HTTP消息的结构

1)Request消息结构

Request消息分为3部分,Request line、Request header、 body。header与body之间有个空格。

了解学习Http协议_第1张图片

首行中METHOD指的是请求方法,path-to-resource 指的是请求资源,HTTP/Version-number指的是http协议的版本号。

使用的“get”方法时,body为空。

2)Response消息结构

Response消息分为3部分,Response line、Response header、body。header与body之间有个空格。

了解学习Http协议_第2张图片

首行中HTTP/Version-number指的是http协议的版本号,status code 指的是状态码,message指的是状态信息。

7.请求方法get、post的区别

http协议与服务器交互最基本的4种方法为get、post、put、delete,它们分别对应查询、更新、增加、删除4个操作。目前我们常见的是get、post这两种请求方法。它们的区别如下:

a)get方法一般是为了获取或查询资源信息,而post方法一般是为了更新资源信息。

b)get方法提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. post方法是把提交的数据放在HTTP包的Body中。

c) get方法提交的数据大小有限制(因浏览器对url的长度有限制),而post方法提交的数据无限制。

d) get方法需要通过Request.query-string获取变量的值,而post方法通过Response.form获取变量的值。

e) get 方法提交的数据会带来安全问题,例如一个网站登录页面,通过get方式提交数据时,用户名、密码出现在Url中,若该页面可以被缓存或其他人可以访问这台机器,从历史记录中就可以获取该用户的账户和密码。

8.状态码

状态码是用来告诉客户端,服务器是否产生了预期的Response。

HTTP/1.1中定义了5类状态码,状态码有三位数字组成,第一个数字定义了响应的类别。

1XX  提示信息->表示请求已被成功接收,继续处理

2XX 成功->表示请求已被成功接收,理解,接受

3XX 重定向->要完成请求必须进行更进一步的处理

4XX 客户端错误->请求有语法错误或请求无法实现

5XX 服务器错误->服务器未能实现合法的请求

下面是一些常见的状态码:

200   ok    这个表明该请求被成功的完成,所请求的资源发送回客户端。

302  found   重定向,新的url会在response中的location中返回,浏览器将会自动使用新的url发出新的request。

304  not modified  代表上次的文档已被缓存,还可以继续使用。若不想使用本地缓存可以强制刷新页面。

400  bad Request  客户端请求与语法错误,不能被服务器所理解。

403  forbidden  服务器收到请求,但是拒绝提供服务。

404  not found  请求资源不存在(用户输错了url)。

500 Internet server error  服务器发生了不可预期的错误。

503 server unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

9.HTTP协议是无状态的

无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态,同一个客户端的这次请求和上次请求时没有对应关系的,即服务器并不知道这两个请求来自同一个客户端。为了解决这个问题,web程序引入了Cookie机制来维护状态。

Http是一个无状态的面向连接的协议,无状态不代表Http不能保持Tcp连接,更不代表http使用的是udp协议。

Http/1.1,默认开启了keep-alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输http数据的Tcp链接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。

keep-alive不会永久保持连接,它有一个保持的时间,可以在不同的服务器软件中设定这个时间。

你可能感兴趣的:(HTTP,HTTP协议)