一些关于HTTP的学习记录

一个非常好的学习HTTP的网站:
https://developer.mozilla.org/zh-CN/docs/Web/HTTP

第一部分

  1. HTTP:超文本传输协议

2.URL:统一资源定位符。
URI:统一资源标识符。
URL < URI

3.1995年IE浏览器,2004年Mozilla发布Firefox

4.TCP/IP(从高往下)
应用层:如FTP,DNS,HTTP
传输层:TCP,UDP
网络层:处理流动的数据包,IP协议
数据链路层:处理连接网络的硬件,如操作系统,网卡,光纤
每经过一层,都会增加一个首部,如TCP首部

5.IP协议将数据传到对方需要2个条件,IP地址(会变)和MAC地址

6.APP协议:中转时,下一站中转设备的MAC地址是用来搜索的目标。

7.路由选择
TCP的三次握手策略,为的是准确无误的奖数据送达
握手过程使用TCP的标记(flag)----SYN和ACK
三次握手:其实指的是三次数据传输,发送端2次,接收端一次
1)发生端发生标有SYN的数据包
2)接收端收到后,回复标有SYN/ACK的数据包表示确认
3)发送端发送带有ACK的数据包

8.DBS域名解析:指的是域名到IP的解析。

9.各协议的职责:
DNS:解析域名
Http:生成报文,解析报文
TCP:切割http报文,传输数据,3次握手
IP:搜索地址,路由转发

10.URI格式:协议方案,登录信息,地址端口,路径,查询

第二部分

1.请求报文的组成:请求URI,协议版本,可选请求头部字段,内容实体

2.响应报文组成:协议版本、状态码、解释状态码短语、可选响应首部字段、响应实体

3.HTTP: 无状态协议,不做持久化处理

4.HTTP/1.1引入了cookie技术,实现保持状态

5.HTTP的方法:
GET: 获取资源
POST:传输实体主体
PUT:传输文件
DELETE:删除资源
OPTIONS: 访问支持的方法
TRACE:追踪路径
CONNECT:要求使用隧道协议连接代理

6.以前是每次请求,TCP都会短开,但是现在的网页图片多,请求多,增加了通信量的开销。所以在HTTP/1.1中增加了keep-alive,任意一端没明确断开,就保持TCP连接状态。

7.管线化:一个请求没响应就可以发生下一个请求,也就是同时并行发送多个请求。

8.Cookie技术
在没有Cookie的时候发送请求,服务端会在响应的的报文内增加一个:set-cookie头部字段信息。
客户端会根据这个字段信息将内容保存到cookie。
再次请求的时候,就会带着这个cookie。
所以说,其实一次会话,虽然session是保存在服务端,但是和cookie还是有关系的。所以要做路由转发的类似功能,需要从这里下手(个人理解)。

第三部分

1.HTTP报文内的HTTP信息
请求报文: 报文首部(请求行:请求方法+URL,请求首部字段,通用首部字段、实体首部),报文主体
响应报文:报文首部(状态行:状态码+短语,响应首部,通用首部,实体首部),报文主体
首部字段主要为通用、请求、响应、实体,其他也有,比如cookie。

2.传输的内容会进行压缩,如gzip

3.Http协议也采纳了多部分对象集合,发生的报文包含多类型实体
多部分对象集合:multipart/form-data

4.获取部分内容的范围请求:
Range:bytes=5001-10000:下载5001到10000字节,这是个首部字段

5.内容协商返回最合适内容,比如返回的是英文还是中文(浏览器的语言)
字段:Accept,Accept-charset,Accept-Encoding,Accept-Language,Content-Language

第四部分

1.状态码类别
1XX: 请求正在处理,信息性
2XX:成功。200:OK,204:没有主体,206:响应报文范围内容
3XX:重定向。301:永久,302:临时,303:请求另一个url,304,307:禁止post转get
4XX:客户端错误,400:bad request。401:认证问题,403,不允许访问,404:not found
5XX: 服务端错误,500,error,503:服务器超载

第五部分

与Http协作的web服务器
1.因为DNS会将域名映射为IP,所以当请求到服务器时候,已经是IP形式

2.通信数据转发程序:代理(转发功能),网关(转发其他服务器通信数据的服务器),隧道(相隔甚远的客户端与服务器之间中转通信的程序)

3.代理:
不改变请求URI,直接转发
代理转发请求时,会追加写入via首部信息,分为2类:是否使用缓存,是否修改报文
缓存带来会预先将资源缓存在代理服务器
透明代理不对报文做任何修改

4.网关:与代理十分相似,但网关可以提供非HTTP协议服务,如网关可以连接数据库

5.隧道,一条通信线路

第六部分

1.HTTP报文首部
HTTP请求报文首部报文是由方法、URI、HTTP版本、首部字段组成
HTTP响应报文首部是由HTTP版本,状态码(数字或短语)、首部字段组成。

2.HTTP首部字段传递重要信息,结构为: 字段名:字段值。如content-Type:text/html

3.首部字段分为通用、请求、响应、实体4类。
通用首部字段:
Cache-control: 控制缓存行为;
connection:逐跳首部,连接的管理
Date:创建报文的日期
pragma: 报文指令
Trailer:报文末端首部一览
Transfer-Encoding:指定报文主体的传输编码方式
upgrade:升级其他协议
via:代理服务器相关信息
waring:错误通知

请求首部字段:
Accept: 用户代理可处理模型
Accept-charset:优先字符集
Accept-Encoding:有限的内容编码
Accept-Language:优先的语言
Authorization: web认证信息
Except:期待服务器的行为
From:用户的电子邮件
Host:请求服务器地址
If-Match:比较实体标记,相反的是If-None-Match
If-Modified-Since,If-Unmodified-Since:比较资源更新时间
If-Range:资源来更新时byte的范围
Max-Forwards:最大的传输逐跳数
Proxy-Authorization:代理服务器要求的认证信息
Range:实体字节范围请求
Refer:对请求中的URI原始获取方
User-Agent: http客户端信息

