美文网首页
HTTP协议以及请求第三方数据的源码实现

HTTP协议以及请求第三方数据的源码实现

作者: 365_9163 | 来源:发表于2020-07-28 11:34 被阅读0次

    HTTP协议是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。

    HTTP协议与TCP协议的关系:

        TCP属于传输层协议,HTTP属于应用层协议,HTTP协议是建立在TCP协议之上的。

    HTTP之请求消息Request:

    包含四部分:请求行,    请求头部,空行,请求数据

    请求行:包括 请求类型 访问资源 HTTP版本,以\r\n结尾。

    请求头部:用来说明服务器要要使用的附加信息以\r\n结尾。

    空行: 请求头后面的空行是必须的。

    请求数据:也叫主体,可以添加任意的其他数据。

    HTTP之回复消息Response:

    包含四部分:响应行,响应头部,空行,响应数据

    响应行:HTTP版本 状态码 状态消息

    响应头部:说明客户端要使用的一些附加信息。

    空行:消息报头后面的空行是必须的

    响应数据:服务器返回给客户端的文本信息

    HTTP请求过程:

    浏览器获取输入的域名后,向DNS请求解析域名的IP地址, 浏览器与服务器建立TCP连接,建立连接后 发出HTTP请求,服务器通过HTTP请求把信息发给浏览器,TCP连接释放,浏览器解析相关信息。

    HTTP工作原理:

    HTTP协议采用了请求/响应模型,客户端向服务器发送一个请求报文,强求报文包含请求的方法,URL,协议版本,请求头部和请求数据,服务器用一个状态行作为响应,响应的内容包括协议的版本,成功错误代码,服务器信息,响应头部和响应数据。

    状态码:

     三位数字组成,第一个定义了响应的类别,总共五种类别

    1xx:指示信息,表示请求已经接收,继续处理

    2xx:成功,表示请求已被成功接收,

    3xx:重定向-要完成请求必须进行更进一步的操作

    4xx:客户端错误,请求有语法错误或者请求无法实现

    5xx:服务器端错误,服务器未能实现合法的请求。

    HTTP实现客户端请求数据源码实现:

    实现一个访问第三方网站可以使用两种方式:同步 和异步

    同步方式是:线程请求完之后一直等待数据的返回;

    异步方式是:并行发送请求,回调中IO多路复用

    同步与异步:形容两者之间的关系,异步返回是需要使用回调的。

    阻塞与非阻塞:形容一个IO的状态的,read时候没有数据,此时IO会阻塞住,等待数据的到来。这时候应用程序与底层IO的数据是同步的关系。

    同步实现流程:

         设置TCP连接(socket ,connect),封装HTTP包头(buffer,),发送数据到服务器(send(buffer.....)),等待服务器返回数据(select ,recv,),解析数据.

    异步设计:需要一个线程 设置callback,IO多路复用监听IO数据的到来

    1.初始化异步操作的上下文(线程的创建pthread_create,io多路复用的初始化创建等epoll_create  回调设置cb)。2.销毁异步操作上下文(pthread_cancel,close)3.向服务器发送一个请求(准备socket,connect,send,epoll_ctl将此socket加入到IO多路复用中)。4.回调函数(检测加到IO多路复用中的IO是否有数据 epoll_wait)

    对比:同步 属于一请求一回复的形式,异步属于大量请求并行不等待结果,线程回调中得到结果。如下图。

    同步实现请求 异步请求与回复

    源码地址:http客户端请求第三方数据的同步及异步实现

    相关文章

      网友评论

          本文标题:HTTP协议以及请求第三方数据的源码实现

          本文链接:https://www.haomeiwen.com/subject/pphhlktx.html