• Http学习(一)


    HTTP 超文本传输协议

    • 综述:

      HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息.HTTP遵循请求(Request)/应答(Response)模型。Web浏览器向Web服务器发送请求,Web服务器处理请求并返回适当的应答。所有HTTP连接都被构造成一套请求和应答。


      HTTP使用内容类型,是指Web服务器向Web浏览器返回的文件都有与之相关的类型。所有这些类型在MIME Internet邮件协议上模型化,即Web服务器告诉Web浏览器该文件所具有的种类,是HTML文档、GIF格式图像、声音文件还是独立的应用程序。大多数Web浏览器都拥有一系列的可配置的辅助应用程序,它们告诉浏览器应该如何处理Web服务器发送过来的各种内容类型。

    • 与Http相关的3个协议

      • IP协议:把各种数据包发送给对方,通过ARP协议将IP地址转化为Mac地址
      • Tcp协议:
        • 提供可靠的字节流服务
          • 为了方便传输将大块数据分割成保文段为单位的数据包进行管理
          • 能够把数据可靠的发送给对方
        • 3次握手:若在某个阶段中断,TCP协议会在再次以相同顺序重新发送
          • 发送SYN
          • 回复SYN/ACK表示确认信息
          • 传回ACK数据包表示完成
      • DNS服务:将域名转化为IP地址
      • 在浏览器中输入url后:
        • 查询DNS服务器,得到IP地址
        • HTTP协议的职责,生成HTTP请求报文
        • TCP协议的职责:
          • 把请求报文分割成报文段
          • 可靠地传输
        • IP协议:搜索对方的地址,一边中转一边发送
        • 相应同上逆序
    • Url和Uri

      • Url:是统一资源标示符,可以唯一标识一个资源。
      • Uri:统一资源定位符,可以提供找到该资源的路径
      • URI属于父类,而URL属于URI的子类。URL是URI的一个子集。
      • 举个是个URI但不是URL的例子:urn:isbn:0-486-27557-4,这个是一本书的isbn,可以唯一标识这本书
      • 二者的区别在于,URI表示请求服务器的路径,定义这么一个资源。而URL同时说明要如何访问这个资源(http://)。
        例如,一个URL通常包括三部分:
        方案部分(scheme):http://
        地址部分:www.jikexueyuan.com
        资源部分:/1.png
    • Http 请求格式:

      • 请求方法URI协议/版本
      • 请求头(Request Header)
      • 请求正文

        下面是一个HTTP请求的例子:

        GET/sample.jspHTTP/1.1

        Accept:image/gif.image/jpeg,

        Accept-Language:zh-cn

        Connection:Keep-Alive

        Host:localhost

        User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)

        Accept-Encoding:gzip,deflate



        username=jinqiao&password=1234
    • 响应格式
      HTTP应答与HTTP请求相似,HTTP响应也由3个部分构成,分别是:

      • 协议状态版本代码描述
      • 响应头(Response Header)
      • 响应正文

        下面是一个HTTP响应的例子:

        HTTP/1.1 200 OK

        Server:Apache Tomcat/5.0.12

        Date:Mon,6Oct2003 13:23:42 GMT

        Content-Length:112



        <html>..
    • Http请求方法:

      • Get:GET用于信息获取,而且应该是安全的和幂等的。
        • 所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
        • 幂等的意味着对同一URL的多个请求应该返回同样的结果
      • Post:表示可能修改变服务器上的资源的请求
      • Put、Delete:
        1. 很多人贪方便,更新资源时用了GET,因为用POST必须要到FORM(表单),这样会麻烦一点。
        2. 对资源的增,删,改,查操作,其实都可以通过GET/POST完成,不需要用到PUT和DELETE。
        3. 另外一个是,早期的Web MVC框架设计者们并没有有意识地将URL当作抽象的资源来看待和设计,所以导致一个比较严重的问题是传统的Web MVC框架基本上都只支持GET和POST两种HTTP方法,而不支持PUT和DELETE方法
      • Get和Post区别:
        1. GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),POST把提交的数据则放置在是HTTP包的包体中
        2. GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据
    • Cookie:

      • 无状态优点:减少服务器内存及CPU消耗
      • 使用:
        • 在服务器发送的响应报文中写入set-cookie字段,通知客户端保存cookie
        • 下次客户端访问服务器时,在请求报文中加入cookie值
        • 服务器根据cookie值比对记录得到状态信息
    • Http报文

      • 报文首部
        • 请求行(Uri,Http,请求方法)/响应行(状态码,原因短语,http版本)
        • 首部字段
        • 其他(包括cookie)
      • 空行
      • 报文主体
    • 状态码:

      • 1xx :请求正在处理
      • 2xx : 请求处理正常
        • 200 ok:请求处理正常,请求资源作为实体返回
        • 204 no content:请求正常处理,没有资源返回,用于只需客户端向服务器发送信息。
        • 206 partial content: 表明客户端进行部分请求
      • 3xx : 重定向
        • 301 moved permantently:资源uri永久更新
        • 302 found: 资源暂时定位到其他位置
      • 4xx : 客户端错误
        • 401 unauthorized : 请求认证未通过
        • 403 forbidden : 请求资源禁止访问
        • 404 not found : 请求资源未找到
      • 5xx : 服务器错误
    • 缓存:

      • 代理服务器(在客户端和服务器之间):
        • 缓存,减少网络带宽流量
        • 访问控制
      • 代理服务器和客户端均可进行缓存,但缓存存在有效时间,过期之后要向资源服务器更新内容
  • 相关阅读:
    Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署
    ASP.NET Core Docker部署
    将.NET Core部署在Docker
    linux 常用命令
    Wpf(Storyboard)动画简单实例
    uwp之图片旋转动画实现
    2011年度十大杰出IT博客获奖感言
    将BT下载对抗到底
    P3271 [JLOI2016]方 容斥+数学
    GCD is Funny
  • 原文地址:https://www.cnblogs.com/NewDolphin/p/5365781.html
Copyright © 2020-2023  润新知