http--网络传输协议--笔记

362 阅读5分钟
HyperText Transfer Protocol---HTTP是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范

版本

http/2 基于google的SPDY协议,特点:

  1. 二级制协议,不再是纯文本;
  2. 可发起多个请求,废弃了1.1里的管道;
  3. 使用专用算法压缩头部,减少数据传输量;
  4. 允许服务器主动向客户端推送数据;
  5. 增强了安全性,事实上 要求加密通信。

http2也衍生出了gRPC等新协议。但普及率远不及1.1。

HTTP/3

QUIC---google  基于udp

特性

协议标准 跟 实现原理 有区分, 标准的指定,是更为了便于具体业务和技术发展。

  • 互联网Internet, 子集万维网World Wide Web(基于http协议)
  • 万维网之外,BT、Magnet点对点下载、FTP文件下载、SSH、及时通信等,都有各自的协议。
  • 浏览器--就是个http请求方,User Agent用户代理。
  • web服务器,优先级 Nginx>>Apache>>小众Jetty
  • CDN Content Delivery NetWork,内容分发网络。 应用了http协议里面的缓存和代理技术,代替源站响应客户端的请求。
  • http对比telnet、ftp,更具有开放性,不明显偏向与一对一。

  • 超文本有超链接,是网状结构,文本是线性结构。


说明:

         HTTP通常跑在TCP/IP协议栈之上,依靠IP协议实现寻址和路由、TCP协议实现可靠数据传输、DNS协议实现域名查找、SSL/TLS协议实现安全通信。        此外,还有一些协议依赖于HTTP,例如WebSocket、HTTPDNS等。这些协议相互交织,构成了一个协议网,而HTTP则处于中心地位。 


webService  &&  webServer

Web Service,它的名字与Web Server很像,但却是一个完全不同的东西。

Web Service是一种由W3C定义的应用服务开发规范,使用client-server主从架构,通常使用WSDL定义服务接口,使用HTTP协议传输XML或SOAP消息,也就是说,它是一一个基于Web((HTTP))的服务架构技术,既可以运行在内网,也可以在适当保护后运行在外网。
因为采用了HTTP协议传输数据,所以在Web Service架构里服务器和客户端可以采用不同的操作系统或编程语言开发。例如服务器端用Linux+Java,客户端用Windows+C#,具有跨平台跨语言的优点。 
WAF是近几年比较“火”的一个词,意思是“网络应用防火墙”。与硬件“防火墙”类似,它是应用层面的“防火墙”,专门检测HTTP流量,是防护Web应用的安全技术。
WAF通常位于Web服务器之前,可以阻止如SQL注入、跨站脚本等攻击,目前应用较多的一个开源项目是ModSecurity,它能够完全集成进Apache或Nginx。 

WebServer分硬件和软件,硬件指服务器、云之类,软件如Nginx、Apache。

补充:webserver只能用http协议,因为是web。      webservice的接口就不固定了。


rpc就是把网络通信封装成了函数调用的形式,所以叫rpc。soap是web service的消息

格式。RESTful是一种web服务接口的设计理念。 


域名说明

http://nginx.org/en/download.html

协议名schema + 主机名host + 路径path

eg:“time.geekbang.org”,这里的“org”就是顶级域名,“geekbang”是二级域
名,“time”则是主机名。


SSL、TLS

(SSL) Secure Socket Layer  --->  (TLS) Transport Layer Security 



TCP/IP协议四层

  1. 链接层:负责在以太网、wifi等底层网络上发送原始数据包,工作在网卡层次,使用MAC地址标记网络上的设备, 也叫 MAC层。                        ---交换机 二层
  2. 网络互连层:IP协议层,在 链接层 基础上,用ip地址替代mac地址,把许多局域网、广域网连接成一个网络,再在这个网络里,将IP地址 翻译成-> MAC地址。   ---路由 三层
  3. 传输层:TCP,这是个有状态、有序的协议。    UDP无状态、无序的协议,
  4. 应用层:Telnet、SSH、FTP、SMTP、HTTP。

mac 传输单位 帧frame,ip单位 包packet,tcp单位 段segment,http单位 消息message。本质无区别,都是数据包。


OSI 七层。



DNS

DNS服务器的数量要比核心系统的服务器多很多,而且大多部署在离用户很近的地方。比较知名的DNS
有Google的“8.8.8.8”,Microsoft的“4.2.2.1”,还有CloudFlare的“1.1.1.1”等等


本地dns缓存--->本地hosts文件内--->顶级域名等


浏览器里面输入网址,发生了什么?

1判是不是ip。如果是域名,走域名解析成ip的流程,优先级 浏览器缓存>本币hosts>系统缓存>根域名>顶级dns服务器>二级dns服务器 >三级dns服务器。

通过DNS解析出来的ip,有可能是CDN的ip,如果CDN失败了,会直接穿透到源ip。

2通过各种路由器的转发,找到了最终的服务器,进行tcp3次握手,然后服务端收到请求后,进行分析,最终返回http保温,再通过tcp隧道返回给用户端,用户端收到后,发告诉服务端已经收到信息得信号ack。

如果dns解析失败,浏览器直接报错。



???

拿到报文信息后,通过渲染引擎,js引擎渲染出来?

这个引擎 属于什么角色?


TCP

tcp协议是有状态的,一开始是CLOSED,链接成功后是ESTABLISHED状态,断开连接时FIN-WAIT,最后又是CLOSED状态。