IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Http协议的基本解释 -> 正文阅读

[网络协议]Http协议的基本解释

🍓一,Http协议是什么

1,什么是Http协议

Http协议 是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP 协议和 TCP/IP 协议族内的其他众多的协议相同, 用于客户端和服务器之间的通信。请求访问文本或图像等资源的一端称为客户端, 而提供资源响应的一端称为服务器端

2,Http协议的特点

(1)客户/服务器模式:

  • http协议是应用层协议,是TCP/IP协议族内众多协议中的一员,是在TCP协议基础之上建立的TCP通信的两端,一端可视为客户机,另一端可以视为服务器
  • http发起请求时,通过底层TCP协议与服务器连接建立起通信通道,并进行相应服务

(2)简单快速:

  • 请求方式简单:客户端向服务器请求时,只需要指定请求方法和路径
  • 由于HTTP协议简单,因此HTTP服务器的程序规模小,通信速度很快

(3)灵活:

  • HTTP协议允许传输任意类型的数据,如json格式数据、表单数据、xml、文件流等等

(4)无连接:

  • 无连接是指一次请求一次连接,即每次连接只处理一次请求,服务器处理完客户的请求并收到客户的应答后,便断开连接,这样做主要是为了节省传输时间

(5)无状态:

  • http协议本身没有记忆功能,也就是说服务端不会保持你已经登录的状态,你本地客户端浏览器也不会保持你的用户名、密码,那么每一次访问需要权限的页面,都要附带上用户名、密码,也就要重新输入用户名、密码,服务器访问底层数据库来进行验证
  • Keep-Alive并不能解决这个问题,每一次请求的事务都是相互独立,随着交互场景的推进,每次请求需要传输的数据越来越大,会传输大量重复的内容信息,于是引出了Cookie(客户端缓存)、Session(服务端缓存)技术

3,Cookie和 Session的区别(面试常考)

Cookie(客户端缓存)最典型的应用是判定注册用户是否已经登录网站 ,Session(服务端缓存)它是通过服务器来保持状态的

cookie和session相同点:
cookie和session都是在服务器端生成的

cookie和session不同点:

  • ①规范不同:cookie是有HTTP规范约束的,cookie是HTTP头的一个字段,session是非标准概念,没有相应的规范约束
  • ②存储大小不同:单个cookie保存的数据不能超过4K,每个站点cookie个数有限制,session没有容量限制
  • ③保存位置不同:cookie保存在客户端的内存或文件,session保存在服务器中,可以是文件,数据库,内存等
  • ④具体业务不同:cookie用于认识用户行为,只能通过Http头设置传输,session用于识别用户本身。比如这个用户是不是已经登录了相应的服务、用户的这个行为应该拒绝还是执行,可以通过URL、Cookie、HTTP POST DATA等各种机制来实现
  • ⑤传输量不同:cookie传输所有的cookie,而session只传输session ID就可以
  • ⑥安全性不同:cookie存放在用户本地,可以被修改访问,安全性不高,而session存放在服务器,比较安全

🍌二,Http协议的基本格式

1,Http请求- Request

请求方法有多种,这里是Get请求例子:

GET /books/?sex=man&name=Professional HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive
  • 首行:方法+url+版本,用来说明请求类型,要访问的资源以及所使用的HTTP版本,其中请求类型为GET 方法,/books/?sex=man&name=Professional为请求资源,使用HTTP1.1版本
  • 请求头部:从第二行开始,HOST将指出请求的目的地,User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础,该信息由你的浏览器来定义,并且在每个请求中自动发送等等
  • 空行:请求头部后面的空行是必须的,请求正文是空也有空行
  • 请求正文:空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有?个Content-Length属性来标识Body的长度

2,Http响应-Response

HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8

<html>
      <head></head>
      <body>
            <!--body goes here-->
      </body>
</html>
  • 首行:版本号+状态码+状态码解释,HTTP/1.1表明HTTP版本为1.1版本,状态码为200,状态消息为ok
  • 请求头部:请求的属性,消息报头,用来说明客户端要使用的一些附加信息
  • 空行:请求头部后面的空行是必须的,请求正文是空也有空行
  • 响应正文:服务器返回给客户端的文本信息,空行后面的html部分为响应正文

3,协议格式总结

?为什么Http报文会有空行?
因为 HTTP 协议并没有规定报头部分的键值对有多少个. 空行就相当于是 “报头的结束标记”, 或者是"报头和正文之间的分隔符".
HTTP 在传输层依赖 TCP 协议, TCP 是面向字节流的. 如果没有这个空行, 就会出现 “粘包问题”

在这里插入图片描述

🍉三,get和post的区别(面试常考)

1,get请求和post请求

GET: 用于请求访问已经被URL(统一资源标识符)识别的资源,可以通过URL传参给服务器
POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式

(1)get请求

GET /books/?sex=man&name=Professional HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive

(2)post请求

POST / HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive

name=Professional%20Ajax&publisher=Wiley

2,get和post的区别

①语义不同,get是查询,post是提交
②body非空不同,get一般为空,post不为空
③幂等不同,get是幂等,post不幂等
④缓存不同,get可缓存,post不缓存
⑤最大值限制不同,get有最大长度限制,post没有最大长度限制
⑥安全性不同,get是把参数直接显示在url,所以不安全,post放在body里更安全点

🍇 四,http协议的状态码

WEB服务器处理客户请求,并向客户机发送应答报文,HTTP协议的应答报文格式为:

  • 应答报文 = 状态行(实体头信息)CRLF [实体内容]
  • 状态行 = HTTP版本号 状态码 原因叙述
  • 状态码描述了WEB服务器执行客户机请求的状态信息
    一般的状态码

1xx 通知消息:请求已经发送,需要处理
2xx 成功接受
3xx 重定向:完成请求还需要进一步行动
4xx 客户的差错:请求有错误语法
5xx 服务器差错:服务器无法完成请求

常见的状态码:

200:表示成功
301:永久重定向
302:临时重定向
303:临时重定向,必须使用get方法
401:协议格式出错
403:无法访问权限
404:找不到系统资源
500:服务器程序错误
503:服务器繁忙

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-16 11:29:04  更:2022-05-16 11:29:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 6:40:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码