《图解http》笔记

http协议是tcp/ip协议族中的一个的子集
http协议职责(生成针对目标web服务器的http请求报文、对web服务器请求内容的处理)用于客户端与服务器之间的通信。客户端:请求访问文本或者图像资源的一方;服务器:提供资源响应的一端

tcp/ip协议族的分层(4层)应用层、传输层、网络层和数据链路层
应用层:向用户提供应用服务时通信的活动。
常见的协议包括:ftp(文本传输协议)、dns(域名系统)、http(超文本传输协议)
传输层:网络连接中两台计算机之间的数据传输
常见的协议包括:tcp(传输控制协议)、udp(用户数据报协议)
网络层:处理在网络上流动的数据包(数据包是网络上最小的数据单位),规定了数据包到达对方计算机的传输路线
链路层:处理连接网络的硬件部分

利用tcp/ip在网络中通信时,是利用分层顺序与对方通信,客户端从应用层向下(层与层之间传输时都会添加该层的首部——封装(把数据信息包装起来)),接收端从链路层向上(层与层之间的向上传输过程会把对应的首部去掉)。

http通信流程

ip协议-把各种数据包传送给对方
利用ip地址和mac地址保证数据送达目的地,IP地址是节点被分配到地址,mac地址是网卡所属的固定地址。

tcp协议-可靠的字节流服务(可靠——三次握手、四次挥手等保障机制;字节流——将大块数据分割成为报文段为单位的数据包进行传输(在服务器端接收后组装请求报文))
三次握手

四次挥手

Dns协议-域名解析协议,通过域名查找ip地址、通过ip地址查找域名

Uri:uniform resource identifier(统一资源标志符)
Url:uniform resource locator(统一资源定位符)

