HTTP Server

547 阅读2分钟

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的操作则是降低效率的操作 select模型

HTTP 4.0 epoll模型

  • 针对于select模型,这个模型就是在操作系统进行相应的处理时,发送了已经有效的socket数据,无须HTTP Server再去处理没有标记的数据 epoll模型

总结

简单表面层次理解,没有涉及细节性的东西,各位斟酌的观看,另外这个针对于《码农翻身》此书结合理解产出,若有错误请提出,我会加以修改