美文网首页
Web基础复习——HTTP协议相关

Web基础复习——HTTP协议相关

作者: 哈尼橘橘 | 来源:发表于2019-04-10 20:37 被阅读0次

    HTTP协议历史演变

    Hypertext Transfer Protocol,超文本传输协议。
    规定了浏览器和万维网服务器之间相互通信的规则。
    是客户端和服务器之间请求和应答的标准。
    HTTP是基于TCP/IP协议的应用层协议,无状态,默认使用80端口。

    HTTP/0.9

    这是最早的版本。

    • 只有一个 GET 命令。
    • 服务器只能回应HTML格式的字符串,不能回应别的格式。

    请求格式:
    GET /index.html
    表示TCP连接建立后,客户端向服务器请求网页index.html。

    HTTP/1.0

    • 命令增加了 POSTHEAD
    • 可以传输任何形式的内容,包括图像、视频等。
    • 新增状态码、缓存、内容编码等功能。

    请求格式:

    GET /HTTP/1.0
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0
    Accept: */*
    

    第一行是请求命令,必须在尾部添加协议版本

    响应格式:

    协议版本 状态码 状态描述
    头信息
    
    数据
    

    头信息与数据中间的空行是本身就有的。

    HTTP/1.1

    • 引入了持久连接。TCP连接默认不关闭,可被多个请求复用,不需要声明Connection:keep-alive;客户端与服务器发现对方一段时间无活动,就可以主动关闭连接;最好在客户端最后一个请求时,发送Connection:close,明确要求服务器关闭TCP连接。
    • 引入了管道机制。在同一个TCP连接中,客户端可以同时发送多个请求,而不需要等待上一个请求被回应之后再发送新的请求。但是服务器还是按请求的先后顺序回应请求。
    • 增加了动词方法PUTPATHHEADOPTIONSDELETE
    • 客户端请求头增加了Host字段,制定服务器的域名。
    • 头信息是文本(ASCII编码),数据体既可以是文本也可以是二进制。

    这个版本的目前还是很流行的。

    HTTP/2

    • 头信息和数据体都是二进制,统称为“帧”。

    • 多工 什么是多工
    • 数据包不按顺序发送,同一个连接里连续的数据包可能属于不同的响应。每个请求或响应的所有数据包称为一个数据流

    • HTTP/2通过发送信号RST_STREAM帧取消数据流,不需要关闭TCP连接。

    • 将头信息使用gzipcompress压缩后发送,客户端与服务器同时维护一张头信息表,通过发送索引号,来提高请求速度。

    URL

    Universal Resource Locator,统一资源定位符,即网页地址、因特网上标注的资源的地址。

    一般形式:
    <URL访问形式>://<主机>:<端口>/<路径>
    例如: http://asdf.com:80/index.html

    URL访问方式: ftp、http、news
    主机: 网站的域名、IP地址(必须有)
    端口: http固定端口为80(可省)
    路径: 资源的位置(可省)

    请求

    一般格式:

    请求行

    请求方法:
    GET:读取由URL所标识的信息;
    POST:给服务器添加信息;
    OPTION:请求一些选项的信息;
    HEAD:请求读取URL所标识信息的首部;
    PUT:在指明的URL下存储一个文档;
    DELETE:删除指名的URL所标志的资源;
    TRACE:用来进行环回测试的请求报文;
    CONNECT:用于代理服务器。

    URL字段: 路径,若URL中未给出路径,则当它作为请求URL时,必须以“/”的形式给出,通常这个工作浏览器自动完成。

    版本: 目前HTTP协议用得最多的是1.1版本。

    请求头部

    由关键字/值对组成,每行一对,关键字和值用英文冒号分割。请求头部通知服务器有关客户端请求的信息。

    空行: 发送回车符和换行符,通知服务器一下不再有请求头。

    常用请求头 含义
    Accept 指定客户端接受哪些类型的信息
    Accept-Encoding 指定可接受的内容编码
    Accept-Language 指定一种自然语言
    Host 指定被请求资源的Internet主机和端口号
    User-Agent 允许客户端将它的操作系统、浏览器和其它属性告诉服务器
    Referer 上一个网页的URL

    示例:

    请求数据

    不在GET方法中使用,在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。

    响应

    一般格式:

    状态行

    版本: 常用HTTP/1.1版本

    状态码: 由三位数字组成
    五种可能取值:

    取值 含义
    1xx 保留
    2xx 表示请求成功地接受
    3xx 要完成请求必须进一步细化请求
    4xx 客户错误
    5xx 服务器错误
    常见状态描述短语 含义
    200 OK 客户端请求成功
    400 Bad Request 客户端请求有语法错误,不能被服务器所理解
    401 Unauthorized 请求未经授权
    403 Forbidden 服务器收到请求,但是拒绝提供服务
    404 Not Found 请求资源不存在
    500 Internal Server Error 服务器发生不可预期的错误
    503 Sever Unavailable 服务器当前不能处理客户端的请求

    首部行

    包含了服务器和报文主题的信息。

    空行

    最后一个响应头之后是一个空行,发送回车符和换行符,通知客户端以下是报文实体。

    响应数据

    包含了用户要得到的数据或是错误信息。

    常用响应头 含义
    Location 重定向接收者到一个新的位置
    Server 包含服务器用于处理请求的软件信息
    WWW-Authenticate 必须被包含在401(未授权的)响应消息中,请求服务器对收到401响应的客户端进行验证

    示例:

    HTTP代理服务器

    可以代表浏览器发出HTTP请求。
    将最近的一些请求和响应暂存在本地磁盘中,当与暂存的请求相同的新请求到达时,代理服务器就将暂存的响应发出去,不需要按URL的地址再去因特网访问该资源。

    可在客户和服务器端工作,也可以在中间系统上工作。 过程

    HTTP协议与HTTPS协议的区别

    HTTPS为HTTP的升级版,比HTTP协议更加安全。安全基础为SSL,即在HTTP下加入SSL层。HTTPS通过安全传输机制进行传送数据。保证传送的数据的隐秘性、完整性,降低非侵入性拦截攻击的可能性。

    HTTP HTTPS
    传输方式 明文传输 SSL加密传输
    连接方式 80端口连接 443端口连接
    所需证书 不需要 到ca申请证书,免费很少,需要交费,优秀而由Web容器提供,如TOMCAT
    连接特点 相对简单、无状态 由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议

    其他需要了解的

    Cookie
    浏览器第一次访问服务器时,服务器发送到浏览器并保存在本地的一小块数据,在浏览器下一次向同一服务器发起请求时被携带并发送到服务器上。
    用于告诉服务端,两个请求是否来自同一浏览器。

    • 敏感信息不应通过Cookie传输
    • Cookie的Secure标记,只应用过被HTTPS协议加密过的请求发送给服务端
    • 使用HttpOnly标记,可以一定程度上避免XSS攻击

    Session
    会话信息,保存在Web服务器上。比Cookie更安全。

    Token
    服务端生成的一串字符串,作为客户端进行请求的标识。
    用于身份认证。

    X-Frame-Options
    在HTTP响应头中出现,用于给浏览器指示是否可在<frame>, <iframe>或者 <object> 中展现的标记。
    网站可以使用此功能,来确保自己网站的内容没有被嵌到别人的网站中去,也从而避免了点击劫持攻击。

    X-Content-Type-Options
    在HTTP响应头中出现。
    用于规定客户端必须要遵循Content-Type首部中对MIME类型的设定,不能修改。
    禁用了客户端的MIME类型嗅探行为。

    MIME类型举例:img/gif

    相关文章

      网友评论

          本文标题:Web基础复习——HTTP协议相关

          本文链接:https://www.haomeiwen.com/subject/ljxaiqtx.html