HTTP
通俗易懂:就是有些电脑上的浏览器向我这台电脑发送一个预先定义的文本(HTTP Request),我这边处理一下(通常是从硬盘上去一个扩展名是.html的文件)然后再把这个文件通过文本方式发送回去(HTTP Response),就这么简单(摘自《码农翻身》)
HTTP 1.0
-
通俗易懂:传送http数据需要进行通信,而通信则需要网络进行连接,这就涉及到TCP连接,连接利用Socket进行通信,客户端需要的就是涉及一个socket通信程序进行监听端口并且接受数据/发送数据
-
缺点:接收数据时如果响应慢会被阻塞,无法再去处理新的连接请求
HTTP 2.0 多进程
-
多进程的思路:当接收连接以后,对于这个新的socket,不在主进程里处理,而是新创建子进程来接管
-
缺点:若是每秒的连接请求数量增大,会进行创建大量的进程去处理,正是这样,系统的资源被大量的浪费,看到这里,大部分人会想到使用线程去处理,但是线程也是需要大量的进行切换
HTTP 3.0 select模型
-
Socket的连接简单来说就是一个文件描述符(File Descriptor 简称 fd 是一个整数)最多一次性可以发送1024个socket fd
-
select模型:客户端请求连接时 发送的Socket,每次把一批Socket编号(简称:fd_set 数据结构,就是一组long类型的数组)发送给操作系统内核,然后阻塞,等待操作系统通知, 操作系统回将socket编号进行标记,即代表标记的可以进行处理,然后唤醒Http Server 去将标记后的socket进行处理
-
缺点:每次都需要遍历全部的socket数据,而对没有标记的socket的操作则是降低效率的操作
HTTP 4.0 epoll模型
- 针对于select模型,这个模型就是在操作系统进行相应的处理时,发送了已经有效的socket数据,无须HTTP Server再去处理没有标记的数据
总结
简单表面层次理解,没有涉及细节性的东西,各位斟酌的观看,另外这个针对于《码农翻身》此书结合理解产出,若有错误请提出,我会加以修改