响应首部字段:
Accept-Ranges:是否接受字节范围请求
Age:推算资源创建时间
EAge:资源匹配时间
Location:另客户端重定向指定的URI
Proxy-Authenticate:代理服务器对客户端认证信息
Server: Http服务器
vary:代理服务器缓存的管理信息
www-Authenticate:服务器对客户端认证信息

实体首部:
Allow: 资源支持的Http方法
Content-Encoding: 实体主题适用编码
Content-Length:实体主体大小
Content-Location:替代对应资源的uri
Content-MD5:实体报文摘要
Content-Range: 实体报文位置范围
Content-Type: 媒体类型
Expires:过期时间
Last-Modified:最后修改时间

4.非HTTP/1.1首部字段
如Cookie,set-Cookie, Content-isposition等

4.End-to-End首部:端到端首部,必须保存在魂村生成的响应,且必须转发

5.Hop-by-Hop首部:逐跳首部,支队单词转发有效,会因为通过缓存或者代理不再转发
Connection,keep-Alive, Proxy-Authenticate, Proxy-Authorization, Trailer, TE, Transfer-Encoding, upgrade都是逐跳首部

6.常用的一些首部和取值
6.1 Cache-Control: 操作缓存的机制,如:private, max-age=0, no-cache
取值:public: 其他用户也可采用缓存,no-cache:防止返回过期资源,no-store:含机密信息,max-age:缓存时间,min-fresh, max-state

6.2 connection: 控制不再转发给代理的首部,管理持久连接
如: connection: upgrade, 删除upgrade在转发
close:关闭长连接,keep-alive:长连接

6.3 Date: 报文创建时间

6.4 pragma: 历史遗留字段

6.5 Trailer: 事先说明在报文主体后记录了哪些主体

6.6 Transfer-Encoding: 报文主体采用的编码格式,如chuked: 分块传输

6.7 upgrade: 用于检测是否可用版本通信,使用时,额外指定connection: upgrade

6.8 via: 处理网关时加上内容

6.9 warning: http/1.0 Retry-After演变的,一些警告

请求首部:
Accept: 可处理的媒体类型,多个用逗号隔开
文本文件: text/html, text/plain, text/css, application/xml 等等
图片: image/jpeg/gif/png等
视频文件:video/mpeg
应用程序使用的二进制文件: application/octet-stream/zip ...

Accept-Charset: 通知服务器用户字符集,多个逗号隔开,如iso-8859-5

Accept-Encoding: 用户代理支持内容编码,多个逗号隔开,如gzip,deflate

Accept-Language: zh-en, en-us,处理的语言

Authorization: 代理认证信息值

Except: 期望某种特定行为

Max-Forwards: 最多转发次数

Refer:告知请求的原始URI

  1. Cookie服务的首部字段
    Set-Cookie: 响应、开始状态所使用的的cookie信息
    cookie: 轻汽油服务器接收到的cookie信息

set-Cookie的字段属性:
Name=value: 赋予cookie的值
expires=Date: cookie的有效期
path=Path: 目录
domain:域名
secure: 仅在https才发生cookie
HttpOnly: 使cookie不能被js访问

其他首部:
首部字段可以自己扩展,比如下载时候的文件名
X-Frame-Options: 控制web的frame信息
X-XSS-Protection:针对XSS跨站脚本攻击策略
DNT: 拒绝个人信息被收集
P3P: 保护隐私的

第七部分 HTTPS

窃听、抓包或嗅探器,如wireshark,拆包攻击
SSL与TLS组合使用
https是身披SSL外壳的HTTP
HTTPS采用共享秘钥和公开秘钥两者并用的混合加密机制
使用SSL会带来通信慢和大量CPU与内存消耗

第八部分

确认访问用户身份认证
常用的核对信息:密码,动态令牌,数字证书,生物证人,IC卡号
HTTP认证,BASIC认证, SSL客户端, FORM BASE认证, DIGEST认证
使用cookie来管理session

第九部分

基于HTTPS功能追加协议
google发布:消除http瓶颈的SPDY
AJAX的解决方案是拉取
Comet解决方案,通过延迟应答实现推送功能
然后到SPDY再有了websocket

第十部分

web攻击方法
主动攻击:直接对服务器资源攻击,如SQL注入,OS命令攻击
被动攻击:诱导进入陷阱
跨站脚本攻击(XSS)
邮件首部注入攻击
目录遍历攻击
远程文件包含漏洞
会话劫持,会话固定攻击

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

推荐阅读更多精彩内容

  • Web 页面的实现 Web 基于 HTTP 协议通信 客户端(Client)的 Web 浏览器从 Web 服务器端...
    毛圈阅读 1,072评论 0 2
  • 本文是《图解HTTP》读书笔记的第二篇,主要包括此书的第六章内容,因为第六章的内容较多,而且比较重要,所以单独写为...
    lijiankun24阅读 1,356评论 0 6
  • HTTP 图解笔记 一 .简单了解 1.1HTTP背景 1.1.1 HTTP的诞生 1989 年 3 月,互联网还...
    Aaron96阅读 1,032评论 0 4
  • 网络基础知识 URL和URI URI(Uniform Resource Idenifier)统一资源标识符。即由某...
    d9fc24a0c9a9阅读 1,115评论 0 6
  • 也许每个人的生活中,都会有一些晦暗的时刻,看不到希望,找不到出口,不知道该如何继续。 有一阵子,工...
    陈小六家三少夜阅读 130评论 0 1