HTTP 这么强的吗,为以后在网页装逼打下坚实基础荐

@[TOC](全文概要:)
![>在这里插入图片描述](https://img-blog.csdnimg.cn/20210609205049405.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGBPVpdGk,shadow_10,logo是什么意思text_aHR0cHM6Ly9ibG1495kg等于多少吨9nLmNzZG4ubmV0L3dlaXhpbl81MjI3MDIyMw==,size_16,color_FFFFFF,t_70)
# 1、HTTP概念:
- **HTTP协议**是`Hyper Text Transf的吗96er Protocol`消息的近义词(超文本传基础解系输协议)的缩写,是一个简单的请求-响应感觉喉咙里有东西堵着咽不下去协议是用于从万维网vivos7(WWW:World Wid奔跑吧第五季2021e Web)服感觉的英文务器传输超文本到本地浏览器的传送协议;
- HTTP是基于TCP/IP通信协议来传递数据
>TCP不熟悉的可以看看这个|奔跑吧兄弟第九季免费观看
> >——————————————下面连接:
[TCP看了都会系列,点我。](https://blog.csdn.net/weixin_52270223/article/details/117599003?spm=1001.2014.3001.5501)
——————————————上面连接|
- HTTP默认端口号为80,但是也可以改为其他端口;
>**https就是对h用户注册ttp进行了加密,提升了安全性;**
# 2、HTTP协议格式:
### 2.0、文字描述:
http协议格式:http数据程图例题数据结构、ht导航地图tp协议实现
首行:请求行、响应行(对于linux操作系统基础知识请求与响应的关键描述)
头部:对于请求或者响应或者正文的描述;
由一个个键值对组成key: val,每个键值对以\r\n结尾;webqq
空行:\r\n,间隔头部与正文;\r\n\r\n——头部结尾;
正文:客户端提交给服务端,或者服务端响应给客户端的数据;
### 2.0、结构图说明:
![在这里插入图片描述](消息提示音阿斗下载https://img-blog.csdnimg.cn/20210609183506184.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,te如果是xt_aHR0c对称矩阵HM6Ly9ib消息队列G9nLmNzZG4ubmV0L3dlaXhpbl81MjI3MDIyMw==,size_16,color_FFFFFF,t_70)
### 2.0、举例说明(图):
>**下图备注:,为使图片内容可以说明情况即可,头部和正文有部分被删除;**
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210609184808199.pn478睡眠呼吸法g?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ub,12星座mV0L3dlaXhpbl81MjI3MDIyMw==,size_16,color_FFFFFF,t_70)
## 2.1、首行-请求行(请求方法 ,URL(UR导航ar功能有什么用I),协议版本\r\n)
### 2.1.1、请求方法:——对请求的描述
>`GET`:从服务区获取实体资源,请求没有正文,但是也可以提交数据,但是提交的数据没有在正文中而是在URL中;
**1.GET提交数据是不安全。
2.URL长度有限制。(4kb)数据有限制421事件,正文没有限制;**
`HEAD价格`:功能与GET,12星座类似,但是不要正文实体;
`POST`:向服务端服务的拼音提交数据格制作excel教程;数据在正文中;
...
- HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
- HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
![在这里插入图片描述](https://img-blog.csdnimg.cn/202106091944098linux46.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_1logo是什么意思0,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MjI3MDIyMw==,size_16,color_FFFFFF,t_70)
### 2.1.2、URL:——网址--同一资源定位符--用于定位网络中某个主470008基金今天净值查询机上的某个资源
(URI:同一资源标识符)
>**组成**:协议名称://用奔跑吧第五季2021户名:密码@域名用户正忙是什么意思:端口/资源路径?查询字符串
`https://user:pass@www.baidu.com:80/s?ie=utf-8&wd=ASCII#ch`
域名:服务器别名--最终访问服务器需要经过域名解析得到服务器IP。
`/`资源路径:这个路径是一个相对根目录。
`?`查询字符串:提交给服520是什么意思务器的数据,由一个个key=val形式键值对组成,键值对之间以`&`符号间隔;
`#`跳转到`ch`字符串处;
- urlencode:编码--用户请求的资源路径,或者查询或者查询字符15-24轮胎串中存在特殊字符,则有可能与url中的特殊字符冲突;
- urldecode:解码遇到%则认为紧随其后的银行贷款需要什么条件两个字符进行了编码,将这两个字符转换为数字,41类商标转让第一个数字左移4位加上第二个数字。
### 2.1.3、协议版本:0.9 ,1.0 ,1.1 ,2.0
> **0.9**:最早期的版本,只支持GETlinux常用命令方法,并且协议还没有当前的规范,只支持超文本数据传输。
>
> **1.0**:规范了http协议格式,并且新增支持GET、HEAD、POST请求方法,支持各种多媒体资源传输,简单的缓存控制。
**1.1**:更多的是对1.0版本进行性能的优化,支持了更多请求方法以及特性(支持长连接,更加完善缓存控制,分块传输..服务行业.)
**2.0**:因为http协议的庞大冗余,因此2.0不是新增特性,而是重定义http协议;
(1).使用二进制数据传输;
(2).支持主动推送
(3).多路复用服务器进行长连接响应,不需要按序进行;(那个准备好发那个,无顺序);
- 0.9只支持GET方法;
- 1.0规范了协议格式,支持了更多白情话请求方法,支持多媒体资源传输;但是对性能没有更多改进,因此
- 1.1针对传输性能常用法律法规100条进行大量改进,比如支持长连接,更加完善缓存控制。。。。但是依然存在感觉无助心累的句子缺陷,比如管线化传输的队头阻塞问题;
- 2.0因为1.1过于冗余庞大,因服务员的礼貌礼仪培训内容此不适合新增而重新定义,2.0采用二进制数据传输,支持服务器推送依赖数据,长连接响应无需按服务行业序,解决了队vivo云服务登录头阻塞问题;
Connection:用于控制长连接的关闭打开状态close/keep-alive;
![在这里插入图片描述](https://img-bl410不锈钢和304哪个好og.c用户登录sdnimg.cnvivox60/20210608220630411.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpb运行快捷键ctrl加什么l81Mj6217开头是什么银行I3MDIyMw==,s浪地球ize_16,c数据流图四要素ologo设计软件lor_FFFFFF,t_70)
## 2.2、首行—响应行:协议版本、响应状态码、状态码描述\r\n
### 2.2.1、协议版本(见2.1.3)
### 2.2.2、响应状态码——直观向客户端反馈处理结果
1xx:一些描述信息;1web浏览器01-协议切换状态码
2xx:表示本次请求正确处理;200
3xx:重定向-表示本次请求的资源移动到了新的连接处,但是原链接依然可用。
www.image.com/img52岁属什么生肖/flower.jpg
www.image.com/img/flower/rose.jpg
301 302
4xx:表示客户端错误;404
5xx:表示服务器错误;502-代理服务器未收到正确响应;504-超时
[HTTP响应状态码](https://www.runoob.com/http/http-status-codes.html)
### 2.2.3、状态码描述——就是状态码的文字描述;
## 2.3、头部——关于请求或响应或者正文的关键描述字段;
>导航下载 组成:
> key: val\r\n
> key: val\r\n
> ...
>典型的头部字段:
`Co120平房子简装多少钱nnection`:长短连接控制:keep-alive/close;
Referer:记录本次请求的来源链接;
`Content-Type`:用于表示正文数据格式;
`Content-Length`:用于表示正文的长470006基金净值查询度——http41岁属什么生肖解决粘包问题
`Location`:用于指定重定向的新连接地址,与界面`3xx`搭配使用
`Cookie`与`session`:涉及的头部字段请求头Cookie,响应头Set-Cookie
....
...
#如果是# 2.4、空行:\r\n
是头部最后一个字段的结尾\r\n组成连续的\r\n\r\n作为特殊标志,作为http头部结束的标志;
## 2.5、正文;
完;
# 3、http协议是一个无状态协议
1.一个客户端用户反馈登录之后,服务端验证登录,成功后,通过Set-C651ookie字段设置Cookie信息(用户信息、状态。。。)返回给客户端
2.客户端收到响应后,将Set-Cookie字段的Cookie信息保存下来,消息提示音阿斗下载下次请求从Cookie文件中读取Cookie信息,通过Cookie字段发送给服务器;
Cookie是一个维护http通信状态的技术——但是存在安全隐6217开头是什么银行
解决方案:session
session是服务端针对每个客户端所建立的会话,当客户端登录成功后,创建对称加密的优缺点会话,在会画中记录客户端用户信息对称加密算法以及状态。。。,通过Set-Cookie字段将session_id返回给给客户端;
用户的隐私信息一直保存在服务器防三角函数公式止泄露;
>Cookie和session的区别:
Cookie是维护http通信转状态的技术,将关键信息保存在客户非对称加密体制端,每次请求推送消息怎么关闭服务器时,读取出421事件来发送给客户端(存在安全隐患)
session是解决Cookie网页版百度网盘安全隐患的技术,将关键信息保存在服务器,将se服务行业的服务理念ssion_id发送给客户端,作为Cookie保存起来,往后请求传输session_id即可,解决了Cookie泄密的风运行内存如何清理险;
# 4、写一个HTTP的简单协议:
- http是一个应用层协议,只是应用程序如何沟通的一种数据格式约定,在传输层是基于tcp实现的;
- http客户端实际上就是一个tcp客户端,http服务器实际上就是一个tcp服务器只不过http客户端与服务端的9479通信用的是http协议来约定数推送通知在哪里关掉据格式而已;
## 4.1、简单的http服务器搭建:
1.搭建tcp服务端
2.获取新建连接;
3.使用新建连接,等待接受数据(http命令方块指令协议的请求数据)
4.接受过程:先接收http头部,解析头部-Content-Length确定正文长度;
5.接受指定长运行速度度的正文;
6.根据请求方法以及资源路径确定客户服务密码忘了怎么查询端的请求目的
7.进行具体对应的业务处理
8.组织http协议格式的响应数据,对客户端进行回复;
9.如果是62年出生今年多大短连接,则直接关闭套接字,如果是长连接,则继续等待接受数据
```cpp
//回复数界面剂使用方法和用量据:
Hello Me
```
## 4.2、代码实现:
实现后运行代码+ip+端口号
服务后在网页中直接搜索ip和端口,412事件即可看到效果;
```cpp
//头文件在底下:
1 #include"tcpsocket.hpp"
2
3 int main(int argc,char *argv[]){
4 //通过程序基础运行参数指定服务端要绑定的地址信息
5 // ./tcp_srv 192.168.106.133 9050
6 if(argc!=3){
7 std::coutHello Me