Http基础知识总结

第一章:HTTP概述
Web客户端与服务器是如何通信的,
表示Web内容的资源来自何方,
Web事务是怎样工作的,
HTTP通信所使用的报文格式,
底层TCP网络传输,
不同的HTTP协议
  • 1、Http使用可靠的数据传输协议
  • 2、客户端发送请求给服务器,服务器会在HTTP响应中回送所请求的数据
  • 3、Web服务器是Web资源的宿主。Web资源是Web内容的源头。
  • 4、HTTP仔细的给每种通过Web传输的对象都打上了名为MIME(媒体类型)的数据格式标签
    • Web服务器会为所有HTTP对象数据附加一个MIMT类型;Content-type:image/jpg<<<<即MIME类型
    • Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件。
形式解释
application/x-www-form-urlencodedHTTP会将请求参数用key1=val1&key2=val2的方式进行组织,并放到请求实体里面,不支持文件,一般用于表单提交
multipart/form-data与application/x-www-form-urlencoded不同,这是一个多部分多媒体类型,一般需要上传文件的表单则用该类型
application/jsonJSON是一种轻量级的数据格式,以“键-值”对的方式组织的数据,需要参数本身就是json格式的数据,参数会被直接放到请求实体里,不进行任何处理。服务端/客户端会按json格式解析数据(约定好的情况下)
application/xml 和 text/xml与application/json类似,这里用的是xml格式的数据,text/xml的话,将忽略xml数据里的编码格式
  • 建议:
    • 如果是一个restful接口(json格式),一般将Content-Type设置为application/json; charset=UTF-8;
    • 如果是文件上传,一般Content-Type设置为multipart/form-data
    • 如果普通表单提交,一般Content-Type设置为application/x-www-form-urlencoded
    • MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。
    • HTML格式的文本文档由text/html类型标记
    • 普通的ASCII文本文档由text/plain类型来标记
    • PEG格式的图片为image/jpeg类型
    • GIF格式的图片为image/gif类型
    • Apple的QuickTime电影为video/quicktime类型
    • 微软的PowerPoint演示文件为application/vnd.ms-powerpoint类型
  • 5、服务器资源名称:统一资源标识符(URI):统一资源定位符(URL:说明了协议/服务器/本地资源)和统一资源名(URN);几乎所有的URI都是URL
  • 6、一个HTTP事务由一条请求命令和一个响应结果组成
  • 7、HTTP方法:GET/PUT/DELETE/POST/HEAD
方法解释
GET从服务器向客户端发送命名资源
PUT将来自客户端的数据存储到一个命名的服务器资源中
DELETE从服务器删除命名资源
POST将客户端数据发送到一个服务器网关应用程序
HEAD仅发送命名资源响应中的HTTP首部
  • 8、常用状态码:200/302/404
状态码OK.文档正确返回
200OK.文档正确返回
302Redirect(重定向)。到其他地方区获取资源
404NotFound(没找到)。无法找到这个资源
  • 9、Web页码中可以包含多个对象
  • 10、报文:HTTP报文都是纯文本(起始行/首部字段/主体)
