HTTP协议

HTTP简介

超文本

  • 包含有超链接(Link)和各种多谋体元素标记(Markup)的文本。
    • 这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page).
      • 这些链接使用URL表示。
      • 最常见的超文本格式超文本标记语言HTML。

URL

  • 即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。
    - URL由协议、主机和端口(默认为80)以及文件名三部分组成。如:
    - http://www.sxtyu.com:80/news/index.html
    - 协议:// 主机:端口(80)/ 文件名及其路径

HTTP

  • 是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。

  • HTTP工作原理:

    • 请求/响应模型

      • 在用户点击URL为http://www.sxtyu.com/index.html 的链接后浏览器和Web服务器执行以下动作:
        1. 浏览器分析超链接中的URL
        1. 浏览器向DNS请求解析www.sxtyu.com 的地址
        1. DNS将解析出的IP地址202.2.16.21返回浏览器
        1. 浏览器与服务器建立TCP连接(80端口)
        1. 浏览器请求文档:GET/index.html
        1. 服务器给出响应,将文档index.html发送给浏览器
        1. 释放TCP连接
        1. 浏览器显示index.html中的内容
    • 连接方式

      • 非持久性连接
        • 即浏览器每完成一个Web文档,就创建一个新的连接,当文档传输完成后,连接就立刻被释放。
      • 持久性连接
        • 即在一个连接中,可以进行多次文档的请求和响应。
          • 服务器在发送完响应后,并不立即释放连接,浏览器可以使用该连接继续请求其他文档。
          • 连接保持的时间可以由双方进行协商。
    • 无状态性

      • 是指同一个客户端(浏览器)第二次访问同一个Web服务器上的页面时,服务器无法知道这个客户曾经访问过。
        • HTTP的无状态性简化了服务器的设计,使其更容易支持大量并发的HTTP请求。
  • HTTP报文结构

    • 请求报文

    • 返回报文

    • 请求报文中的方法

    • 响应报文中的状态码

    • 首部字段或消息头

    • 报文结构实例

    • 请求报文:

      • 即从客户端(浏览器)向Web服务器发送的请求报文。报文的所有字段都是ASCLL码。

      • 方法 URL 版本 请求行,如:GET/index.html HTTP/1.1

      • 首部字段名: 值 首部行:用来说明浏览器、服务器或保温主题的一些信息。如:

      • 首部字段名: 值 HOST: www.styu.com

      •    .      Connection: close
        
      •    .      User-Agent: Mozilla/5.0
        
      • 首部字段名: 值 Accept-Language: cn

      • 实体主体(Entity body)

    • 返回报文:

      • 即从Web服务器到客户机(浏览器)。报文的所有字段都是ASCLL码。

      • 版本 状态码 短语 状态行:如:HTTP/1.1 200 OK

      • 首部字段名: 值 首部行:用来说明浏览器、服务器或报文主体的一些信息。如:

      • 首部字段名: 值 Date: Wed,08 May 2008 22

      •    .       Sever: Apache/1.3.2(Unix)
        
      •    .       Content-Length: DateDaDat4096
        
      • 首部字段名: 值 Content-Type: text/html

      • 实体主体(Entity body)

    • 请求报文中的方法

      • 方法(Method)是对所请求对象所进行的操作,也就是一些命令。请求报文中的操作有:
        • GET 请求读取一个Web页面
        • POST 附加一个命名资源(如Web页面)
        • DELETE 删除Web页面
        • CONNECT 用于代理服务器
        • HEAD 请求读取一个Web的首部
        • PUT 请求存储一个Web页面
        • TRACE 用于测试,要求服务器送回收到的请求
        • OPTION 查询特定选项
    • 响应报文中的状态码

      • 状态码(Status-Code)是响应报文状态行中包含的一个3位数字,知名特定的请求是否被满足,如果没有满足,原因是什么。
        • 状态码 含义 例子
        • 1xx 通知消息 100=服务器正在处理客户请求
        • 2xx 成功 200=请求成功(ok)
        • 3xx 重定向 301=页面改变了位置
        • 4xx 客户错误 403=禁止的页面;404=页面未找到
        • 5xx 服务器错误 500=服务器内部错误;503=以后再试
    • 首部字段或消息头

      • 1.下面几个类型都是请求的:

      User-Agent:关于浏览器和它平台的消息,如Mozilla5.0

      Accept:客户端能处理的页面的类型,如text/html

      Accept-Charset:客户端可以接受的字符集,如unicode-1-1

      Accept-Encoding:客户端能处理的页面编码方式,如gzip

      Accept-Language:客户端能处理的自然语言,如en(英语)、zh-en(简体中文)

      Host:服务器的DNS名称,从URL中提取出来,必需

      Authorization:客户端的消息凭据列表

      Cookie:将以前设置的Cookie送回到服务器,可用来作为会话内容

      • 2.以下几个类型都是响应的

      Server:关于服务器的信息,如Microsoft-lls/6.0

      Content-Encoding:内容是如何编码的,如gzip

      Content-Language:页面所使用的自然语言

      Content-length:以字节计算的页面长度

      Conten-Type:页面的MIME类型

      Last-Modified:页面最后被修改的时间和日期,在页面缓存机制中意义重大

      Location:指示客户端将请求发送给别处,即重新定向到另一个URL

      Set-Cookie:服务器希望客户保存一个cookie

      3.下面这个类型是双向的

      Date:消息发送时的日期和时间。

    • 报文结构实例

      • General
        Request URL: https://dss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/js/min_super-c98873426c.js
        Request Method: GET
        Status Code: 200 (from memory cache)
        Remote Address: 119.36.162.33:443
        Referrer Policy: unsafe-url

      • Response Headers
        accept-ranges: bytes
        age: 800379
        cache-control: max-age=2592000
        content-encoding: gzip
        content-type: application/x-javascript
        date: Wed, 25 Mar 2020 09:38:25 GMT
        etag: W/“5e6b6481-ff85”
        expires: Wed, 15 Apr 2020 03:07:44 GMT
        last-modified: Fri, 13 Mar 2020 10:46:25 GMT
        ohc-cache-hit: whoc97 [4], bjbgpcache138 [4]
        ohc-response-time: 1 0 0 0 0 0
        server: JSP3/2.0.14
        status: 200
        vary: Accept-Encoding

      • Requests Headers
        Provisional headers are shown
        Referer: https://www.baidu.com/?tn=21002492_13_hao_pg
        Sec-Fetch-Dest: script
        User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36

  • HTTP代理

    • HTTP代理又称Web缓存或代理服务器(Proxy Server),是一种网络实体,能代表浏览器发出HTTP请求,并将最近的一些请求和响应暂存在磁盘中,当请求的Web页面先前暂存过,则直接将暂存的页面发给客户端(浏览器),无需再次访问Internet.
    • 浏览器 -> 校园网的高速缓存(代理服务器) -> R1(校园网) -> 万维网通道 -> R2(因特网)->源点服务器
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值