最近我在作前端面试题总结系列,感兴趣的朋友能够添加关注,欢迎指正、交流。前端
HTTP 的全称是 Hyper Text Transfer Protocol,翻译过来就是“超文本传输协议”。nginx
HTTP 是一个简单的请求-响应协议,它一般运行在 TCP 之上。它指定了客户端可能发送给服务器什么样的消息以及获得什么样的响应。git
HTTP 详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通讯的规则,经过因特网传送万维网文档的数据传送协议。面试
自 Tim Berners-Lee 博士和他的团队在 1989-1991 年间创造出 HTTP 以来,HTTP 已经发生了太多的变化,在保持协议简单性的同时,不断扩展其灵活性。现在,HTTP已经从一个只在实验室之间交换文件的早期协议进化到了能够传输图片,高分辨率视频和3D效果的现代复杂互联网协议。编程
HTTP 是应用层的协议,经过 TCP,或者是 TLS -加密的TCP链接来发送,理论上任何可靠的传输协议均可以使用。浏览器
同其余应用层协议同样,HTTP 协议是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。服务器
HTTP 是一种协议规范,这种规范记录在文档上,为真正经过 HTTP 进行通讯的 HTTP 的实现程序。markdown
由于其良好的扩展性,时至今日,它不只被用来传输超文本文档,还用来传输图片、视频或者向服务器发送如 HTML 表单这样的信息。HTTP 还能够根据网页需求,仅获取部分 Web 文档内容更新网页。网络
HTTP 的服务器端实现程序有 httpd、nginx 等。架构
其客户端的实现程序主要是 Web 浏览器,例如 Firefox、Google Chrome、Safari、Opera 等。
Web 服务是基于 TCP 的,所以为了可以随时响应客户端的请求,Web 服务器须要监听在 80/TCP 端口,这样客户端浏览器和 Web 服务器之间就能够经过 HTTP 进行通讯了。
HTTP 是一个标准的客户端服务器模型。
客户端和服务端经过交换各自的消息(与数据流正好相反)进行交互。由像浏览器这样的客户端发出的消息叫作 requests,被服务端响应的消息叫作 responses。
请求和响应消息的头以 ASCII 形式给出;而消息内容则具备一个相似 MIME 的格式。这个简单模型是早期 Web 成功的有功之臣,由于它使开发和部署很是地直截了当。
它是在 Web 上进行数据交换的基础,是一种 client-server 协议。
请求经过一个实体被发出,实体也就是用户代理。大多数状况下,这个用户代理都是指浏览器,固然它也多是任何东西,好比一个爬取网页生成维护搜索引擎索引的机器爬虫。
也就是说,请求一般是由像浏览器这样的接受方发起的。一个完整的Web 文档一般是由不一样的子文档拼接而成的,像是文本、布局描述、图片、视频、脚本等等。
HTTP 不提供任何方式的数据加密,若是攻击者截取了Web浏览器和网站服务器之间的传输报文,就能够直接读懂其中的信息,所以,HTTP 协议不适合传输一些敏感信息,好比:信用卡号、密码等支付信息。
HTTP 是一种运行于 TCP 协议上的应用层协议。
~
~ 本文完,感谢阅读!
~
学习有趣的知识,结识有趣的朋友,塑造有趣的灵魂!
你们好,我是〖编程三昧〗的做者 隐逸王,个人公众号是『编程三昧』,欢迎关注,但愿你们多多指教!
你来,怀揣指望,我有墨香相迎! 你归,不管得失,惟以余韵相赠!
知识与技能并重,内力和外功兼修,理论和实践两手都要抓、两手都要硬!