HTTP协议又叫超文本传输协议,该协议是工作在应用层。
HTTP的作用
当两台计算机使用HTTP协议通信时,一方必定为客户端,另一方必定为服务器端。而HTTP却能明确的区分出那方是客户端,那方是服务器端。HTTP协议规定请求是从客户端发出,服务器响应请求返回(所以TCP的三次握手是从客户端先发起请求的)。
一个请求报文是由5部分组成。他们分别是URL,协议版本号,请求首部字段和实体内容组成。
一个响应报文是由5部分构成。他们分别是协议版本,状态码,状态码的原因短语,响应首部字段和主体。
HTTP报文分为请求报文和响应报文。
在客户端发起的HTTP请求叫做请求报文,请求报文的结构为,

在服务器端的响应报文,响应报文的结构为,

HTTP协议的特点?
HTTP是无状态的,也就是说HTTP协议自身不会对请求和响应之间的状态进行保存。每当有新的请求就会产生新的响应,协议本身并不保留之前的一切请求。
HTTP的方法都有哪些?
get(获取资源),post(传输实体主体),put(传输文件),head(获得报文首部),delete(删除文件),trace(追踪路径)
get和post的区别
1.最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。
2.本质是一样的
http的底层是tcp,tcp的作用传输数据 ,get是把传输的数据放到url中方便记录。
post方式是把数据放到requestbody 中
3.url中的数据大多数浏览器规定为2k,大多数的服务器最多处理64k大小的数据,超过的部分,恕不处理。
4.Get方式会把 httpheader 和 data 一并发过去,服务器响应200 返回数据。
Post方式浏览器先发送header 服务器响应100 浏览器在发送data 返回数据。
常见返回结果的HTTP状态码
200 表示客户端发送的请求被服务器端正常的处理。
204 表示服务器连接的请求成功处理,但在返回的报文中不含实体的主体部分。
返回204,浏览器页面不发生跟新。
206 表示客户端进行了范围请求,而服务器执行了这部分的GET请求。
301 永久性重定向,该状态码表示请求资源已被分配了新的URL,以后使用资源时现在的URL
302 临时性重定向,表示请求的资源被分配了新的URL,希望用户本次使用新的URL。
303 该状态码表示请求的资源存在一个新的URL,应使用GET方法定向获取请求资源。
304 该状态码返回时,不包含响应主体部分。
307 临时重定向,该状态码和302的状态码含义相同,而307会准照浏览器的标准,不会从POST装换为GET。
400 改状态码表示请求中存在语法错误。
401 改状态码表示发送的请求需要通过HTTP认证的认证信息。另外若之前进行过1次请求, 则表示用户认证失败。
403 该状态码表示请求的资源被服务器拒绝了。
404 该状态码表示服务器上无法找到请求资源。
500 该状态码表示服务器在执行请求时发生了错误。
503 该状态码表示服务器暂时处于超负载或者停机维护,现在无法处理请求。
HTTP1.0和HTTP1.1的区别
在HTTP1.0版本中每进行一次HTTP通信就要建立和断开一次TCP链接。在使用浏览器包含多张图片的HTML页面时,在发生请求该HTML资源时会增加通信量的开销。而HTTP1.1版本采用了持久链接。建立好TCP链接可以进行多次HTTP请求,持久链接好处减少了重复建立和开销造成额外资源的浪费。
网友评论