简单的了解HTTP协议

HTTP概念

  • HTTP协议用于客户端与服务端之间的通信(应用HTTP协议,必定有一端是客户端,另一端是服务器端)

  • 通过请求和响应的交换达成通信(必须由客户端发起通信,服务器端在没有接收到请求之前不会发送响应)

发送报文的结构:
 //包含了请求方法、请求资源路径、HTTP协议版本
 GET(POST) /mini.png HTTP/1.1  
 //请求首部字段
 Host:120.25.226.186:32812     客户端想访问的服务器主机地址
 User-Agent:Mozilla/5.0        客户端的类型,客户端的软件环境
 Accept:text/html              客户端所能接收的数据类型
 Accept-Language:zh-cn        客户端的语言环境
 Accept-Encoding:gzip         客户端支持的数据压缩格式 

 //内容实体
 name=user&ag=12
 响应报文的结构:
 //包含了HTTP协议版本、状态码、状态码的原因说明
 HTTP/1.1 200 ok       
 //响应首部字段        
 Server:Apache-Coyote/1.1      服务器类型
 Content-Type:image/jpeg       返回数据的类型
 Content-Length:56811          返回数据的长度
 Date:Mon,23,Jun 2014 12:54:52 GMT 响应的时间

 //主体
 data....
  • HTTP是不保存状态的协议(协议本身不会保留之前一切的请求或响应)

  • 请求URI定位资源

  • 发起HTTP请求的方法

    • GET:获取资源
      客户端—-GET(访问某个资源)—–>服务器

    • POST:发给服务器的参数全部放在请求体中
      客户端—-POST(上传某个信息)—–>服务器

    • PUT:传输文件(PUT自身不带验证机制,任何人都可以传,不安全)
      客户端—-PUT(上传一个文件)—–>服务器

    • HEAD:获得报文首部(不返回主体部分,只返回响应的首部)
      客户端—-HEAD(把那个相关信息告诉我)—–>服务器

    • DELETE:删除文件(与PUT相反,不安全)
      客户端—-HEAD(把那个文件删除)—–>服务器

    • OPTIONS:询问支持的方法(查询对请求URI指定资源支持的方法)
      客户端—-OPTIONS(这个资源支持哪些方法访问)—–>服务器

      扫描二维码关注公众号,回复: 3219570 查看本文章
  • 持久连接节省通信量(建立1次TCP连接后可进行多次请求和响应)

    • 持久性连接的特点:只要任意一端没有明确提出断开,则保持TCP的连接
    • 管线化方式:所谓的管线化方式是指同时并行发送多个请求,而不需要一个接一个地等待响应
  • 使用Cookie的状态管理

    • Cookie技术通过在请求和响应报文中写入cookie信息来控制客户端的状态
    • Cookie会根据从服务器端发送的响应报文内的一个叫Set-Cookie的首部字段信息,通知客户端保存Cookie,当下次客户端再次请求时,客户端会自动在请求的报文中加入Cookie值发送出去
    • 服务器端发现客户端发来的Cookie时,会去检查是哪一个客户端发送的请求,对比服务器上的记录,最后得到之前的状态信息
1)请求报文(没有Cookie)信息的状态
 GET /mini.png HTTP/1.1  
 Host:120.25.226.186:32812
 *首部字段内没有Cookie的相关信息

(2)响应报文(服务器端生成Cookie信息)
 HTTP/1.1 200 ok       
 Date:Mon,23,Jun 2018 12:54:52 GMT 
 Server:Apache
 <Set-Cookie:sid=123123123; path=/;expires=Wed,=>Jun 2018 12:54:52 GMT>
 Content-Type:image/jpeg      

(3)请求报文(自动发送保存着的Cookie信息)
 GET /mini.png HTTP/1.1  
 Host:120.25.226.186:32812
 Cookie:sid=123123123

HTTP返回结果的状态码

状态码 类别 原因短语 备注
200 成功状态码 OK
204 成功状态码 NO Content 请求成功但是没有资源可返回
206 成功状态码 Partial Content 对资源某一部分的请求
301 重定向状态码 Moved Permanently 资源的URI不对
302 重定向状态码 Found 临时重定向
303 重定向状态码 See Other 资源存在多个URI,应使用GET方法请求
304 重定向状态码 Not Modified 资源已找到,但未符合条件
307 重定向状态码 Temporary Redirect 临时重定向
400 客户端错误 Bad Request 请求报文中语法不对
401 客户端错误 Unauthorized 该请求需要HTTP认证
403 客户端错误 Forbidden 不能访问该资源
404 客户端错误 Not Found 服务器上没有该资源
500 服务器错误 Internal Server Error 服务器内部资源不对
503 服务器错误 Service Unavailable 服务器超负荷或停机维护

与HTTP协作的web服务器

  • 虚拟主机:是指在网络服务器上分出一定的磁盘空间,用户可以租用此部分空间,以供用户放置站点及应用组件,提供必要的数据存放和传输功能。
  • 通信数据转发

    • 代理:是一种有转发功能的应用程序,它扮演了位于服务器和客户端“中间人”的角色,接收由客户端发送的请求并转发给其他服务器,同时也接受其他服务器返回的响应转发给客户端

      • 代理不会改变请求的URI,会直接发送给持有资源的服务器(源服务器)
      • 代理服务器转发时,需要附加Via首部字段来标记经过的主机信息
        这里写图片描述
      • 缓存代理(常说的镜像):代理服务器转发响应时,缓存代理会预先将资源的副本保存在代理服务器上,当代理服务器再次收到相同资源的请求时,代理服务器可直接将之前缓存的资源作为响应返回
      • 透明代理:转发请求会响应时,不对body做任何加工的代理类型叫透明代理,对报文内容做加工的代理叫非透明代理
    • 网关:转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,他就像自己拥有资源的服务器一样对请求进行处理

      • 网关能使通信新路上的服务器提供非HTTP协议服务
        这里写图片描述
      • 利用网关能够提高通信安全性,可以在客户端与网关之间的通信线路上加密以确保连接安全(比如网关可以关联数据库)
    • 隧道:在相隔甚远的客户端和服务器之间进行中转,并保持双方通信连接的应用程序

      • 隧道可按要求建立一条与其他服务器通信的线路,可以使用SSL等加密手进行通信,隧道的目的就是确保客户端能与服务器进行安全的通信
      • 隧道本身不对HTTP做任何解析,保持原样中转给服务器
        这里写图片描述

猜你喜欢

转载自blog.csdn.net/hejiasu/article/details/80933393