http的访问过程或者访问页面会发生什么
1. 建立连接客户端与服务器之间需要建立 TCP 连接,常用步调如下:
[*]DNS分析:客户端将目标 URL 转换为服务器的 IP 地址。
[*]三次握手:TCP 协议通过三次握手建立可靠连接,确保双方具备通讯本领。
[*]传输层连接建立:连接由服务器监听特定端口(如 HTTP 默认端口 80 或 HTTPS 的 443)。
2. 接受请求
HTTP 请求由客户端发送到服务器后,服务器根据自身的 I/O 模型接受和处理请求。
Web访问相应模型:
[*] 单进程 I/O 模型:
单个进程通过同步阻塞 I/O 处理请求,适用于少量连接。缺点是性能低下,无法支持高并发。
[*] 多进程 I/O 模型:
每个请求分配一个独立进程。
优点:并发性能提拔;
缺点:进程切换本钱高,占用更多体系资源。
[*] 复用的单进程 I/O 模型:
单个进程处理多个请求,通过 I/O 多路复用机制(如 select、poll、epoll)管理并发连接。
优点:资源消耗低;
缺点:编程复杂。
[*] 复用的多进程 I/O 模型:
结合多进程和 I/O 复用,允许一个进程处理多个连接,同时多进程分担负载。
优点:扩展性强;
缺点:资源消耗较高。
C10K 题目
C10K(即 1 万个客户端同时连接)是高并发性能题目,传统 HTTP 服务器(如 Apache)采取多进程模型,遇到线程或进程管理瓶颈。
[*]办理方案:Nginx 使用事件驱动的异步非阻塞架构,通过 epoll 支持高并发。
3. 处理请求
服务器分析 HTTP 请求头和请求体:
[*]确定请求方法:GET、POST、PUT、DELETE 等;
[*]提取 URL 和查询参数;
[*]检查请求的协议版本和是否支持 HTTPS;
[*]校验请求是否合法(如认证信息、请求格式)。
4. 处理 GET 请求
如果是 GET 请求,服务器会按照以下步调处理:
[*]资源定位:分析请求的路径映射到服务器资源。
[*]缓存处理:检查是否有缓存资源,决定是否返回缓存或处理新资源。
[*]文件读取或动态天生内容:对于静态文件(如 HTML、CSS、图片)直接读取磁盘;对于动态内容(如 API 返回数据),调用后端逻辑天生。
5. 天生相应头
服务器根据处理结果天生 HTTP 相应头,包含以下信息:
[*]状态行:协议版本、状态码(如 200 OK、404 Not Found、500 Internal Server Error等等)。
[*]相应头字段:如 Content-Type(内容范例)、Content-Length(内容长度)、Cache-Control(缓存控制)等。
[*]Cookie 及安全信息:设置 Cookie 或跨域策略(如 Set-Cookie、CORS)。
6. 发送相应
服务器通过已建立的 TCP 连接将相应数据发送到客户端:
[*]相应头发送:先发送相应头字段;
[*]相应体发送:将请求结果(HTML 页面、JSON 数据等)通过数据包分块发送;
[*]关闭连接:HTTP/1.0 默认关闭连接,HTTP/1.1 默认保持连接(Keep-Alive)。
7. 记录日志的处理过程
服务器会记录每个请求的相关日志,供后续分析和调试:
[*] 记录内容:
[*]客户端 IP 和请求时间;
[*]请求 URL 和方法;
[*]相应状态码和数据大小;
[*]用户代理(User-Agent)信息。
[*] 日志存储:日志通常存储在文件(如 Apache 的 access.log 和 error.log)或集中式体系(如 Elasticsearch)。
[*] 日志用途:
[*]分析流量趋势;
[*]调试错误请求;
[*]检测潜在的攻击行为(如 DDOS)。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]