广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中的HTTP协议问题
  • 279
分享到

C++中的HTTP协议问题

C++中HTTP协议HTTP协议C++HTTP协议 2022-12-28 12:12:32 279人浏览 安东尼
摘要

目录1、Http2、http请求-响应模型3、主要特点4、工作流程5、http请求的组成6、短连接和长连接7、http中的操作8、GET与POST的区别总结1、HTTP Hyper

1、HTTP

Hyper Text Transfer Protocol(超文本传输协议)。

是一种通信协议,它允许将超文本标记语言(html)文档从WEB服务器传送到客户端的浏览器。

在Internet中所有的传输都是通过tcp/IP进行的。HTTP协议作为TCP/IP模型中应用层的协议也不例外。

HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的https。HTTP默认的端口号为80,HTTPS的端口号为443。

如下图所示:

2、http请求-响应模型

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

HTTP协议永远都是客户端发起请求,服务器回送响应。这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。

HTTP同时支持支持B/S及C/S模式。支持基本认证和安全认证。

3、主要特点

(1)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

(2)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

(3)HTTP 0.9和1.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象,采用这种方式可以节省传输时间。

(4)无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

4、工作流程

HTTP完整流程包括四部分:

(1)客户机与服务器建立连接。

(2)客户机发送请求给服务器。

(3)服务器接收到客户端的请求,给予相应的响应信息。

(4)客户端收到请求并处理。

5、http请求的组成

http请求由三部分组成:请求行,首部,请求正文。

  • 请求报文格式为:请求行+首部+空行+实体组成
  • 响应报文格式为:状态行+首部+空行+实体组成

(1)请求行:

以方法开头,以空格分开,紧随其后的是路径和版本(包括http请求的种类,请求资源的路径,协议的版本号)。

格式:

Method  Request-URL  HTTP-Version  CLRF

注:

  • Method:请求方法(get,post等)
  • Request-URL:统一的资源标识符
  • HTTP-Version:HTTP协议的版本
  • CRL:为回车和换行(回车和换行只能出现在结尾,不能再其他地方出现)。

请求方法:

  • GET请求服务器的文档;POST向服务器发送信息;
  • PUT从服务器向客户端发送文档;DELETE为删除web网页;
  • TRACE为把到达的请求回送;HEAD为请求关于文档的信息,但不是文档本身; OPTIONS询问关于可用的选项;

(2)请求首部

http的头部信息,每一个用\r\n分割;

常用的首部有:

  • Connection:允许客户端和服务器指定与请求/响应连接有关的选项(长连接,短连接等)
  • Data:提供日期和时间标志
  • MIME-Version:给出了发送端使用的MIME版本
  • Client-IP:描述客户端机器的IP
  • From:提供了客户端用户的E-mail地址
  • Host:给出请求的主机名和端口号
  • Referer:提供了包含当前请求的URL的文档的URL
  • cookie:向服务器传送一个令牌

(3)请求正文

为发送给服务器的查询信息(使用get时,body是空的,get只能读取,而post可以写入信息);

(4)响应报文也包括请求行,请求首部,空行,实体

请求行格式为:http版本+状态码+短语+\r\n  短语与状态码相对应

请求首部格式为:一系列首部名称:值\r\n的组合

请求实体为:服务端真正返回的信息

状态编码为:

  • 100-199指定客户端响应的一些动作,请求已被服务接收 200-299表示请求被接受,处理成功 
  • 300-399表示已经移动的文件,重定向,需进一步处理
  • 400-499指定客户端的错误,有语法错误无法实现 500-599指定服务端的错误,服务器未能实现合法的请求

6、短连接和长连接

HTTP1.1之后使用了长连接,长连接使数据传输完成后继续保持TCP连接不间断,等待相同域名继续使用这个通道进行数据传输。

HTTP1.0使用首部Connection:Keep-alive进行长连接的试验,HTTP1.1之后使用Connection:Close来告诉服务端不使用长连接。但是使用了Connection:Keep-alive这个首部并不代表采用长连接。

  • 在短连接中:每一个请求/响应都需要建立一次TCP连接(三次握手),
  • 长连接模式下:判断数据接收完成的方法有 --1--服务器关闭连接;--2--首部Content-Length判断是否传输完毕,指定了实体正文的长度。

7、http中的操作

HTTP/1.1协议中共定义了八种方法(有时也叫“动作”)来表明Request-URI指定的资源的不同操作方式,最基本的有4种,分别是GET,POST,PUT,DELETE对应着对这个资源的查,改,增,删4个操作。最常见的就是GET和POST了。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。具体方法:

(1)GET:向特定的资源发出请求

(2)POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

(3)PUT:向指定资源位置上传其最新内容。

(4)DELETE:请求服务器删除Request-URI所标识的资源。

(5)HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。该方法常用于测试超链接的有效性,是否可以访问,以及最近是否更新。

(6)TRACE:请求服务器会送收到的请求信息,主要用于测试或诊断。

(7)OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求

(8)CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。(即留为将来使用)

8、GET与POST的区别

(1)GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?postid=6810130&update=1 ;POST方法是把提交的数据放在HTTP包的Body中。

(2)GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制。

(3)GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.FORM来获取变量的值。

(4)GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: C++中的HTTP协议问题

本文链接: https://www.lsjlt.com/news/176041.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++中的HTTP协议问题
    目录1、HTTP2、http请求-响应模型3、主要特点4、工作流程5、http请求的组成6、短连接和长连接7、http中的操作8、GET与POST的区别总结1、HTTP Hyper ...
    99+
    2022-12-28
    C++中HTTP协议 HTTP协议 C++ HTTP协议
  • C#记一次http协议multipart/form-data的boundary问题
    目录1.问题描述2.解决思路3.解决步骤1.问题描述 使用post方法调用上级联网厂家接口,返回http状态码415,返回信息Content type ‘applicat...
    99+
    2022-11-13
  • 有关HTTP协议类的问题有哪些
    小编给大家分享一下有关HTTP协议类的问题有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、HTTP协议类的主要特点是什么...
    99+
    2022-10-19
  • C/C++实现HTTP协议解析的示例代码
    超文本传输协议 (HTTP) 是分布式、协作、超媒体信息系统的应用层协议。 这是自 1990 年以来万维网数据通信的基础。HTTP 是一种通用且无状态的协议,它可以用于其他目的,也可...
    99+
    2022-11-13
  • 怎么解析C#网络编程中的HTTP协议
    这篇文章将为大家详细讲解有关怎么解析C#网络编程中的HTTP协议,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。我们在用Asp.net技术开发Web应用程序后,当用户在浏览器输入一个网址时就是...
    99+
    2023-06-17
  • HTTP协议在大数据传输中的瓶颈问题如何解决?
    HTTP协议作为现代互联网中最为广泛使用的应用层协议,其在数据传输中具有重要的地位。然而,在大数据传输中,HTTP协议也会遇到一些瓶颈问题,例如数据传输速度慢、数据包丢失等。本文将介绍HTTP协议在大数据传输中的瓶颈问题,并提出一些解决方...
    99+
    2023-08-20
    大数据 自然语言处理 http
  • WebSocket协议与HTTP协议的差异与联系
    引言:随着互联网的普及,Web应用的需求不断增加,为了实现实时交互和推送功能,新的通信协议WebSocket应运而生。而传统的HTTP协议也在这个过程中逐渐被WebSocket取代。本文将重点探讨WebSocket协议与HTTP协议的差异与...
    99+
    2023-10-21
    Http websocket 差异与联系
  • Android中怎么通过 Http协议访问网络
    Android中怎么通过 Http协议访问网络,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。HTTPCONNECTION由于网络连接是耗时操作不能在UI线程操作,一般通过Han...
    99+
    2023-05-30
    android http
  • Android 通过HttpURLConnection访问Http协议网络
    本文目录第一步:添加网络访问权限第二步:使用HttpURLConnection访问网络代码示例 Android原生目前支持两种方式访问http协...
    99+
    2022-06-06
    http协议 Android
  • Java中的 HTTP 协议原理详解
    目录前言1.HTTP 特点2.HTTP 组成2.1 请求对象2.1.1 请求行2.1.2 请求报头2.1.3 空行2.1.4 请求正文2.2 响应对象2.2.1 状态行2.2.2 响...
    99+
    2022-11-13
  • HTTP 协议的演变史:从 HTTP/1.0 到 HTTP/2.0。
    HTTP 协议是互联网上最重要的应用层协议之一,它负责在客户端和服务器之间传输数据。随着互联网的不断发展,HTTP 协议也在不断演变,从最初的 HTTP/0.9 到现在的 HTTP/2.0,不断地改进和完善。本文将为您介绍 HTTP 协议的...
    99+
    2023-08-31
    bash numy http
  • Golang中基于HTTP协议的网络服务怎么访问
    本文小编为大家详细介绍“Golang中基于HTTP协议的网络服务怎么访问”,内容详细,步骤清晰,细节处理妥当,希望这篇“Golang中基于HTTP协议的网络服务怎么访问”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-07-06
  • Java的http协议实例分析
    本篇内容主要讲解“Java的http协议实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java的http协议实例分析”吧!http协议的组成 http...
    99+
    2022-10-19
  • HTTP协议的含义是什么
    这篇文章主要介绍了HTTP协议的含义是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 1. 使用谷歌/火狐浏览器分析 在Web应用中...
    99+
    2022-10-19
  • 【PHP面试题15】http 协议的 header 中常见的 key 及含义
    文章目录 一、概览二、请求头部2.1 Accept2.2 Accept-Charset2.3 Accept-Encoding2.4 Accept-Language2.5 Cache-Contr...
    99+
    2023-09-20
    http java php header
  • 你了解Java教程中的HTTP协议吗?
    Java作为一种高级编程语言,广泛应用于各种应用程序的开发。而HTTP协议则是Java教程中必不可少的一部分。本文将介绍HTTP协议在Java教程中的应用,并为读者演示HTTP协议相关的代码。 HTTP协议是一种网络协议,它负责在Web服务...
    99+
    2023-06-17
    教程 http 自然语言处理
  • Golang中基于HTTP协议的网络服务
    目录一、HTTP协议的网络服务1.1 使用http.Get函数访问HTTP协议的网络服务1.2 使用缺省客户端DefaultClient(类型为*http.Client )...
    99+
    2023-05-15
    Golang基于HTTP协议的网络服务 Golang基于HTTP协议 Golang网络服务
  • 如何理解HTTP协议中的状态码
    这篇文章主要介绍“如何理解HTTP协议中的状态码”,在日常操作中,相信很多人在如何理解HTTP协议中的状态码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解HTTP协议中的状态码”的疑惑有所帮助!接下来...
    99+
    2023-06-08
  • HTTP协议中请求方法的Get和Post
    HTTP协议中请求方法Get和Post的区别是什么?Get:是以实体的方式得到由请求URI所指定资源的信息,如果请求URI只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。 Post:用来...
    99+
    2023-06-03
  • HTTP协议的知识点有哪些
    这篇文章主要介绍了HTTP协议的知识点有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇HTTP协议的知识点有哪些文章都会有所收获,下面我们一起来看看吧。 HTTP也叫作超...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作