【图解HTTP】- 上野宣

简单有趣的方式讲述了HTPP,图灵出品,还是很不错的;简单阅读一下,掌握基础知识;

了解Web及网络基础

  • 1 客户端使用 URL 获取服务器文件资源。(使用HTTP协议访问Web)

  • 2 HTML:页面的文本标记语言;HTTP:文本传递协议;URL:指定文档所在地址;

  • 3 TCP/IP:互联网相关的各类协议族的总称;包括:应用层,传输层,网络层,链路层;
    应用层:向用户提供应用服务时通信的活动,FTP和DNS是其中两大类服务,(HTTP也属于该层);
    传输层:对应用层提供网络连接中的2台计算机之间的数据传输,TCP和UDP两种不同的协议;
    网络层:处理网络上流动的数据包,在传输时选择一条传输路线,IP协议;
    链路层:处理连接网络的硬件部分;
    举个例子:发送端发送 A 数据(应用层)-> 添加TCP头(传输层) -> 添加IP头(网络层) -> 添加以太网头(链路层) -> 接收端反向操作,去除以太网头(网络层) -> 去除IP头(网络层) -> 去除TCP头(传输层)-> 获得 A数据;

  • 4 IP协议:把数据传输给对方,但是确保送达需要很多条件,最重要的2个是IP地址和MAC地址;
    ARP协议:解析地址,根据 IP可以反查MAC地址;
    具体传输有点类似快递,需要多次使用路由器做中转;

  • 5 TCP协议:提供可靠的字节流服务;1 分割数据成报文段位单位的数据包;2 能确定数据是否送达;
    确保数据送达:TCP三次握手,

  • 6 DNS服务:域名解析,IP地址与域名的转换;

  • 7 URI:统一资源标识符,协议方案包含(http,ftp,file,tel,telnet,mailto.....)
    URL:资源地址(是URI的子集)
    绝对URI:http://user:pass@www.example.jp:80/dir/index.htm?uid=1#ch1
    协议方案,登录认证(可选),服务器地址,服务器端口,文件路径,查询内容,片段标识符

简单的HTTP协议

  • 1 HTTP协议:用于客户端与服务端之间的通信;客户端发送请求,服务端响应;HTTP本身没有持久化处理,但是使用Cookie可以管理状态;

  • 2 请求URI定位资源

  • 3 HTTP方法:GET获取,POST传输实体主体,PUT传输文件,HEAD获得报文首部,DELETE删除文件,OPTIONS询问支持的方法,TRACE追踪路径(不用),CONNECT要求使用隧道协议连接代理

  • 4 HTTP长连接,建立一次连接,就可以发送请求的资源,不用每次请求都重新连接并断开;管线化,并行发送多个请求;

  • 5 Cookie:再请求响应后,服务端会返回一个cookie,如果客户端保存,那么下次请求时会添加cookie,那么服务端就会知道是哪个客户端了。

HTTP报文内的HTTP信息

  • 1 HTTP报文:报文首部 + (CR+LF) + 报文主体
    请求报文:报文首部(请求行,各种首部字段,其他)
    响应报文:状态行,各种首部字段,其他)

  • 2 编码提升传输速率:压缩传输的内容编码(gzip,compress,deflate,identity);分割发送的分块传输编码;

  • 3 获取部分内容的范围请求:添加 Range:bytes=5000-

  • 4 内容协商返回合适内容:比如对应显示中英文;

返回结果的HTTP状态吗

  • 1 状态吗类别:
    1XX:Informational(信息性状态码):接受的请求正在处理
    2XX:Success(成功状态码):请求正常处理完毕
    3XX:Redirection(重定向状态码):需要进行附加操作以完成请求
    4XX:Client Error(客户端错误状态码):服务器无法处理请求
    5XX:Server Error(服务器错误状态码):服务器处理请求出错

  • 2XX:成功
    200:正常处理
    204:没有资源
    206:范围请求

  • 3XX:重定向
    301:资源URI更新
    304:资源已找到,但是不符合条件请求

  • 4XX:客户端错误
    400:语法错误
    401:第一次401,需要认证;第二次401,认证失败
    403:资源拒绝访问
    404:没有请求的资源

  • 5XX:服务器错误
    500:内部资源异常
    503:暂时无法处理(可能超负载或者维护中)

