资讯专栏INFORMATION COLUMN

http/https协议备忘

alaege / 3386人阅读

摘要:客户端客户端使用访问服务端,要求建立连接服务端服务端收到客户端请求,将网站的证书传送一份给客户端,证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。

声明

文章均为本人技术笔记,转载请注明出处https://segmentfault.com/u/yzwall

http协议

http(Hypertext Transfer Protocol, 超文本传输协议),基于TCP连接
URL(Uniform Resource Locator,统一资源定位符),用于指明网络资源的地址
http报文类型分为请求报文响应报文

http请求报文

http请求报文由客户端向服务端发送;

http请求报文由三部分组成:Request-Line(请求行),Request Header(请求报文头,可选),Body(请求报文,只对POST有效)

请求行/Requst-Line

请求行格式:[Request + Request-URI + HTTP-Version + CRLF]

Request:请求方法

Request-URI:表示访问链接

HTTP-Version:表示HTTP协议版本

CRLF:表示回车换行,不允许出现多带带的CRLF字符

请求方法/Request

请求方法类型可分为:

GET:根据Request-URI,从服务端读取数据

POST:根据Request-URI,向服务端发送数据(Body)

HEAD:根据Request-URI,从服务端只读取响应消息报头

PUT:根据Request-URI,请求服务端存储一个资源

DELETE:请求服务端删除Request-URI所标识的资源

TRACE:请求服务器回送收到的请求信息,主要用于测试

CONNECT:待补充

OPTIONS:待补充

GET和POST区别

GET用于向服务端查询某些信息, POST用于向服务端发送应该被保存的数据. 即GET是从服务器上获取数据,POST是向服务器传送数据

GET将查询字符串参数追加到URL尾部,大小有限制; POST请求把提交数据放入请求正文中. 数据格式不限,大小不受限制;

http响应报文

服务端收到和解释请求报文后,返回一个http响应报文

http响应报文由三部分组成:Status-Line(状态行),Response Header(响应报文头,可选),Body(响应正文)

状态行/Status-Line

状态行格式为HTTP Version + Status Code(响应码) + Reason-Phase(响应码描述)

响应码/Status Code

响应码一共3位,第1位定义响应的类别
1xx:信息响应类,表示接收到请求并且继续处理;
2xx:成功响应;
3xx:重定向响应类,需要请求方执行更多操作
4xx:客户端错误,请求包含语法错误或者不能正确执行

400:客户端请求有语法错误,不能被服务端处理;

401:请求未授权;

403:服务端收到请求,但是拒绝提供服务;

404:请求资源不存在;

5xx:服务端错误,服务端不能执行正确的客户端请求

500:服务端内部错误;

501:保留未实现;

502:网关错误,服务器无法响应;

503:服务暂时失效,一段时间后可能恢复正常;

http报文头/Headers

待补充;

https协议 https协议与ssl协议 ssl

ssl(secure socket layer,安全套接字层),ssl协议是Netscape公司提出的安全保密协议,运行在应用层,ssl协议采用加密算法生成40位密钥,为应用程序提供数据加密;

https协议

https(Secure Hypertext Transfer Protocol,安全超文本传输协议),在http基础上通过SSl协议实现信息安全传输;https使用ssl在发送端将数据加密,然后由接收端进行解密,加密和解密都需要发送端和接收端通过交换一致的密钥来实现。

【客户端】客户端使用https url访问Web服务端,要求建立ssl连接
【服务端】Web服务端收到客户端请求,将网站的证书传送一份给客户端,证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。

【客户端】客户端收到网站证书后,浏览器执行如下操作:

2.1 验证证书是否受信任

2.2 生成随机密钥:如果证书受信任,浏览器生成一串随机密钥

【客户端】加密随机密钥:浏览器用证书提供的公钥对生成的随机密钥进行加密

【客户端】计算握手信息并加密:浏览器使用HASH加密算法计算握手信息,并用随机密钥加密,然后发送握手信息给服务端

【服务端】服务端收到握手信息后,执行如下操作:

5.1 解密随机密钥:服务端使用自己的私钥解密出随机密钥

5.2 解密握手信息:服务端使用随机密钥解密收到的握手信息,并验证HASH是否与浏览器发来的一致

5.3 发送加密握手信息:服务端使用随机密钥加密一段握手信息,发送给浏览器

【客户端】浏览器解密并计算握手信息的HASH,如果与服务端发来的HASH一致,握手结束;

最后,客户端与服务端的所有通信数据都通过随机密钥加密传输

http与https辨析

安全性:http用明文发送内容,不提供任何方式的数据加密,安全性较差;https协议在http基础上加入ssl协议保证数据安全,ssl凭借证书来验证服务器的身份,并为浏览器和服务器之间的通信加密;

端口:http和https使用的是完全不同的连接方式,http使用80端口,https使用443端口

系统开销:https系统开销比http开销大,传输效率不如http;

费用:https中ssl证书需要缴纳费用;

session与cookine

cookie数据存放在客户的浏览器上,session数据放在服务器上
cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用cookine
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie

参考

[1] http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html
[2] http://www.cnblogs.com/wqhwe/p/5407468.html
[3] http://www.php100.com/html/it/biancheng/2015/0209/8582.html

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67019.html

相关文章

  • AlphaWallet 和 Nervos 签署备忘录正式建立深度合作伙伴关系

    摘要:今天是年的第一天和宣布正式建立深度合作,共同推动区块链技术的进一步发展,未来双方将在包括联合技术研发品牌市场营销海内外市场拓展等领域展开密切合作。简称是的方案,为上层提供信任基础。 今天是 2019 年的第一天, AlphaWallet 和 Nervos 宣布正式建立深度合作,共同推动区块链技术的进一步发展,未来双方将在包括联合技术研发、品牌市场营销、海内外市场拓展等领域展开密切合作。...

    stackvoid 评论0 收藏0
  • 80亿大单!数据港又签下阿里哪些数据中心?

    摘要:近日,数据港发布公告表示,公司已与阿里巴巴顺利签署了关于等五个云计算数据中心基地园区项目的合作备忘录。此次数据港与阿里巴巴亿大单的签订标志着数据港业务规模将会大幅增长。近日,数据港发布公告表示,公司已与阿里巴巴顺利签署了关于ZH13等五个云计算数据中心基地园区项目的合作备忘录。备忘录明确约定了包括项目合作内容、项目合作周期、费用结算、违约罚则、法律效力及生效条款等所有主要商务条款。据悉,20...

    XiNGRZ 评论0 收藏0
  • 定制微信分享的内容(备忘

    摘要:微信分享的内容,从视觉上看有三个部分标题描述图片。声明年月日,微信宣布未接入的网站将统一显示默认缩略图所以在某些时候,订制内容是极为必要的。 微信分享的内容,从视觉上看有三个部分:标题、描述、图片。如果不使用微信的 jssdk 进行订制的话,微信会截取一张大概 300*300 并且距离 标签最近的一张图片作为需要的图片;标题会选取中的内容;描述则会是该页面的 URL。 声明:2017年...

    Java_oldboy 评论0 收藏0
  • 【译】Nodejs应用安全备忘

    摘要:所以我们整理了一个应用安全备忘录,以帮助你在部署启动应用程序的时候进行安全检查。这可以保护应用程序不被攻击。应该用日志记录下来,而不是显示给用户。 本人的博客http://www.wjs.photo/,感兴趣的可以看看哦,基于NodeJs框架ThinkJs 本文翻译自 www.risingstack.com ,并非逐字逐句的翻译,有错误的地方请指出,谢谢啦 应用程序的安全就像是你房间里...

    Loong_T 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<