图解HTTP学习
来源:互联网 发布:c语音递归算法1加到100 编辑:程序博客网 时间:2024/06/15 22:13
图解HTTP学习
1.TCP协议的三次握手:
通过两个标志(flag) SYN(syncharonize)和ACK(acknowledgement)
1.发送端:发送标有SYN的数据包。
2.接受端:收到,发送标有SYN和ACK的数据包给发送端。
3.发送端:收到,发送标有ACK的数据包给接收端。
DNS服务器
DNS服务器将域名转换为IP地址。
URI (统一资源标识符)
Uniform Resource Identifier的缩写。
URI是由某个协议方案表示的资源的定位标识符。协议方案是指访问资源所使用的协议类型名称。
包括 http、ftp、mailto、file等,大约有30种左右。
URL是URI的子集。
HTTP协议是不保存状态的协议
所以引入了cookie机制。
告知服务器意图的http 方法
1.GET 获取资源
2.POST 传输实体主体
3.PUT 传输文件 :要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。
4.HEAD 获得报文首部 :和GET方法一样,只是不返回报文主体部分,用于制定URI的有效性及资源更新的日期时间等。
5.DELETE 删除文件
6.TRACE 追踪路径
7.CONNECT 要求用隧道协议连接代理 主要 SSL和TLS
非持久连接、持久连接和管线化
使用Cookie进行状态管理
Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。
Cookie会更具从服务器端发动的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。
当下次客户端再往服务器发送请求屎,客户端会自动在请求报文中加入Cookie值后发送出去。
服务器端发现客户端发送过来的Cookie后,会检查究竟是从哪个客户端发来的连接请求,然后对比服务器上的记录。
最后得到之前的状态信息。
内容编码
- gzip(GNU zip)
- compress(UNIX 系统的标准压缩)
- deflate (zlib)
- identity (不进行编码)
获取部分内容的范围请求(Range Request)
内容协商
内容协商机制是指客户端和服务器端就响应的资源内容进行交涉、然后提供给客户端最为适合的资源。
状态码
- 1XX infromational 接受请求正在处理
- 2XX success 请求正常处理完毕
- 3XX redirection 重定向状态码 需要进行附加操作以完成请求
- 4XX Client Error 客户端错误状态码 服务器无法处理请求
5XX Servier Error 服务器错误状态码 服务器处理请求出错
- 2XX 成功
200 OK
- 204 No Content 请求处理成功但是没有资源可以返回。
206 Partial Content 响应报文中包含由Content-Range指定范围的实体内容。
- 3XX 重定向
301 Moved Permanently 永久性重定向
- 302 Found 临时性重定向 表示请求资源已被分配新的URI 希望用户(本次)能使用新的URI访问。
- 303 See Other 由于请求对应的资源存在着另外一个URI,应使用GET方法定向获取请求的资源。
- 304 Not Modified 客户端发送附带条件的请求,服务端允许请求访问资源,但未满足条件的情况。
305 Temporary Redirect 临时重定向 类似302
- 4XX 客户端错误
400 Bad Request 请求报文中存在语法错误
- 401 Unauthorized 表示请求需要有通过HTTP认证的认证信息。
- 403 Forbidden 服务器拒绝了请求。 (例如位夺得文件系统的访问授权)
404 Not Found 服务器无法找到请求的资源。
- 5XX 服务器错误
500 Internal Servier Error 服务器错误.
- 503 Service Unavailable 服务器暂时处于超负荷或者正在进行停机维护。
HTTP请求报文
由 方法 URI HTTP版本 HTTP 首部字段等部分构成。
HTTP响应报文
由 HTTP版本、状态码(数字和原因短语)、HTTP首部字段。
4种HTTP首部字段类型
- 通用首部字段(General Header Fields) 请求报文和响应报文两方都会使用的首部
- 请求首部字段(Request Header Fields)
- 响应首部字段(Response Header Fields)
- 实体首部字段(Entity Header Fields)
HTTP/1.1通用首部字段
- Cache-Control
缓存请求指令:
缓存响应指令:
2. Connection
作用
- 控制不再转发给代理的首部字段
Connection: 不再转发的首部字段名 - 管理持久连接
Connection: close
HTTP/1.1 版本默认连接是持久连接。因此,客户端会在持久连接上连续发送请求。当服务器端想明确断开连接时,
则制定Connection首部字段的值为Close。
Connection: Keep-Alive
HTTP/1.1之前的HTTP版本的默认连接是非持久连接。因此,如果想在旧版本上的HTTP协议上维持持续连接,
则需要制定Connection首部字段的值为 Keep—Alive。
Date 表明创建HTTP报文的日期和时间
Pragma 是HTTP/1.1之前版本的历史遗留字段,仅作为与HTTP/1.0的向后兼容而定义。
形式唯一。Pragma: no-cache 仅用在客户端发送请求中,要求中间服务器不返回缓存资源。
Trailer 会事先说明在报文主体后记录了那些首部字段。该首部字段可应用在HTTP/1.1版本分块传输编码时。
Transfer-Encoding 规定了传输报文主体时采用的编码方式。
Upgrade 用于检测HTTP 协议及其他协议是否可使用更高的版本通信。
Via 使用Via 为了追踪客户端与服务器之间的请求和响应报文的传输路径。
Waring 告知用户一些与缓存相关问题的警告。
请求首部字段
Accept 首部字段可通知服务器,用户代理能够处理的媒体类型及媒体类型的相对优先级。
可使用 type/subtype这种形式,一次指定多种媒体类型。
若想要给显示的媒体类型增加优先级,则使用q=来额外表示权重值,用分号(;)进行分隔。权重值q的范围是0~1Accept-Charset 用来通知服务器用户代理支持的字符集及字符集的相对优先顺序。
Accept-Encoding 用来告知服务器用户代理支持的内容编码及内容编码的优先级顺序。
Accept-Language 用来告知服务器用户代理能够处理的自然语言集。
Authorization 用来告知服务器用户代理的认证信息。
Expect 用来告知服务器期望出现某种特定的行为。
From 用来告知服务器使用用户代理的用户的电子邮件地址。
Host 虚拟主机运行在同一个IP上,因此使用首部字段Host加以区分。必须包含子请求内的首部字段。
If-Match If-xxx 这种样式的请求首部字段,被称为条件请求。服务器接收到附带条件的请求后,只有判断制定条件为真时,才会执行请求。
If-Match 告知服务器匹配资源所用的实体标记(Etag)值。仅当If-Match 字段值和资源的Etag值一致时,
才会执行请求。否则返回 412 Precondition Failed 。If-Modified-Since 如果在If-Modified-Since 字段制定的日期时间后,资源发生过更新,服务器会接受请求。
否则返回 304 Not ModifiedIf-None-Match 和If-Match 作用相反。
If-Range 若是跟Etag值或更新的日期时间匹配一致,那么就作为范围请求处理。
若不一致,则忽略范围请求,返回全部资源。If-Unmodified-Since 与If-Modified-Since 作用相反,之后在字段时间内资源未发生过变化。才会做出响应。
Max-Forwards 只能向下转发次数。每次转发减1。当数值变0时返回响应。
Proxy-Authorization 告知代理服务器认证所需要的信息。
Range 告知服务器请求资源的制定范围。
Referer 告知服务器请求的原始资源的URI。
TE 告知服务器 客户端能够处理响应的传输编码方式及相对优先级。
User-Agent 会将创建请求的浏览器和用户代理名称等信息传达给服务器。
响应首部字段
Accept-Ranges 告知客户端 服务器是否能处理范围请求。可处理范围请求时指定其为bytes,反之则指定其为none。
Age 告知客户端,源服务器多久前创建了响应。字段值的单位为妙。
Etag 告知客户端实体标识。服务器会为每份资源分配对应的Etag值。当资源更新时,Etag值也需要更新。
Etag值 有强Etag值 和 弱ETag值 之分
强Etag值:无论实体发生多么细微的变化都会改变其值。 Etag:“usagi-1234”
弱Etag值:只用于提示资源是否相同。只有资源发生了根本改变,产生差异时才会改变Etag值。这时,会在字段值最开始处附加W/。 Etag:W/“usagi-1234”
Location 引导至某个与请求URI 位置不同的资源。该字段配合3XX:Redirection 的响应,提供重定向的URI。
Proxy-Authenticate 会把由代理服务器所要求的认证信息发送给客户端。
Retry-After 告知客户端应该多久后再次发送请求。
Server 告知客户端当前服务器安装的HTTP服务器应用程序信息。
Vary 可对缓存进行控制。源服务器会向代理服务器传达关于本子缓存使用方法的命令。
WWW-Authenticate 用于HTTP访问认证。
实体首部字段
Allow 通知客户端能够支持Request-URI 指定资源的所有HTTP方法。 方服务器接收到不支持的HTTP方法时,
会以状态码405 Method Not Allowed 作为响应返回。Content-Encoding 告知客户端服务器对实体的主体部分选用的内容编码方式。
主要包括4种: gzip;compress;deflate;identity。Content-Lanuage 告知客户单实体主体使用的自然语言(中文 英文等)
Content-Length 表明实体主体部分的大小。
Content-Location 给出报文主体部分相对应的URI。
Content-MD5 一串由MD5算法生成的值,其目的在于检查报文主体在传输过程中是否保持完成,以及确认传输到达。
Content-Range 告知客户端为响应返回的实体的那个部分符合范围请求。
Content-Type 说明实体主体内对象的媒体类型。
Expires 告知资源失效的日期。和 max-age相比 优先处理max-age。
Last-Modified 指明资源最终修改的时间。
为Cookie服务的首部字段
Set-Cookie 开始状态管理所使用的Cookie信息 响应首部字段
Cookie 服务器接受的Cookie信息
其他请求首部字段
X-Frame-Options 属于HTTP响应首部,用于控制网站内容在其他Web网站的Frame标签内的显示问题。
主要目的是为了防止点击劫持(clicjacking)攻击。
两个可指定字段值:* DENY:拒绝 * SAMEORIGIN:仅同源名下的页面匹配时许可。X-XSS-Protection 属于HTTP响应首部,它是针对跨站脚本攻击(XSS)的一种对策,用于控制浏览器
XSS防护机制的开关。
0:将XSS过滤设置为无效状态。
1:将XSS过滤设置成有效状态。DNT 属于HTTP请求首部,DNT = Do Not Track 意为拒绝个人信息被收集,是表示拒绝被精准广告追踪的一种方法。
0:同意被追踪
1:拒绝被追踪P3P 属于HTTP响应首部,通过利用P3P(The Platform for Privacy Preferences, 在线隐私偏好平台)技术,
可以让Web网站上的个人隐私变成一种仅供程序可理解的形式,以达到保护用户隐私的目的。
HTTPS
HTTP报文使用明文方式发送。
通信加密 HTTP可以通过和SSL或TLS组合使用,加密HTTP的通信内容。
用SSL简历安全通信线路之后,就可以在这条线路上进行HTTP通信了。与SSL组合使用的HTTP被称为HTTPS内容加密
HTTP是身披SSL外壳的HTTP。SSL采用一种公开密钥加密的加密处理方式。
确认访问用户身份的认证
HTTP/1.1使用的认证方式
- BASIC认证(基本认证) 以 用户名:密码 然后采用Base64编码方式加密。不常用。
- DIGEST认证 将密码传输进行MD5加密。
- SSL客户端认证 通过SSL客户端证书来认证客户端计算机;通过密码来确认用户本人的行为。
- 基于表单认证 并不是HTTP协议中定义的。客户端会向服务器上的Web应用程序发送登录信息,按登录信息的验证结果认证。
认证多半为基于表单认证。
Session管理及Cookie应用,使用Cookie来管理session,以弥补HTTP 协议中不存在的状态管理功能。
HTTP追加协议
SPDY 目标旨在解决HTTP的性能瓶颈,缩短Web页面的加载事假(50%)
- Ajax的解决办法 页面局部请求更新。
- Comet的解决办法 模拟实现推送功能
- SPDY的目标 以新加会话层的形式运作。规定通信中使用SSL。
增加以下功能: 多路复用流;富裕请求优先级;压缩HTTP首部;推送功能;服务器提示功能。
局限:只是将单个域名(IP地址)的通信多路复用。当一个Web网站使用多个域名下的资源,改善效果就会收到限制。
使用浏览器进行全双工通信的WebSocket
WebSocket 即Web浏览器和Web服务器之间的全双工通信标准。
主要特点:
* 推送功能
* 减少通信量 只要建立起WebSocket连接,就希望一直保持连接状态。
WebSocket的首部信息很小,通信量也相应减少。
为了实现WebSocket通信,在HTTP连接建立之后,需要完成一次“握手”(HandShaking)的步骤。
1. 握手 请求
需要通道HTTP的Upgrade首部字段,告知服务器通信协议发生改变,以达到握手的目的。
* Upgrade:websocket
* Sec-WebSocket-Key: 记录握手过程中必不可少的键值。
* Sec-WebSocket-Protocol : 记录使用的子协议。
- 握手 响应
对于之前的请求,返回状态码101 Switching Protocols的响应。
HTTP/1.1 101 Switching Protocols
Sec-WebSocket-Accept 字段值 是根据握手请求中的Sec-WebSocket-Key的字段值生成的。
成功握手后建立WebSocket连接之后,通信时不再使用HTTP的数据帧,而采用WebSocket独立的数据帧。
HTTP/2.0
- HTTP Speed + Mobility 用于改善并提高移动端通信时的通信速度和性能的标准。建立在SPDY和WebSocket。
- Network-Friendly HTTP Upgrade 主要在移动端通信时改善HTTP性能的标准。
WebDAV
是一个可对Web服务器上的内容直接进行文件复制、编辑等操作的分布式文件系统。
构建Web内容的技术
- HTML
- CSS 指定如何展现HTML内的各种元素。
- DOM (Document Object Model)使用DOM可以将HTML内的元素当作对象操作。
通过调用JavaScript等脚本语言对DOM的操作,可以更为简单的方式控HTML的改变。 - Servlet 是一种能在服务器上创建动态内容的程序。是用Java语言实现的一个接口。属于JavaEE。
- XML 可拓展标记语言 更容易使用来记录数据。
- 发布更新信息的RSS/Atom
- JSON 是一种以JavaScript的对象表示法为基础的轻量级数据标记语言。
Web的攻击技术
- 《图解HTTP》学习笔记
- 《图解http》学习总结
- 《图解HTTP》学习笔记
- 图解HTTP学习笔记
- 图解HTTP学习
- 图解HTTP学习笔记
- 图解HTTP---学习笔记1
- 图解HTTP学习笔记一
- HTTP学习之《图解HTTP》总结
- 《图解HTTP》学习笔记之(一)
- 《图解HTTP》学习笔记之(二)
- 图解http学习笔记1.网络基础
- HTTP 图解
- 图解HTTP
- 图解http
- 图解HTTP
- HTTP图解
- HTTP图解
- git使用
- git学习三:git常用命令
- tomcat发现一个奇怪的问题,如我在本地tomcat发布了一个工程testProject,输入127.0.0.1:8080/testProject登录了,但是输入:本机ip地址:8080/testP
- hplsql安装说明
- 全志R116平台tinav2.1系统下的录音播音测试(分色排版)
- 图解HTTP学习
- VIM文本替换命令
- web服务端向客户发送提示信息
- 横屏下进入非横屏页面,导航栏修改
- CCKiller:Linux 轻量级 CC 攻击防御工具
- FFMPEG学习【libavcodec】:实用函数(二)
- git学习二:git初级使用教程
- python2中的编码
- python统计超大文件行数