美文网首页
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协议以及请求第三方数据的源码实现

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

  • HTTP的进一步了解

    134.谈一下HTTP协议以及协议头部中表示数据类型的字段? HTTP协议的请求和响应报文中包含HTTP首部,HT...

  • HTTP与TCP协议的区别

    (一) HTTP是应用层协议,负责对请求和响应数据的封装,包括请求方法、请求头和请求正文,以及状态行,响应头和响应...

  • 网络:HTTP、HTTPS

    HTTP 协议 POST 请求和 GET 请求 Cookie 和 Session 数据加密 HTTPS 协议 HT...

  • 几种常见的http 请求方式

    HTTP协议以及HTTP请求中8种请求方法 什么是协议? 协议,是指通信的双方,在通信流程或内容格式上,共同遵守的...

  • http协议之http包结构

    1.请求行 2.请求头 3.空行 4.消息主体 Http协议 数据包结构 及 请求方式 HTTP协议结构

  • 【iOS出租屋进阶】之网络通信

    HTTP协议POST、GET 访问网络数据大部分都要用到HTTP协议,通过HTTP协议向服务器请求数据,再通过HT...

  • HTTP

    HTTP请求报文:请求行(包括http协议版本,请求方法等),消息报头(连接情况,接收的数据类型,接收数据范围等)...

  • web一页纸

    简单理解: 1、client通过http协议发送get,post等请求。 2、web sever实现了http协议...

  • http消息体

    HTTP请求数据: HTTP请求信息由3部分组成: ① 请求方法 URI 协议/版本② 请求头(Request H...

网友评论

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

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