zoukankan      html  css  js  c++  java
  • 《HTTP权威指南》读书笔记(一)

    1、因特网上有数千种不同的数据类型,HTTP仔细地给每种要通过Web传输的对象都搭上了名为MIME类型的数据格式标签。WEB服务器会为所有HTTP对象数据附加一个MIME类型。当Web浏览器从服务器中取回一个对象时,会去查看相关的MIME类型,看看它是否知道应该如何处理这个对象。

    2、MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠分隔/

        常用的MIME类型:

      •   text/html HTML格式的文本文档
      •   text/plain 普通的ASCII文本文档
      •   image/jpeg JPEG格式的图片  
      •   image/gif GIF格式的图片

        (MIME类型有很多种,详细Google或在附录找寻)

    3、URI  URL URN

      URI:服务器资源名被统称为统一资源标识符,URI就像因特网上的邮政地址一样,在世界范围内唯一标识并定位信息资源;URI有两种形式,分别成为URL和URN。

      URL: 统一资源定位符,资源标识符最常见的形式,可以明确说明如何从一个精确、固定的位置获取资源。

        大部分URL都遵循一种标准格式,包含三个部分:

      1.  方案:说明了访问资源所使用的协议类型,如:http:// https:// 等
      2.  服务器的因特网地址,如:www.google.com
      3.  其余部分:指定Web服务器上的某个资源,如:/specials/saw-blade.gif

        现在,几乎所有的URI都是URL。

      URN:统一资源名,URN是作为特定内容的唯一名称使用,和资源所在地无关;URN目前尚处于试验阶段,还没有大范围使用。

    4、一个HTTP事务由一条由客户端发往服务器的请求命令和一个从服务器发回客户端的响应结果组成。这种通讯通过名为HTTP报文的格式化数据块来进行。

    5、HTTP方法:HTTP支持几种不同的请求命令,每个HTTP请求报文都包含一个方法。常见的HTTP方法:GET、POST、PUT、DELETE、HEAD等。

    6、状态码:每条HTTP响应报文都会携带一个状态码,用于告知客户端该如何响应此报文,常用的如:200、302、404等。

    7、报文:

        HTTP报文由一行一行的简单字符串组成,HTTP报文都是纯文本,其主要包括三部分:

        • 起始行:报文的第一行为起始行,在请求报文中用来说明需要做些什么;在响应报文中说明出现了什么情况。
        • 首部字段:起始行后有零个或多个首部字段。每个首部字段为一个key-value对,格式为key:value,首部以一个空行结束。
        • 主体:首部结束空行之后,就是可选的报文主体,其中包含了所有类型的数据。请求报文中包括要发送给Web服务器的数据;响应报文中则装载了需要返回给客户端的数据。与起始行和首部字段不同的是,起始行和首部字段都是文本格式和结构化的,而主体中则可以包括任意的二进制数据(如:图片,视频等)。

    8、连接:

        HTTP是一个应用层协议,HTTP无需担心网络通信的具体细节,它把联网的细节都交给了通用可靠的TCP/IP传输协议。

        TCP/IP: TCP/IP是全世界的计算机和网络设备常用的层次化分组交换网络协议集。TCP/IP隐藏了各种网络和硬件的特点和弱点,使各种类型的计算机和网络都能进行可靠的通信。TCP提供了:

        • 无差错的数据传输;
        • 按序传输(数据总是会按照发送的顺序到达)
        • 未分段的数据流(可以在任意时间以任意尺寸将数据发送出去)

        HTTP连接流程:HTTP客户端向服务器发送报文之前,需要用IP地址和端口号在客户端和服务器端建立一条TCP/IP连接。通过URL和DNS(域名服务)可以获取到IP地址和端口号,如果没有端口号,默认的端口号为80。

        连接步骤:

      1. 浏览器从URL中解析出主机名;
      2. 浏览器将服务器主机名转换成IP地址;
      3. 浏览器将端口号从URL中解析出来;
      4. 浏览器建立一条与服务器的TCP连接;
      5. 浏览器向服务器发送一条HTTP请求报文;
      6. 服务器向浏览器发送一条HTTP响应报文;
      7. 关闭连接,浏览器显示文档;  

    9、Web重要结构组件:

      1)代理:代理位于客户端和服务器之间,接收所有客户端的HTTP请求,并将这些请求转发给服务器(可能会对请求进行修改后转发),代表用户访问浏览器。通常会将代理作为转发所有Web流量的可信任中间节点使用,或者对请求和响应进行过滤。

      2)缓存:Web缓存或代理缓存是一种特殊的HTTP代理服务器,可以将经过代理传送的常用文档复制保存起来,下一请求同一个文档的客户端将得到缓存的副本;Http定义了很多功能,使得缓存更加高效,并规范了文档的新鲜度和缓存内容的隐私性。

      3)网关:网关是一种特殊的服务器,作为其他服务器的中间实体使用。通常用于将HTTP流量转换成其他的协议,网关接受请求时就好像自己时资源的源端服务器,客户端可能并不知道自己正在与一个网关通信。例如:一个HTTP/FTP网关会通过HTTP请求接受对FTP URI的请求,但会转换成FTP协议来获取文档,得到的文档被封装成一条HTTP报文,发送给客户端。

      4)隧道:隧道是建立之后,会在两条连接之间对原始数据进行盲转发的HTTP应用程序,通常用于在一条或多条HTTP连接上转发非HTTP数据,转发时不会窥探数据。常见用途是通过HTTP连接承载加密的安全套接字层(即SSL)流量。

      5)Agent代理,代表用户发起HTTP请求的客户端程序,所有可以发送Web请求的应用程序都是HTTP Agent代理,如:浏览器、爬虫等。

    总结:

      通过对《HTTP权威指南》第一章的浏览学习,大致了解了一下HTTP的历史、报文格式、连接细节、连接流程和部分的网络术语,算是对HTTP的入门吧。

  • 相关阅读:
    不务正业系列-浅谈《过气堡垒》,一个RTS玩家的视角
    [LeetCode] 54. Spiral Matrix
    [LeetCode] 40. Combination Sum II
    138. Copy List with Random Pointer
    310. Minimum Height Trees
    4. Median of Two Sorted Arrays
    153. Find Minimum in Rotated Sorted Array
    33. Search in Rotated Sorted Array
    35. Search Insert Position
    278. First Bad Version
  • 原文地址:https://www.cnblogs.com/zoujiejun96/p/9557757.html
Copyright © 2011-2022 走看看