http 请求流程 && 5种 IO 模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http 请求流程 && 5种 IO 模型相关的知识,希望对你有一定的参考价值。

一次完成的http请求应该有以下几个步骤:

1.建立或处理连接,server端接受请求或者处理请求。

2.接受请求,接受来自网络报文中对某一资源的请求过程 

3.处理请求:对请求报文进行分析,并获取请求的资源及请求方法等信息 <补充说明b>

4.访问资源:向系统内核发起调用,获取存储在磁盘中请求报文中的资源

5.构建相应报文

6.发送相应报文

7.记录日志

 <补充说明b>

http事务:request(请求)  -------  response(相应)

request样式
<method><URL><Version>
<HEADERS>

<body>

responese样式
<Version><status><reason phrase>
<HEADERS>

<body>

 <补充说明c  IO类型>

同步和异步:synchronous, asyncrhonous
关注的是消息通知机制
				
同步:调用发出不会立即返回,但一旦返回就可以返回最终结果;
异步:调用发出之后,被调用方立即返回消息,但返回的非最终结果;被调用者通过状态、通知机制来通知调者,或通过回调函数来处理结果;
			
阻塞和非阻塞:block, nonblock
关注的是调用等等调用结果(消息、返回值)时的状态
				
阻塞:调用结果返回之前,调用者(调用线程)会被挂起;调用者只有在得到结果之后才会返回;
非阻塞:调用结果返回之前,调用不会阻塞当前线程;

 <补充说明d 5种IO模型>

blocking IO 	        阻塞IO
nonblocking IO	        非阻塞IO
IO multiplexing	        复用行IO,用select(),poll()回调     apache的profix worker工作模式采用此模型,受限与1024边界效应
signal driven IO        事件驱动IO  
     通知机制:
            水平触发:多次通知
            边缘触发:只通知一次
asyncrhonous IO         异步IO

 

以上是关于http 请求流程 && 5种 IO 模型的主要内容,如果未能解决你的问题,请参考以下文章

Golang net/http 请求处理流程分析

Golang net/http 请求处理流程分析

HTTP学习---图解HTTP[三次握手&&ISO模型]

Go发起HTTP2.0请求流程分析(中篇)——数据帧&流控制

ab&curl&elinks

使用Jmeter进行HTTP接口测试