We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HTTP(Hypertext Transfer Protocol, 超文本传输协议),http起初是一个简单协议,因此你也许以为这个没什么好说的,请看目录,你会发现这本书是web架构“圣经”。 纵观全书,我们对于http不仅仅停留在表现,而是深入浅出解释了。这是一本cs(compute science)基础书籍。好吧,我应该补基础了。
本书分为5部分
每天网络上,充斥着各种,资源,jpg,html页面,mpeg电影,WAV音频文件,java小程序,等,而http可以从全世界各个地方的web服务器上将这些信息迅速便捷搬移到人们桌面上的web浏览器上面, http采用可靠的数据传输协议,因此,即使数据来自地球另一端,也可以准确的把数据传给我,并不发生损坏。下面来讲一下,近距离观察,http是如何传输web流量的。
http客户端发出请求,服务器会根据协议,解析,发送提供数据。这是万维网的基本组件。 当你浏览一个页面比如www.baidu.com的时候,浏览器向服务器发送请求,,服务器默认发送index.html文件给浏览器。
web服务器是web资源的宿主,而web资源是web内容的源头,这些文件包括任意内容,如html,word文件,图片文件,avi电影, 但同时资源文件不一定是静态文件,资源也可以是根据资源生成的软件程序。例如JSON数组。
MIME(Multipurpose Internet Mail Extension, 多用途因特网邮件扩展),这个是为了在不同邮件系统中挪移报文。http同样采用了它,并且用它标记多媒体内容, web服务器会为所有HTTP对象附加一个MIME类型,MIME是一种文本标记,表示对象类型,和特定子类型,
常见的类型有数百种。
每一个web服务器都有一个名字,服务器资源名称 为 统一资源标识符(Uniform Resource Identifier, URL)。URL就像一个地址一样,在全世界范围内标识并定位资源信息。 URI有两种形式 URL,和URN
http://
作为网络上唯一名称使用的,这种与资源所在地无关,就可以将资源四处搬移,
http支持不同几种请求命令,常见的包括如下
HTTP报文有一行行简单的字符串组成,HTTP报文都是纯文本,而不是二进制码, http报文主要分为下面3部分
起始行 主要用来说明请求用来做什么,在响应报文中描述了出现了什么情况,是200还是302
首部字段 起始行后面有0或者多个首部字段,每一行都包括一个名字和一个值,
主体 空行之后就是可选的报文主体,其中包含了所有类型的数据,请求柱体包括了要发给服务器的数据,响应主体包括了返回给客户的数据,可以是任意的二进制内容,也可以是文本。
讲一下,报文如何通过传输控制协议(Transmission Control Protocol,TCP),连接从一个地方搬移到另一个地方去。
http是应用层协议,HTTP无需操心网络通信的具体细节,他把网络的细节都交给了通用可靠的因特网传输协议:TCP/IP TCP提供了:
因特网本身就是基于TCP/IP的,这个是全世界计算机和网络设备常用的层次化分组交换网络协议,TCP/IP隐藏了硬件的弱点和特点,。安全通讯。
在http客户端向服务端发送报文之前,需要用到网络协议(Internet Protocol , IP),在网络协议地址和端口号在客户和服务器之间建立一条TCP/IP连接。
至于如何获得HTTP服务器和IP地址呢?当然是通过URL了,URL就是资源地址, 步骤如下:
本章重点介绍2个web应用程序,web浏览器和web服务器
代理 位于客户端和服务器之间http中间实体。
缓存 http仓库,是常用页面的副本得到保存,可以离客户更近的地方
网关 连接其他应用的特殊web服务器
隧道 对http通信报文进盲转发的特殊处理
Agent 代理 发起自动http请求的半智能web客户端。
首先看 http代理服务器,这是web安全,应用集成以及性能优化的重要组成模块。处于安全考虑,比如企业对下载内容进行病毒检测,或者屏蔽成人网站,,代理可以对请求和响应进行过滤。
这是一种特殊的http代理服务器,可以将经过代理传送的常用文档复制保存起来。
网关是一种特殊服务器,作为接受其他服务器中间体使用,通常用于将http流量转换成其他协议。
http隧道是一种常见的用途是通过http连接承载加密安全套接字层流量,
用户agent代理是代表用户发起http请求的客户端程序。所有发布web请求都是通过agent代理。最常见的agent代理就是浏览器,但是还有很多其他的代理,比如网络蜘蛛,或者web机器人。自动搜索引擎就是web蜘蛛,它可以从世界范围获取web页面,
所有的东西都有编号,比如快递收货地址,只有这样,整个城市协作才能进行下去。
那么不得不提到URL,他是URI的子集,它通过资源位置来识别资源。URL分成3部分
同时,URL可以通过HTTP之外的其他协议访问资源,他们指向因特网上的任意资源,
URL提供了一种统一的资源命名方式,大多数URL都有同样的:"方案://服务器位置/路径"
<scheme>://<user>:<password>@<host>:<prot>/<path>;<params>?<query>#<frag>
简单来说http报文就是http所搬运的东西。
http使用术语流入和流出,分别代表发送,request,response, 所有报文都是向下移动的。
require使用哪种http,get还是post方法,reponse 200还是404
http方法+200/404
get post
ok
http1.1/http2。0
Content-length: 19
get方法 最常用的方法,一般用于获取文件
head,方法,获取头部信息,不获取 主体信息,
PUT方法 与get完全相反,put用于向服务器写入文档,有些发布系统允许用户创建web界面,并用put直接将其安装到web服务器上面去。
POST方法 用于向服务器传输数据,一般用于发送表单。
TRACE 客户端发送一个请求,这个请求可能穿过防火墙,代理,网关,或者其他地方,这些都有可能修改原始的http请求,Trace允许用户查看最总请求服务器的时候是什么样。
OPTIONS 允许请求服务器告知其支持的各种功能,可以询问服务器通常支持哪些方法,或者对某些方法,支持哪些方法。
delete 用于删除文件,
http被设计成可扩展的,这样。
总共五大类1xx,2xx,3xx,4xx,5xx
如果客户端在向服务器发送一个实体,并且愿意在发送实体之前等待100 Continue响应,那么客户端就要发送一个携带了值为100 Continue 的Expect请求首部,如果客户端没有实体,就不应该100 Continue Expect 首部,因为这样会让服务器误以为客户端要发送一个实体。
从多个角度来说,100 Continue都是一种优化。客户端应用程序只有避免向服务器发送一个服务器无法处理或使用的大实体时候,才应该使用100Continue。
由于起初对100 Continue状态存在一些困惑(而且以前有些实现在这里出过的问题),因此发送了值为100Continue响应,超时一定的时候,客户端应该直接将实体发送出去。
实际上,客户端程序的实现者也应该做好应对非预期 100 Continue响应的准备。 作为三次握手的第一个步骤,发送100
如果服务器收到了一条带有值为100 Continue的expect首部请求,他会用到100 Continue响应或一条错误码来进行响应,服务器永远不应该向没有发送100 Continue期望客户端发送100 Continue状态码。但是错误的服务器可能会这么做。
这就是为什么要三次握手,第一次a发,b收,b可以得出结论a能发验证码,第二次b发a收,a可以得出结论,b正常,可以接收到他发的信息,同时可以发回信息给他,第三次,a又重新发信息给b,b受到信息后得出结论,不单是可以发信息的,同时,他也收到了我发的信息。通过三次握手,得出a,b互相得出结论,他们都具备收发功能。
代理收到100 期望请求,他需要做如下事情,
首部有以下5种类型
Date:Tue,3 Oct 1974 02:16:00
Accept: "/"
Server: Tiki - Hut/1.0
Content-Type: text/html; charset=iso-latin-1
有些首部提供了与报文相关的最基本信息,他们称之为通用首部,他们向和事佬一样,无论是报文是什么类型,都为其提供一些有用信息。 例如:不管是构建请求报文还是响应报文,创建报文的日期和时间都一样。
HTTP/1.0引入了第一个允许HTTP应用程序缓存对象本地副本的首部,这样就不能需要总是从服务端获取了。
HTTP本身就是支持一种简单机制,可以对请求进行质询/响应认证,这种机制要求客户端在获取特定的资源之前,先对自身进行认证,这样就可以使事物稍微安全一些,
随着internet,发展,网上代理普遍应用,人们定义了几个首部来协助其他更好的工作,
响应报文有自己的响应首部。响应首部为客户端提供了一些额外信息,比如谁在发送响应,响应者功能,
日过资源有多种表示方法
2.安全响应首部
许多有首部的可以用来表示http报文的负荷,由于请求响应报文中都可以可能包含实体部分,所以在这两种类型的报文都可以出现这些首部。
实体首部提供了有关实体及其内容的大量信息,,总之,实体首部可以告诉报文的接收者他在对什么进行处理。
内容首部提供了与实体内容有关的特定信息,说明了类型,尺寸以及处理他们所需的其他有用信息,比如web浏览器可以通过查看返回的内容类型,
The text was updated successfully, but these errors were encountered:
plh97
No branches or pull requests
以前一直以为http就是个协议,内容很少,直到我买了http权威指南这本600页厚的书,我才发现,我的基础实在太差了。涨知识。只是觉得这本书开头部分印证了我之前零散的观点,然后就要今天一整天在家看了60页。我终于不害怕整一天宅房间里了。
http分为三部分 1.起始行。2.首部,3.主体。
网络5个层次 1.http应用层。2.TCP-传输层。3.IP-网络层。4.网络特有链路接口-数据链路层。5.物理网络硬件-物理层
前言
HTTP(Hypertext Transfer Protocol, 超文本传输协议),http起初是一个简单协议,因此你也许以为这个没什么好说的,请看目录,你会发现这本书是web架构“圣经”。
纵观全书,我们对于http不仅仅停留在表现,而是深入浅出解释了。这是一本cs(compute science)基础书籍。好吧,我应该补基础了。
本书分为5部分
第一章 http概述
1.1 http ,多媒体信使,
每天网络上,充斥着各种,资源,jpg,html页面,mpeg电影,WAV音频文件,java小程序,等,而http可以从全世界各个地方的web服务器上将这些信息迅速便捷搬移到人们桌面上的web浏览器上面,
http采用可靠的数据传输协议,因此,即使数据来自地球另一端,也可以准确的把数据传给我,并不发生损坏。下面来讲一下,近距离观察,http是如何传输web流量的。
1.2 web客户端和服务端
http客户端发出请求,服务器会根据协议,解析,发送提供数据。这是万维网的基本组件。
当你浏览一个页面比如www.baidu.com的时候,浏览器向服务器发送请求,,服务器默认发送index.html文件给浏览器。
1.3 资源
非常长知识啊。
web服务器是web资源的宿主,而web资源是web内容的源头,这些文件包括任意内容,如html,word文件,图片文件,avi电影,
但同时资源文件不一定是静态文件,资源也可以是根据资源生成的软件程序。例如JSON数组。
媒介类型
MIME(Multipurpose Internet Mail Extension, 多用途因特网邮件扩展),这个是为了在不同邮件系统中挪移报文。http同样采用了它,并且用它标记多媒体内容,
web服务器会为所有HTTP对象附加一个MIME类型,MIME是一种文本标记,表示对象类型,和特定子类型,
常见的类型有数百种。
URI
每一个web服务器都有一个名字,服务器资源名称 为 统一资源标识符(Uniform Resource Identifier, URL)。URL就像一个地址一样,在全世界范围内标识并定位资源信息。
URI有两种形式 URL,和URN
大部分URL分为三部分
http://
这部分1.3.4URN
作为网络上唯一名称使用的,这种与资源所在地无关,就可以将资源四处搬移,
1.3 方法
http支持不同几种请求命令,常见的包括如下
状态码
1.5 报文
HTTP报文有一行行简单的字符串组成,HTTP报文都是纯文本,而不是二进制码,
http报文主要分为下面3部分
起始行 主要用来说明请求用来做什么,在响应报文中描述了出现了什么情况,是200还是302
首部字段 起始行后面有0或者多个首部字段,每一行都包括一个名字和一个值,
主体 空行之后就是可选的报文主体,其中包含了所有类型的数据,请求柱体包括了要发给服务器的数据,响应主体包括了返回给客户的数据,可以是任意的二进制内容,也可以是文本。
1.6 连接
讲一下,报文如何通过传输控制协议(Transmission Control Protocol,TCP),连接从一个地方搬移到另一个地方去。
1.61 TCP/IP
http是应用层协议,HTTP无需操心网络通信的具体细节,他把网络的细节都交给了通用可靠的因特网传输协议:TCP/IP
TCP提供了:
因特网本身就是基于TCP/IP的,这个是全世界计算机和网络设备常用的层次化分组交换网络协议,TCP/IP隐藏了硬件的弱点和特点,。安全通讯。
1.6.2 连接 IP地址 以及端口号
在http客户端向服务端发送报文之前,需要用到网络协议(Internet Protocol , IP),在网络协议地址和端口号在客户和服务器之间建立一条TCP/IP连接。
至于如何获得HTTP服务器和IP地址呢?当然是通过URL了,URL就是资源地址,
步骤如下:
1.8 Web的结构组件
本章重点介绍2个web应用程序,web浏览器和web服务器
代理
位于客户端和服务器之间http中间实体。
缓存
http仓库,是常用页面的副本得到保存,可以离客户更近的地方
网关
连接其他应用的特殊web服务器
隧道
对http通信报文进盲转发的特殊处理
Agent 代理
发起自动http请求的半智能web客户端。
1.8.1 代理
首先看 http代理服务器,这是web安全,应用集成以及性能优化的重要组成模块。处于安全考虑,比如企业对下载内容进行病毒检测,或者屏蔽成人网站,,代理可以对请求和响应进行过滤。
1.8.2 缓存
这是一种特殊的http代理服务器,可以将经过代理传送的常用文档复制保存起来。
1.8.2 网关
网关是一种特殊服务器,作为接受其他服务器中间体使用,通常用于将http流量转换成其他协议。
1.8.3 隧道,
http隧道是一种常见的用途是通过http连接承载加密安全套接字层流量,
1.8.5 Agent代理
用户agent代理是代表用户发起http请求的客户端程序。所有发布web请求都是通过agent代理。最常见的agent代理就是浏览器,但是还有很多其他的代理,比如网络蜘蛛,或者web机器人。自动搜索引擎就是web蜘蛛,它可以从世界范围获取web页面,
第二章 URL与资源
所有的东西都有编号,比如快递收货地址,只有这样,整个城市协作才能进行下去。
2.1浏览因特网资源
那么不得不提到URL,他是URI的子集,它通过资源位置来识别资源。URL分成3部分
同时,URL可以通过HTTP之外的其他协议访问资源,他们指向因特网上的任意资源,
URL提供了一种统一的资源命名方式,大多数URL都有同样的:"方案://服务器位置/路径"
2.2 URL语法
2.5 常见的web方案
第三章 http报文
简单来说http报文就是http所搬运的东西。
3.1.1 报文流入源端服务器
http使用术语流入和流出,分别代表发送,request,response,
所有报文都是向下移动的。
报文组成部分
1.起始行
require使用哪种http,get还是post方法,reponse 200还是404
2.响应行
http方法+200/404
3.方法
get post
4.状态码200
5.原因短语
ok
6.版本号
http1.1/http2。0
3.2.3 首部
Content-length: 19
3.3 方法。
get方法 最常用的方法,一般用于获取文件
head,方法,获取头部信息,不获取 主体信息,
只有当服务器开发者为了保证head返回的和get请求所返回的完全相同,遵循http1.1规范,那就必须实现HEAD方法,
PUT方法
与get完全相反,put用于向服务器写入文档,有些发布系统允许用户创建web界面,并用put直接将其安装到web服务器上面去。
POST方法
用于向服务器传输数据,一般用于发送表单。
TRACE
客户端发送一个请求,这个请求可能穿过防火墙,代理,网关,或者其他地方,这些都有可能修改原始的http请求,Trace允许用户查看最总请求服务器的时候是什么样。
OPTIONS
允许请求服务器告知其支持的各种功能,可以询问服务器通常支持哪些方法,或者对某些方法,支持哪些方法。
delete
用于删除文件,
扩展方法
http被设计成可扩展的,这样。
3.4 状态码
总共五大类1xx,2xx,3xx,4xx,5xx
1。 客户端与100 Continue
如果客户端在向服务器发送一个实体,并且愿意在发送实体之前等待100 Continue响应,那么客户端就要发送一个携带了值为100 Continue 的Expect请求首部,如果客户端没有实体,就不应该100 Continue Expect 首部,因为这样会让服务器误以为客户端要发送一个实体。
从多个角度来说,100 Continue都是一种优化。客户端应用程序只有避免向服务器发送一个服务器无法处理或使用的大实体时候,才应该使用100Continue。
由于起初对100 Continue状态存在一些困惑(而且以前有些实现在这里出过的问题),因此发送了值为100Continue响应,超时一定的时候,客户端应该直接将实体发送出去。
实际上,客户端程序的实现者也应该做好应对非预期 100 Continue响应的准备。
作为三次握手的第一个步骤,发送100
2.服务器与 100 Continue
如果服务器收到了一条带有值为100 Continue的expect首部请求,他会用到100 Continue响应或一条错误码来进行响应,服务器永远不应该向没有发送100 Continue期望客户端发送100 Continue状态码。但是错误的服务器可能会这么做。
这就是为什么要三次握手,第一次a发,b收,b可以得出结论a能发验证码,第二次b发a收,a可以得出结论,b正常,可以接收到他发的信息,同时可以发回信息给他,第三次,a又重新发信息给b,b受到信息后得出结论,不单是可以发信息的,同时,他也收到了我发的信息。通过三次握手,得出a,b互相得出结论,他们都具备收发功能。
3.代理与100 Continue的关系,
代理收到100 期望请求,他需要做如下事情,
但是如果代理服务器与http/1.0之前版本兼容,在请求中放入expect首部和100Continue 值,那么,他就不该将100Continue响应发给客户端,
代理维护一下关于下一条服务器是否支持所支持http版本的状态信息是有好处的,这样就能更好的处理哪些带有100 Continue请求。
2xx 状态码
3xx:::重定向请求
4xx客户端错误状态码
5xx 服务器错误状态码
3.5 首部
首部有以下5种类型
请求报文所特有的
通用首部
有些首部提供了与报文相关的最基本信息,他们称之为通用首部,他们向和事佬一样,无论是报文是什么类型,都为其提供一些有用信息。
例如:不管是构建请求报文还是响应报文,创建报文的日期和时间都一样。
通用缓存首部
HTTP/1.0引入了第一个允许HTTP应用程序缓存对象本地副本的首部,这样就不能需要总是从服务端获取了。
1. Accept 首部
有时候客户端洗碗加上某些限制,比如,如果客户端已经有了一份文档副本,就希望只在服务器上的文档与客户端拥有的副本所有区别时,才请求传输文档,
3.安全请求首部
HTTP本身就是支持一种简单机制,可以对请求进行质询/响应认证,这种机制要求客户端在获取特定的资源之前,先对自身进行认证,这样就可以使事物稍微安全一些,
4.代理请求首部
随着internet,发展,网上代理普遍应用,人们定义了几个首部来协助其他更好的工作,
3.5.3 响应首部
响应报文有自己的响应首部。响应首部为客户端提供了一些额外信息,比如谁在发送响应,响应者功能,
1.协商首部
日过资源有多种表示方法
2.安全响应首部
3.5.4 实体首部
许多有首部的可以用来表示http报文的负荷,由于请求响应报文中都可以可能包含实体部分,所以在这两种类型的报文都可以出现这些首部。
实体首部提供了有关实体及其内容的大量信息,,总之,实体首部可以告诉报文的接收者他在对什么进行处理。
1.内容首部,
内容首部提供了与实体内容有关的特定信息,说明了类型,尺寸以及处理他们所需的其他有用信息,比如web浏览器可以通过查看返回的内容类型,
2.实体缓存首部
The text was updated successfully, but these errors were encountered: