zoukankan      html  css  js  c++  java
  • http协议

    参考学习:https://www.cnblogs.com/roverliang/p/5176456.html
    HTTP 简介
    HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。。
    HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
    HTTP 工作原理
    HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
    Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。
    Web服务器根据接收到的请求后,向客户端发送响应信息。
    HTTP默认端口号为80,但是你也可以改为8080或者其他端口。

    HTTP三点注意事项:

    HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
    HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
    HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快

    以下图表展示了HTTP协议通信流程:
    在这里插入图片描述
    HTTP请求:
    HTTP请求是客户端往服务端发送请求动作,告知服务器自己的要求。

     HTTP请求由状态行、请求头、请求正文三部分组成:
    

    状态行:包括请求方式Method、资源路径URL、协议版本Version;

    请求头:包括一些访问的域名、用户代理、Cookie等信息;

    请求正文:就是HTTP请求的数据。
    在这里插入图片描述

    根据HTTP标准,HTTP请求可以使用多种请求方法。
    HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
    HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

    HTTP响应:
    服务器收到了客户端发来的HTTP请求后,根据HTTP请求中的动作要求,服务端做出具体的动作,将结果回应给客户端,称为HTTP响应。

        HTTP响应由三部分组成:状态行、响应头、响应正文;
    

    状态行:包括协议版本Version、状态码Status Code、回应短语;
    响应头:包括搭建服务器的软件,发送响应的时间,回应数据的格式等信息;
    响应正文:就是响应的具体数据。
    在这里插入图片描述
    备注:我们主要关心并且能够在客户端浏览器看得到的是三位数的状态码,不同的状态码代表不同的含义,其中

    1xx 表示HTTP请求已经接受,继续处理请求
    2xx 表示HTTP请求已经处理完成
    3xx 表示把请求访问的URL重定向到其他目录
    4xx 表示客户端出现错误
    5xx 表示服务端出现错误
    常见状态码:
    1xx: 接受,继续处理
    200: 成功,并返回数据
    304: 资源未修改,可使用缓存
    400: 请求语法错误
    401: 要求身份认证
    403: 拒绝请求
    404: 资源不存在
    500: 服务器错误
    503:服务器占时不可用
    504:请求超时
    505:HTTP版本不受支持

    HTTP头部关于缓存的字段:
    Cache-Control、Expires、Last-Modified、ETag、Date
    参考学习:https://segmentfault.com/a/1190000015816331
    http与https的区别:
    1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
    2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
    3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

    http各版本的区别:
    参考学习:https://www.cnblogs.com/yunman/p/6073367.html

    HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。

    一个HTTP"客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。

    一个HTTP"服务器"同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的请求并向客户端发送HTTP响应数据。

    HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

    一旦建立连接后,数据消息就通过类似Internet邮件所使用的格式[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送。
    客户端请求消息

    客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。

    服务器响应消息

    HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

    实例

    下面实例是一点典型的使用GET来传递数据的实例:

    客户端请求:

    GET /hello.txt HTTP/1.1
    User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
    Host: www.example.com
    Accept-Language: en, mi
    

    服务端响应:

    HTTP/1.1 200 OK
    Date: Mon, 27 Jul 2009 12:28:53 GMT
    Server: Apache
    Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
    ETag: "34aa387-d-1568eb00"
    Accept-Ranges: bytes
    Content-Length: 51
    Vary: Accept-Encoding
    Content-Type: text/plain
    
  • 相关阅读:
    第二十九课 循环链表的实现
    第二十八课 再论智能指针(下)
    第二十七课 再论智能指针(上)
    第二十六课 典型问题分析(Bugfix)
    普通new和placement new的重载
    leetcode 581. Shortest Unsorted Continuous Subarray
    leetcode 605. Can Place Flowers
    leetcode 219. Contains Duplicate II
    leetcode 283. Move Zeroes
    leetcode 217. Contains Duplicate
  • 原文地址:https://www.cnblogs.com/princeness/p/11664977.html
Copyright © 2011-2022 走看看