与HTTP协作的Web服务器

  • 1 通信数据转发程序:代理、网关、隧道
    代理:客户端与服务器的中间人,处理信息交换,主要存在两类:缓存代理,透明代理(不修改报文)
    网关:转发其他服务器通信数据的服务器,能提供非HTTP的服务,网关可以提高通信安全
    隧道:客户端与服务器中转,可以使用SSL等加密手段通信

  • 2 资源缓存:使用缓存代理实现,提示缓存有时限;客户端也可以实现缓存;

HTTP首部

  • 通用首部
    Cache-Control:缓存机制,指令有很多种;
    Connection:控制不在转发给代理的首部字段,管理持久连接;
    Date:表示创建HTTP报文的日期和时间;
    Pragma:1.0遗留字段;no-cache(与Cache-Control的一个字段一样)
    Trailer:
    Transfer-Encoding:传输报文主题的编码方式
    UUpgrade:检测HTTP等协议是否可用更高的版本进行通信;
    Via:追踪传输路径;
    Warning:告知一些缓存相关的警告;

  • 请求首部字段:补充请求附加信息、对响应内容相关的优先级等;
    Accept:返回资源格式与优先级;
    Accept-Charset:字符集与优先级;
    Accept-Encoding:内容编码与优先级;
    Accept-Language:自然语言集与优先级;
    Authorization:授权信息;
    Expect:
    From:邮箱地址(也有可能再User-Agent字段内);
    Host:主机(与单台服务器分配多个域名的虚拟主机有关)
    If-Match:字段值与资源的ETag值一致时,才处理请求;
    If-None-Match:与If-Match相反;
    If-Modified-Since:指定的日期之后,资源发送变化,才处理请求;
    If-Unmodified-Since:与If-Modified-Since相反;
    If-Range:先判断字段是否与资源的ETag或者更新日期是否匹配,一致则根据Range字段处理请求,不一致则忽略Range字段,返回全部资源;节省了一步If-March
    Max-Forwards:最多转发次数,数值变为0是返回响应;
    Proxy-Authorization:代理服务器认证;
    Range:部分资源;
    Referer:请求原始资源URI;
    TE:传输编码方式与优先级;
    User-Agent:表示浏览器种类,也会添加代理服务器名称;

  • 响应首部字段:补充响应的附加信息、服务器信息、以及客户端附加要求等;
    Accept-Ranges:告知请求范围是否正常;
    Age:源服务器上次响应时间间隔;
    ETag:资源唯一标识;
    Location:引导至另一个位置的资源;(重定向相关)
    Proxy-Authenticate:与请求类似
    Retry-After:多久后再次尝试;
    Server:当前HTTP服务器信息;
    Vary:对应的Accept-Language,
    WWW-Authenticate:

  • 实体首部字段:补充内容的更新时间等;
    Alllow:支持请求方法;
    Content-Encoding:实体的主体部分编码方式;
    Content-Language:实体的主体自然语言;
    Content-Length:实体的主体大小;
    Content-Location:主体返回资源的URI;
    Content-MD5:主体MD5
    Content-Range:主体内容范围 与 实体大小;
    Content-Type:主体对象类型;
    Expires:资源失效日期;
    Last-Modified:资源最后修改时间;

  • Cookie服务的首部
    SetCookie
    Cookie

  • 其他

HTTPS

