网络(一)HTTP和HTTPS

一)Http协议

Http协议:超文本传输协议,Http是基于tcp的应用层的协议。
OSI网络七层协议从上到下,分别是应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
1>请求响应报文


Snip20210125_11.png

a.请求报文


Snip20210125_12.png

具体如下:
Snip20210125_13.png

Host:指明了该对象所在的主机(域名)
Connection:Keep-Alive首部行用来表明该浏览器告诉服务器使用的是持续连接
Content-Type:x-www-form-urlencoded 首部行用来表示请求参数用key1=val1&key2=val2的方式进行组织,并放到请求实体里面(httpBody 参数)
User-agent:首部行用来指明用户代理,即向服务器发送请求的浏览器类型
Accept-language:首部行用来表示该用户想得到该对象的语法版本(如果服务器中有这样的对象的话),否则服务器发送默认的版本
b.响应报文


Snip20210125_14.png

具体如下:


Snip20210125_15.png

Collection:close首部行告诉客户,发送完报文关闭tcp连接
Date:指的不是对象最后创建和修改时间,而是服务器从文件系统中检索到该对象,插入到响应报文,并发送该响应报文的时间
Server:首部行指示该报文由一台Apache Web 服务器产生的
Content-Length:首部行指示了被发送对象的字节数
Content-Type:首部行指示了实体中的对象是HTML文本

1>状态码
1.该类型状态码表示接收到请求并且继续处理
100:客户端必须继续发出请求。
101:客户端要求服务器根据请求转换HTTP协议版本。

2.该类型状态码表示动作被成功接收、理解和接受。
200,表明该请求被成功地完成,所请求的资源发送到客户端。
201,提示知道新文件的URL。
202,接受并处理,但处理未完成。
203,返回信息不确定或不完整。
204,收到请求,但返回信息为空.
205,服务器完成了请求,用户必须复位当前已经浏览过的文件。
206,服务器已经完成了部分用户的GET请求。

3.该类型状态码表示为了完成指定的动作,必须接受进一步处理。
300,请求的资源可在多处获得。
301,本网页被永久性转移到另一个URL。
302,请求的网页被重定向到新的地址。
303,建议用户访问其他URL或访问方式。
304,自从上次请求后,请求的网页未修改过。
305,请求的资源必须从服务器指定的地址获得。
306,前一版本HTTP中使用的代码,现已不再使用。
307,声明请求的资源临时性删除。

4.该类型状态码表示请求包含错误语法或不能正确执行。
400,客户端请求有语法错误。
401,请求未经授权。
402,保留有效ChargeTo头响应。
403,禁止访问,服务器收到请求,但拒绝提供服务。
404,可连接服务器,但服务器无法取得所请求的网页,请求资源不存在。
405,用户在Request-Line字段定义的方法不被允许。
406,根据用户发送的Accept,请求资源不可访问。
407,类似401,用户必须首先在代理服务器上取得授权。
408,客户端没有在用户指定的时间内完成请求。
409,对当前资源状态,请求不能完成。
410,服务器上不再有此资源。
411,服务器拒绝用户定义的Content-Length属性请求。
412,一个或多个请求头字段在当前请求中错误。
413,请求的资源大于服务器允许的大小。
414,请求的资源URL长于服务器允许的长度。
415,请求资源不支持请求项目格式。
416,请求中包含Range请求头字段,在当前请求资源范围内没有range指示值。
417,服务器不满足请求Expect头字段指定的期望值。

5.该类型状态码表示服务器或网关错误。
500,服务器错误。
501,服务器不支持请求的功能。
502,网关错误。
503,无法获得服务。
504,网关超时。
505,不支持的http版本。

二)Http的请求方式