组成解释
起始行报文的第一行就是起始行
首部字段每个首部字段都包含一个名字和一个值,两者之间用冒号:来分隔;首部以一个空行结束
主体空行之后就是可选的报文主体,主体可以包含任意的二进制数据
  • 11、连接:报文通过传输控制协议(TCP)连接从一个地方搬移到另一个地方
    • HTTP是个应用层协议。HTTP无需操心网络通信的具体细节,他把联网的细节都交给了通用、可靠的因特网传输协议TCP/IP
    • 只要建立了TCP连接,客户端和服务器之间的报文交换就不会丢失,不会被破坏,也不会在接收时出现错序了
  • 12、连接、IP地址及端口号:
    • 在HTTP客户端向服务器发送报文之前,需要用网际协议(IP)地址和端口号在客户端和服务器之间建立一条TCP/IP连接
    • URL是资源地址,进而可以知道存储资源的机器的IP地址。DNS域名服务能够方便的将主机名转换为IP地址
      (a)浏览器从URL中解析出服务器的主机名
      (b)浏览器将服务器的主机名转换成服务器的IP地址
      (c)浏览器将端口号(如果有的话)从URL中解析出来
      (d)浏览器建立一条与Web服务器的TCP连接
      (e)浏览器向服务器发送一条HTTP请求报文
      (f)服务器向浏览器回送一条HTTP响应报文
      (g)关闭连接
  • 13、Web的结构组件:
    • 代理:位于客户端和服务器之间的HTTP中间实体
    • 缓存:HTTP的仓库,使常用页面的副本可以保存在里客户端更近的地方
    • 网关:连接其他应用程序的特殊Web服务器
    • 隧道:对HTTP通信进行盲转发的特殊代理
    • Agent代理:Web浏览器,发起自动HTTP请求的半智能Web客户端
第二章:URL与资源
URL语法
各种URL组件的含义及其所做的工作
URL编码及字符规则
各种因特网信息系统常见的URL方案
  • 1、URL分为三部分:方案、位置、资源,如:http://www.joes-hardware.com/seasonal/index-fall.html
    • 方案:http;方案可以告知Web客户端怎样访问资源,在这个例子中,URL说明要使用HTTP协议
    • 位置:www.joes-hardware.com,这部分告知Web客户端资源位于何处
    • 资源路径:/seasonal/index-fall.html 说明了请求的是服务器上哪个特定的本地资源
    • 大多数URL结构:方案://服务器位置/路径
  • 2、URL语法:9部分构成的通用格式上
    • 😕/:@:port/ ;?#
    • 几乎没有哪个URL包含了所有这些组件。URL最重要的3个部分是方案(scheme)、主机(host)和路径(path)
    • 方案:访问服务器以获取资源时要使用哪种协议,默认:无
    • 用户:某些方案访问资源时需要用的用户名,默认:匿名
    • 密码:用户名后面可能要包含的密码,中间由冒号(:)分隔,默认:<E-mail 地址>
    • 主机:资源宿主服务器的主机名或点分IP地址,默认:无
    • 端口:资源宿主服务器正在监听的端口号。很多方案都有默认端口号,(HTTP默认端口号为80),默认:每个方案特有
    • 路径:服务器上资源的本地名,由一个斜杠(/)将其与前面的URL组件分隔开来。默认:无
    • 参数:“;”参数为名/值对,URL中可以包含多个参数字段,它们相互之间以及路径的其余部分之间用分号分隔“;”
    • 查询:“?”将其与URL的其余部分分隔开来
    • 片段:“#”一小片或一部分资源的名字,引用对象时,不会将frag字段传送给服务器,这个字段在客户端内部使用的,通过字符“#”将其与URL的其余部分分隔开,服务器处理的是整个对象,因此URL片段仅客户端使用
  • 3、编码机制:通过一种“转义”表示法来表示不安全的字符,这种转义表示法包含一个百分号(%),后面跟着两个表示字符ASCII码的十六进制数
