HTTP协议简介

HTTP协议

超文本传输协议,是一种用于分布式\协作式和超媒体信息系统的应用层协议.是万维网的数据通信的基础.

HTTP协议是客户端和服务端 请求和应答的标准,是基于TCP/ip协议之上的应用层协议.

一。HTTP协议特点
  1.基于请求-响应的模式
  2.无状态保存
      不对请求和响应之间的通信状态进行保存,不做持久化处理.

  3.无连接
      限制每次连接只能处理一个请求。处理完请求之后,并接受到客户应答后,即断开连接。
      该方式可以节省时间,提高并发性能。
      无连接的两种方式:
              早期:一个请求一个相应之后即断开连接。
              现在:一个请求一个相应之后不会立即断开,等几秒,再无请求则断开连接
二。HTTP请求方法
八种:
1.get
向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中。
例如:如果存在登陆页面,输入账号密码然后提交,内容会被窥视

2.post
向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。

3.head
与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数 据)。
4.put
向指定资源位置上传其最新内容。
5.delete
请求服务器删除Request_URI所标识的资源。
6.trace
回显服务器收到的请求,主要用于测试或诊断。
7.options
这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。
8.connect
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。


请求方式: get与post请求
① GET提交的数据会放在URL之后,也就是请求行里面,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456.(请求头里面那个content-type做的这种参数形式,后面讲)   POST方法是把提交的数据放在HTTP包的请求体中.

  

get:

 

 

post:

 



② GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
       



注意事项:
1.方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed),当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码 501(Not Implemented)。
2.HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。当然,所有的方法支持的实现都应当匹配下述 的方法各自的语义定义。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。例如PATCH(由 RFC 5789 指定的方法)用于将局部修改应用到资源。

 

 

三。HTTP状态码
状态代码的第一个数字代表当前响应的类型:
。1xx消息——请求已被服务器接收,继续处理
。2xx成功——请求已成功被服务器接收、理解、并接受
。3xx重定向——需要后续操作才能完成这一请求
。4xx请求错误——请求含有词法错误或者无法被执行
。5xx服务器错误——服务器在处理某个正确请求时发生错误

 

四。HTTP请求/响应的步骤:
  1.客户端连接到web服务器
  2.发送HTTP请求
      1)通过TCP套接字(socket),客户端向Web服务器发送一个文本的请求报文.
      2)请求报文:请求行--请求头部--空行--请求数据四部分组成

请求格式:
              请求方法 空白 URL 空格 协议版本 回车符 换行符 ------》请求行
               
              头部字段名:值 回车符 换行符   ---
                      。。。 ---》 请求头部
              头部字段名:值 回车符 换行符   ---
               
              回车符 换行符                 ---》空行
              最后一行                     ----》 请求数据

例如:get / HTTP/1.1 \r\n\r\n

  3.服务器接受请求并返回HTTP响应
      1)web服务器解析请求,定位请求资源,将资源复本写到TCP套接字,由客户端读取.  
      2)响应:状态行--响应头部--空行--响应数据四部分组成
       
        响应格式:
      协议版本 空格 状态码 空格 状态码描述 回车符 换行符 ---》状态行
     
      头部字段名:值 回车符 换行符 --->
      。。。 -->响应头部
              头部字段名:值 回车符 换行符 -->
               
              回车符 换行符                 ---》空行
              最后一行                     ----》 响应正文
               
              例如:HTTP/1.1 200 ok \r\n\r\n

  4.释放连接TCP连接
      connection模式为colse,服务器会主动关闭TCP连接,客户端被动关闭连接,释放TCP连接
                    为keepalive,则连接会保持一段时间,在此期间可以继续接受请求
          (用浏览器打开一个网址,服务器不会马上断开与客户端的连接,保持几秒,如果用客户端没有别的请求,
          服务端就会断开连接)

  5.客户端浏览器解析HTML内容并呈现
posted @ 2019-05-16 09:44  socoolonly1  阅读(131)  评论(0)    收藏  举报