GET POST PUT DELETE HEAD OPTIONS
a. GET和POST的区别
从语法的角度
1.GET参数一般以?拼接到URL后面,POST请求参数放在Http body中
2.GET参数长度限制为2048个字符,POST没有限制
3.GET参数是裸露在URL中,是不安全的,POST请求相对安全,之所以说相对安全,是因为虽然POST不是明文传输,但如果被抓包GET和POST一样是不安全的
从语义的角度
GET:获取资源是安全的,幂等的(只读的,纯粹的),可缓存的
POS:获取资源是非安全的,非幂等的,非缓存的
注:
1.这里的安全指不应引起服务端的任何状态变化,GET的语义就是获取数据,是不会引起服务端状态变化的,即安全的。(HEAD OPTIONS也是安全的)而POST是提交数据,时可能引起服务器状态变化的,即不安全的。
2.幂等,同一个请求执行一次和执行多次的效果完全相同,显然GET是幂等而POST是非幂等的。
3.可缓存的,指请求是否可以被缓存。GET请求会主动进行Cache
以上特性并非并列,正是因为GET是幂等的只读的,即GET请求除了返回数据不会有其他副作用,所以GET才是安全的,从而可以直接由CDN缓存,大大减轻服务的负担,也就是可缓存的。而POST是非幂等的,即除了返回数据还有其他副作用,所以POST是不安全的,必须交由Web服务器处理,即是不可缓存的
GET和POST本质上都是基于TCP链接,并无差别。
在响应时,GET产生一个TCP数据包,POST产生两个TCP数据包:对于GET方式的请求,浏览器会把Header和实体主体一并发送出去,而POST请求浏览器会先发送Header,服务器响应100Continue,浏览器再发送实体主体,服务器响应200 OK(返回数据)。
b.GET相对POST的优势是什么?
1.最大优势就是方便。GET的URL可以直接手输,从而GET请求中的URL可以被缓存到书签里或者历史记录里。
2.可以被缓存,大大减轻服务器负担

三)HTTP的特点

1.HTTP是无状态的
即协议对于事务处理没有记忆能力。
每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求时无直接关系,它不会受前面的请求应答情况影响,也不会直接影响后面的请求应答情况,也就是说服务器没有保存客户端的请求状态,客户端必须带上请求状态去请求服务器
标准的HTTP协议指的是不包括cookie、session、application的HTTP协议
2.HTTP的持久连接

Snip20210125_16.png

非持久连接:每个连接处理一个请求-响应事务
持久连接:每个连接可以处理多个请求-响应事务
持久连接情况下,服务器发出响应后让TCP连接继续打开着,同一对客户/服务器之间的后续请求和响应可以通过这个链接发送
HTTP/1.0使用非持久连接,HTTP/1.1默认使用持久连接(keep-alive)。
HTTP持久连接怎么判断一个请求是否结束的?
1.Content-length:根据所接收字节数是否达到Content-length值
2.chunked(分块传输):Transfer-Encoding,当选择分块传输时,响应头中可以不包含Content-length,Content-length,服务器会先回复一个不带数据的报文(只有响应行和响应头和\r\n),然后开始传输若干个数据块。当传输若干是个数据块完成后,需要再传输一个空的数据块,当客户端接收到空的数据块后,则客户端知道接收完毕

四)HTTPS

1.HTTP和HTTPS的区别
HTTPS协议=HTTP协议+SSL/TSL协议
2HTTPS的安全建立流程
HTTPS为了兼顾安全与效率,同时使用了对称加密和非对称加密。在传输过程中会涉及到三个秘钥:
服务端的公钥和私钥,用来进行非对称加密
客户端生成的随机密钥,用来对称加密

Snip20210125_19.png

1.客户端访问HTTPS连接
客户端会把安全协议版本、客户端支持的加密算法列表、随机数C发送给服务器
2.服务器发送证书给客户端
服务端接收到密钥算法配件后,会和自己支持的加密算法列表进行匹配,如果不符合,则断开连接。否则,服务器会在该算法中选择一种对称算法(如AES)、一种公钥算法(如具有特定密钥长度的RSA)和一种MAC算法发送给客户端。
服务器有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务端保存着私钥,不能将其泄漏,公钥可以发给任何人。
在发送加密算法的同时还会把数字证书和随机数S发送给客户端
3.客户端验证server证书
会对server的公钥进行检测验证其合法性,如果发现公钥有问题,那么HTTPS传输就无法继续。
4.客户端组装会话密钥
如果公钥合格,那么客户端会用服务器公钥来生成一个前主密钥(Pre-Master Secret, PMS),并通过该前主密钥和随机数C、S来组装成会话密钥
5.客户端将前主密钥发送给服务端
通过服务端的公钥来对前主密钥进行非对称加密,发送给服务端
6.服务端通过私钥解密得到前主密钥
服务端接收到加密信息后,用私钥解密得到前主密钥
7.服务端组装会话密钥
服务端通过前主密钥和随机数C、S来组装会话密钥
至此,服务端和客户端都已经知道了用于此次会话的主密钥
8.数据传输
客户端收到服务端发来的密文,用客户端的密钥对其对称解密,得到服务器发送到额数据。同理,服务端收到客户端发来的密文,用服务端密钥对其对称解密,得到客户端发送的数据
总结
会话密钥=前主密钥+随机数C+随机数S
1.HTTPS加密过程使用非对称加密,非对称加密是一种很耗时的加密方式
2.后续通信过程使用对称加密,减少加密时带来的性能损耗
3.对称加密加密的是实际数据,非对称加密加密的是对称加密所需要的客户端的密钥

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

推荐阅读更多精彩内容