HTTPS = HTTP + 加密 + 认证 + 完整性保护

  • HTTP 通信使用明文,可能被窃听;
    通信加密:使用SSL或者TLS与HTTP组合使用,使用SSL的就是所说的 HTTPS;
    内容加密:对报文内容加密后发送;

  • HTTP 不验证通信方的身份,可能遭遇伪装;
    任何人可以发起请求,存在安全隐患;
    通过SSL,使用证书,验证通信方身份;

  • HTTP 无法验证报文完整性,可能遭篡改;
    通过SSL,生成摘要,防篡改;

  • HTTPS 混合加密机制:1 非对称加密验证身份可靠,并传输对称加密密钥K;2 使用对称加密进行通信(对称加密处理速度相对比非对称快)

  • 数字证书:(非对称加密)1 服务器A 向证书认证机构P 提出公钥申请,确认之后机构P会对服务器A的公钥做数字签名(也是非对称加密),再放入公钥证书C;2 服务器会将公钥证书C发送给客户端,客户端需要验证证书C的可靠性,所有在这里浏览器本身植入了机构P的公钥X,客户端向机构P对证书C的签名验证真实性; 3 客户端使用服务器公钥C对报文加密后发送(通信);

  • EV SSL 证书:验证了运营组织的真实性,比一般的更加可靠;

  • 认证机构:信誉第一,需要绝对可靠的信用(比如google 就是 由 google 签名的。)
    另外还有自签名证书和中级证书,可靠程度一般;

  • HTTPS 通信流程:1 客户端发送开始连接(包含基本数据);2 服务端发送1的回应数据,再发送证书,最后发送第一次握手结束;3 客户端使用收到的公钥,加密一个随机生成的密钥,发送给服务器,再发送通知消息表示以后使用这个密钥通信,随后发送已完成;4 服务器同3发送数据给客户端,完成SSL连接;5之后通信使用HTTP,但是已经有SSL保护;

  • SSL 与 TLS:TLS是以SSL为原型设计; 统称SSL;

  • HTTPS 速度比 HTTP 慢 2-100 倍,主要由于通信慢 与 加解密处理速度慢;

确认访问用户身份的认证

  • HTTP认证方式:BASIC基本认证,DIGEST摘要认证,SSL客户端认证,FormBase表单认证;

  • BASIC认证:通过HTTP Authorization首部字段,发送用户ID与密码的Base64b
    编码字符串,由于其明文不安全以及无注销操作,故不使用;

  • DIGEST认证:BASIC的基础上,添加了服务端产生随机字段,组合之后生成MD5作为首部;增强了密码保护,但是无法防止用户伪装;

  • SSL认证:HTTPS加密通信,一般采用双因素认证,组合表单认证;

  • 表单认证:即一般的注册登录;大部分都是表单认证;

基于HTTP的功能追加协议

  • Ajax:异步JavaScript 与 XML;有效利用JavaScript和DOM(文件对象模型)的操作,局部Web页面的加载;

  • Comet:服务器有更新,就向客户端发送推送;

  • SPYD:解决HTTP的性能瓶颈;多路复用流,赋予请求优先级,压缩HTTP首部,推送功能;(仅单域名通信多路复用,一个Web上使用多个域名下的资源时,就会受到限制)

  • WebSocket:推送功能,减少通信量(保持连接状态);使用HTTP的Upgrade首部字段,握手修改通信协议,使用WebSocket通信;

  • HTTP/2.0

  • Web服务器管理文件的WebDAV

构建Web内容的技术

  • HTML:超文本标记语言,构建Web基础;

  • CSS:展现HTML内元素的样式;

  • 动态HTML:使用客户端脚本语言JacaScript,实现对HTML的Web页面的动态改造;利用DOM可指定欲发生动态变化的HTML元素;

  • DOM:操作HTML文档和XML文档的API;使用JacaScript对DOM的操作可以简单的方式控制HTML;例如:document.getElementsByTagName();

  • Web应用:通过Web功能提供的应用程序,例如购物网站,搜索引擎等;作用与动态内容之上;

  • CGI:通用网关接口,Web服务器接收客户端发送来的请求后转发给程序,程序对请求内容做出响应的动作;

  • Servlet:服务器上创建动态内容;执行相对轻量级,效率更高;

  • XML:可扩展标记语言;

  • RSS/Atom:发布更新信息,也是呀XML;

  • JSON:由JavaScript衍生,更加轻量化的数据格式;

Web的攻击技术

  • 输出值转义不完全引发的安全漏洞:跨站脚本攻击(XSS),窃取用户Cookie,SQL注入,OS命令注入,HTTP首部注入,HTTP响应截断攻击,邮件首部注入攻击,目录遍历攻击,远程文件包含漏洞。

  • 设计或设置缺陷引发的漏洞:强制浏览,不正确的错误处理,开放重定向,

  • 会话管理疏忽的漏洞:会话劫持,会话固定攻击,跨站点请求伪造;

  • 其他漏洞:密码破解,点击劫持,DoS攻击,后门程序;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,784评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,745评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,702评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,229评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,245评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,376评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,798评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,471评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,655评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,485评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,535评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,235评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,793评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,863评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,096评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,654评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,233评论 2 341

推荐阅读更多精彩内容