字符ASCII码示例URL
~126(0x7E)http://www.joes-hardware.com/%7Ejoe
空格32(0x20http://www.joes-hardware.com/more%20tools.html
%37(0x25)http://www.joes-hardware.com/100%25statisfaction.html
  • 4、字符限制:
字符解释
%保留作为编码字符的转义标志
/保留作为路径组件中分隔路径段的定界符
.保留在路径组件中使用
#保留作为分段定界符使用
保留作为查询字符串定界符使用
保留作为参数定界符使用
保留作为方案、用户/命令,以及主机/端口组件的定界符使用
$,+保留
@&=在某些方案的上下文中有特殊的含义,保留
{}^~[]
<>"不安全,这些字符在URL范围之外通常是有意义的,比如在文档中对URL自身进行定界,所以应该对其进行编码
0x00-0x1F,0x7F 受限这些十六进制范围内的字符都在US-ASCII字符集的不可打印区间内
  • 5、常见的方案格式
    • http:超文本传输协议方案,除了没有用户名和密码之外,与通用的URL格式相符,如果省略了端口,就默认为80
    • 基本格式:http://:/ ?#
    • 示例:http://www.joes-hardware.com/index.html
      http://www.joes-hardware.com:80/index.html
    • https:方案https与方案http是一对。唯一区别在于方案https使用了网景的SSL,SSL为HTTP连接提供了端到端的加密机制,其语法与HTTP语法相同,默认端口为443
    • 基本格式:https://:/ ?#
    • 示例:https://www.joes-hardware.com/secure.html
    • ftp:文件传输协议URL可以用来从FTP服务器上下载或向其上载文件,并获取FTP服务器上的目录结构内容的列表
    • 基本格式:ftp://:@:/ ;
    • 示例:ftp://:@:/ ;
      ftp://anonymous:joe%40joes-hardware.com@prep.ai.mit.edu:21/pub/gnu/
    • file:方案file表示一台制定主机(通过本地磁盘、网络文件系统或其他一些文件共享系统)上可直接访问的文件
    • 基本格式:file///
    • 示例:file//OFFICE-FS/policies/casual-fridays.doc
    • mailto:Mailto URL指向的是E-mail地址
    • 基本格式:mailto:
    • 示例:mailto:joe@joes-hardware.com
    • rtsp,rtspu:RTSP URL是可以通过实时流传输吸引解析的音/视频媒体资源的标识符,方案rtsup中的u表示它是使用UDP协议来获取资源的
    • 基本格式:rtsp://:@:/
      rtspu://:@:/
    • 示例:rtsp://www.joes-hardware.com:554/interview/cto_video
    • news:用来访问一些特定的文章或新闻组
    • telnet:用于访问交互式业务。
第三章:HTTP报文
报文是如何流动的,
HTTP报文的三个组成部分(起始行、首部和实体的主体部分),
请求和响应报文之间的区别,
请求报文支持的各种功能(方法),
和响应报文一起返回的各种状态码,
各种各样的HTTP首部都是用来做什么的
  • 1、报文流,HTTP报文是在HTTP应用程序之间发送的数据块。这些数据以一些文本形式的元信息开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分
    • 术语“流入”、“流出”、“上游”及“下游”都是用来描述报文方向的
    • HTTP报文流入源端服务器,HTTP使用术语流入和流出来描述事务处理的方向。报文流入源端服务器。工作完成之后,会流回用户的Agent代理中
    • 所有报文都向下游流动,所有报文的发送者都在接收者的上游
  • 2、报文由三部分组成:对报文描述的起始行,包含属性的首部块,以及可选的包含数据的主体部分
  • 3、报文的语法:所有的HTTP报文都可以分为两类:请求报文和响应报文
    在这里插入图片描述
  • 4、起始行:所有的HTTP报文都以一个起始行作为开始。请求报文的起始行说明了要做些什么,响应报文的起始行说明发生了什么
  • 5、请求行:请求报文的起始行,或称为请求行,包含了一个方法和一个请求URL以及HTTP版本
  • 6、响应行:响应报文的起始行称为响应行,响应报文承载了状态信息和操作产生的所有结果数据,将其返回给客户端。包含了HTTP版本、数字状态码、以及描述操作状态的文本形式的原因短语;所有这些字段都由空格符进行分隔
  • 7、方法:
    • GET:从服务器获取一份文档,不包含主体
    • HEAD:只从服务器获取文档的首部,不包含主体
    • POST:向服务器发送需要处理的数据,包含主体
    • PUT:将请求的主体部分存储在服务器上,包含主体
    • TRACE:对可能经过代理服务器传送到服务器上去的报文进行追踪,不包含主体
    • OPTIONS:决定可以在服务器上执行哪些方法,不包含主体
    • DELETE:从服务器上执行哪些方法
  • 8、状态码:方法是用来告诉服务器做什么事情的,状态码则用来告诉客户端,发生了什么事情
    • 1**:信息提示(100~101)
    • 2**:成功(200~206)
    • 3**:重定向(300~305)
    • 4**:客户端错误(400~415)
    • 5**:服务器错误(500~505)
  • 9、常见的状态码:
    • 200>OK>成功。请求的所有数据都在响应主体中
    • 401>Unauthorized(未授权)>需要输入用户名和密码
    • 404>Not Found(未找到)>服务器无法找到所请求URL对应的资源
  • 10、原因短语:它为状态码提供了文本形式的解释
  • 11、 版本号:说明了应用程序支持的最高HTTP版本
  • 12、首部:向请求和报文中添加了一些附加信息,本质上说,它们只是一些名/值对的列表,语法:名字后面跟着冒号(😃,然后跟上可选的空格,再跟上字段值,最后一个CRLF
  • 13、HTTP首部可以分为以下几类,通用首部:既可以出现在请求报文中,也可以出现在响应报文中
    • 请求首部
    • 响应首部
    • 实体首部:描述主体的长度和内容,或者资源本身
    • 扩展首部:规范中没有定义的新首部
    • 实体的主体部分:就是HTTP要传输的内容
  • 14、状态码:
  • 15、100~199:信息状态码,100 Continue 说明收到了请求的初始部分,请客户端继续。发送了这个状态码之后,服务器再收到请求之后必须进行响应
    • 101 Switching Protocols 说明服务器正在根据客户端的指定,将协议切换成Update首部所列的协议
  • 16、200~299:成功状态码,200 OK 请求没问题,实体的主体部分包含了所有请求的资源
    • 201 Created 用于创建服务器对象的请求。
    • 202 Accepted 请求已被接受,但服务器还未对其执行任何动作。
    • 203 Non-Authoritative Information 实体首部包含的信息不是来自于源端服务器,而是来自资源的一份副本
    • 204 No Content 响应报文中包含若干首部和一个状态行,但没有实体的主体部分
    • 205 Reset Content 另一个主要用于浏览器的代码,负责告知浏览器清除当前页面中所有HTML表单元素
    • 206 Partial Content 成功执行了一个部分或Range(范围)请求,206响应中必须包含Content-Range、Date以及ETag或Content-Location首部
  • 17、300~399:重定向状态码,要么告知客户端使用替代位置来访问它们所感兴趣的资源,要么就提供一个替代的响应而不是资源的内容
    • 300 Multiple Choices 客户端请求一个实际指向多个资源的URL时会返回这个状态码
    • 301 Moved Permanently 在请求的URL已被移除时使用。响应的Location首部中应该包含资源现在所处的URL
    • 302 Found 与301状态码类似;但是,客户端应该使用Location首部给出的URL来临时定位资源,将来的请求仍应用老的URL(HTTP/1.0)
    • 303 See Other 告知客户端应该用另一个URL来获取资源,新的URL位于响应报文的Location首部,其主要目的是允许POST请求的响应将客户端定向到某个资源上去
    • 304 Not Modified 客户端可以通过所包含的请求首部,是请求变成由条件的,如果客户端发送了一个特殊的If-Modified-Since首部,说明只读取1997年10月之后修改过的文档。这个日期之后,此文档未被修改过,因此,服务器发送了一个304状态码,而不是文档的内容
    • 305 Use Proxy 用来说明必须通过一个代理来访问资源,代理的位置由Location首部给出
    • 307 Temporary Redirect 与301状态码类似;但客户端应该使用Location首部给出的URL来临时定位资源。将来的请求应该使用老的URL(HTTP/1.1)
  • 18、400~499:客户端错误状态码,有时候客户端会发送一些服务器无法处理的东西,比如格式错误的请求报文,或者最常见的是404,表明服务器对我们请求的资源一无所知
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值