请求报文的构成:请求方法、请求URI、协议版本、可选的请求首部字段和内容实体
响应报文的构成;协议版本、状态码(表示请求成功或失败的数字码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主 体构成。

请求方法:get、post、put、head、delete、options、trace、connect
get:获取资源,如果资源在服务器,直接返回;如果uri是gci类的程序,则程序执行后返回。
post:传输实体的主体
put:传输文件
head:获得报文首部
Delete:删除文件
options:询问支持的方法
trace:跟踪路径,让web服务器将之前的请求通信环回给客户端,容易引发xst跨站跟踪
connect:要求用隧道协议连接代理(使用ssl(安全套接层)、tls(传输层安全)把通信内容加密后经过网络隧道传输)

HTTP keep-alive http持久连接、客户端的管线化,当前请求发送完毕后就可以随之发送下一个请求。
http是无状态协议,不保存之前发送过的请求,接收的响应。因此引进cookie技术实现状态管理。
cookie技术是指通过在请求和响应报文中写入cookie信息来控制客户端状态,写入:服务器的响应报文包含set-cookie字段,则客户端保存对应cookie。当客户端往同一服务器再次发送请求的时候,客户端回自动向在请求头中添加之前服务器发送的cookie值。
调用 Cookie 时,由于可校验 Cookie 的有效期,以及发送方的域、路 径、协议等信息,所以正规发布的 Cookie 内的数据不会因来自其他 Web 站点和攻击者的攻击而泄露。
session管理及cookie状态管理
客户端使用https协议传输用户id/登录密码消息发送给服务器;服务器发放标志用户的sessionID,验证用户登录信息并把认证结果与sessionid绑定,记录在服务器并在响应首部实体set-cookie字段发送给客户端;客户端接受后保存作为cookie保存在本地

请求报文与响应报文结构

首部内容为客户端和服务器端处理请求和响应时提供报文主体大小、所使用的语言、认证信息等内容
首部字段构成:“首部字段名:字段值”
首部字段类型:通用首部字段、请求首部字段、响应首部字段、实体首部字段

实体首部字段(补充了资源内容更新时间等与实体有关的信息),如content-type实体主体的媒体类型
通用首部字段:(缓存控制)cache-control:(public(都可以用缓存)/private(指定用户可以用缓存)/no-cache(不缓存过期)/no-store(不可以缓存))、(控制不再转发给代理的首部字段、管理持久连接)connection:(close/keep-alive)
非http1.1首部字段常见的有:cookie、set-cookie、content-disposition
请求首部字段:补充请求的附加信息、客户端信息、对响应内容相关的优先级等内容
常见:(资源所处的互联网主机名和端口号,必填,但可以为空)host:(用户代理能处理的多媒体类型、能处理的多媒体优先级)accept:((text/)/(image/)…)、(用户代理支持的内容编码及 内容编码的优先级顺序 )accept-encoding:(gzip/compress…)
响应首部字段:(开始状态管理所使用的cookie信息)set-cookie

实体:作为请求或响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成。

状态码:当客户端向服务器端发送请求时,描述返回的请求结果。 借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。
状态码

200(成功)
204(响应报文无实体主体)
206(客户端对资源进行了限定范围请求)

301(永久性重定向)
302(暂时性重定向)
303(请求对应的资源存在着另一个 URI )
301、302、303若之前是post方法,会去掉实体主体并改为get请求

400 请求报文存在语法错误
401 需要认证
403 请求被拒绝
404 服务器上无法找到对应请求的资源

500 服务器在执行请求时发生了错误,web应用存在bug或者某些临时故障
503 服务器超负载或者正在进行停机维护

Web服务器
web服务器利用虚拟主机实现一台主机提供多台服务器响应功能,向这样的服务器发出请求时,dns解析的服务器ip地址一致,只要写清楚了正确的uri都可以顺利发出请求。
客户端与服务器通信时,中间可能也存在一些用于通信数据转发的应用程序(代理、网关、隧道)
代理——客户端与服务器之间的中间人,接收由客户端发送的请求并转发给服务器,也接受服务器返回的响应并转发给客户端。
网关——是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。利用网关将http请求转化为其他协议通信。CGI(通用网关接口)是web服务器在接收到客户端发送过来的请求后转发给程序的一组机制。
隧道——按要求建立起一条与(远距离)服务器的通信线路,届时使用 SSL 等 加密手段进行通信,确保客户端与服务器的安全通信

代理的种类:缓存代理、透明代理、非透明代理
缓存代理预先将源服务器资源的副本加载到代理服务器,下次再请求同一资源时可以不再请求源服务器,直接从缓存代理中获取资源,不对请求报文做修改的代理称为透明代理,反之称为非透明代理。

http协议存在信息被窃听、信息被篡改、身份伪装等安全问题,因此相应提出https提高客户端与服务器之间通信的安全性。
Http提升通信安全使用ssl(secure socket layer,安全套接层)+tls(transport layer security,安全层传输协议)对通信内容加密。与 SSL 组合使用的 HTTP 被称为 HTTPS(HTTP Secure,超文本传输安全协议)或 HTTP over SSL。

http报文加密对传输内容的加密(报文首部不加密,报文主体加密),客户端和服务器同时具备加密和解密机制。
ssl提供了加密处理、还使用了证书。证书由第三方机构颁发,用于证明客户端和服务器的真实性。
使用md5/sha-1等散列值校验方法的数字签名方法防止内容被篡改。

https = http+加密+认证+完整性保护
ssl加密处理方式——公开密钥加密,加密算法是公开的,而密钥是保密的。如果加密和解密的密钥是共享的则称为对称密钥加密。如果加密和解密的密钥是不一致的则称为非对称密钥(公开密钥加密方式),使用公开密加密技术通信时,使用由数字证书认证机构和其相关机关颁发的公开密钥证书防止公钥被替换。
https混合使用对称加密技术和非对称加密技术,利用非对称加密技术先传递对称密钥,后续使用共享密钥加密方式通信,使用ssl技术会增加服务器内存、cpu开支。

认证方式:BASIC认证(基本认证)/DIGEST认证(摘要认证)/SSL客户端认证/FormBase认证(基于表单认证)

http瓶颈:
1.一个连接上只可以发送一个请求;2.请求只从客户端发起,客服端不可以接受响应以外的指令;3.发送冗余首部,每次互相发送相同的首部造成的浪费较多。

解决办法:
ajax(asynchronous javascript and xml, 异步javascript与XML技术)更新一部分页面,响应中传输 的数据量会因此而减少,XMLHttpRequest 的 API,通过 JavaScript 脚本 语言的调用就能和服务器进行 HTTP 通信。借由这种手段,就能从已加载完毕的 Web 页面上发起请求,只更新局部页面。

Comet,当服务器又内容更新时,通过延迟应答,模拟实现服务器端向客户端 推送(Server Push)的功能。

spdy在tcp/ip的应用层与运输层之间新加会话层,控制对数据的流动,从而实现:
1.多路复用流——通过单一的 TCP 连接,可以无限制处理多个 HTTP 请求。所有请求 的处理都在一条 TCP 连接上完成,因此 TCP 的处理效率得到提高。
2.赋予请求优先级
3.压缩HTTP(请求-响应)首部
4.推送功能——支持服务器主动向客户端推送数据的功能
5.服务器提示功能——主动提示客户端请求所需的资源

websocket——web浏览器与web服务器之间的全双工通信,一旦通信连接确定(并希望一直保持连接状态),服务器也可以直接客户端发送报文。
websocket

Html超文本标记语言是一种文档系统,将文档中任意位置的信息与其他信息(文本或图片等)建立 关联,即超链接文本。 标记语言是指通过在文档的某部分穿插特别的字符串标签(html tag),用来修饰文档的语言。
Xml(可扩展标记语言)一种可以按应用目标进行扩展的通用标记语言,作用于实现互联网数据共享。用标签分割成为树形结构,通过语法分析器的解析功能解析XML结构并取出数据元素,便于2个不同的应用之间交换数据格式化。
JSON以javascipt的对象表示法为基础的轻量级数据标记语言。

web的攻击技术:主动攻击、被动攻击
主动攻击——攻击者直接访问web应用,把攻击代码传入。如SQL注入攻击/OS命令注入攻击
被动攻击——利用圈套策略执行攻击代码,攻击者不直接对目标web应用访问发起攻击,如跨站脚本攻击和跨站点请求伪造

应对策略:
1.客户端验证;2.web应用端(服务器端)的验证:输入值验证/输出值转义
客户端验证——提高UI体验;输入值验证——检查是否符合系统业务逻辑的数值或者检查字符编码等预防对策;

跨站点请求伪造(Cross-Site Request Forgeries,csrf)击 者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信 息或设定信息等某些状态更新

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值