全网最详细的HTTP协议学习笔记

news2024/10/6 8:30:35

目录

一、HTTP简介

相关词语

HTTP请求过程

二、HTTP详解  

1.在TCP/IP协议中的位置

2.Request(请求消息)

3.Response(响应消息)

4.HTTP状态码

5.HTTP请求方法

6.其他

三、练习自测  

四、总结

五、重点:配套学习资料和视频教学


一、HTTP简介

  • 全称:HyperText Transfer Protocol,中文:超文本传输协议

  • HTTP是客户端浏览器或其他程序与万维网服务器之间的应用层通信协议

  • HTTP是一个基于TCP/IP通信协议来传递数据

总结:HTTP是计算机之间的一个基于请求与响应模式,无状态的应用层协议(标准)

相关词语

  • RFC:reqeust for comments 征求修正意见书

万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作发布了一系列的RFC,RFC1945定义了HTTP/1.0版本。其中最著名的就是RFC2616版本HTTP 1.1版本(2014更新废弃),2015年发布了RFC7540,即HTTP/2 。

  • URL:uniform resource location 统一资源定位符

  • URI:uniform resource identifier 统一资源标识符

URL与URI区别

URL也是一种URI

URI是一种抽象的资源标识,可以是绝对的,也可以是相对的

URL是一种URI,它指明了定位的信息,必须是绝对的

HTTP请求过程

  • 1)客户端连接到Web服务器

浏览器与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。

  • 2)发送HTTP请求

通过TCP套接字,客户端向Web服务器发送一个文本的请求报文。一个请求由请求行、请求头部、空行和请求数据4部分组成。

  • 3)服务器接受请求并返回HTTP响应

Web服务器解析请求,定位请求资源,服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

  • 4)释放连接TCP连接

Web服务器主动关闭TCP套接字,释放TCP连接;客户端被动关闭TCP套接字,释放TCP连接。

  • 5)客户端浏览器解析HTML内容

客户端浏览器先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

二、HTTP详解  

1.在TCP/IP协议中的位置

 

总结:TCP/IP协议总共有四层,HTTP与HTTPS是均在应用层,HTTP的默认端口为80,HTTPS的默认为443。

2.Request(请求消息)

客户端发送一个HTTP请求到服务器,请求消息包括以下内容:

请求行(request line)、请求头(header)、空行请求数据四个部分组成

【举个栗子】

  • Get 请求 
GET /img/bd_logo1.png HTTP/1.1

Host: www.baidu.com

Connection: keep-alive

Accept: text/html,application/xml;q=0.9,image/webp,*/*;q=0.8

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 BIDUBrowser/8.4 Safari/537.36

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.8

  • 第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本。此处用的GET方法,请求[/img/bd_logo1.png]资源,版本HTTP1.1

  • 第二部分:请求头,请求行之后的部分,用来说明服务器要使用的附加信息。

  • 第三部分:空行,请求头后面必须是空行,即使第四部分无数据。

  • 第四部分:请求数据可以添加任意的其他数据,此例请求数据为空。

  • POST请求
POST / HTTP/1.1

Host: www.baidu.com

Connection: keep-alive

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 BIDUBrowser/8.4 Safari/537.36

Content-Length:10

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.8



res=awbrag

温馨提示:分析同上GET方法

3.Response(响应消息)

服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。响应消息也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

【举个栗子】

HTTP/1.1 200 OK

Date: Wed, 22 Feb 2017 17:12:59 GMT

Content-Type: text/html; charset=UTF-8

Last-Modified: Wed, 03 Sep 2014 10:00:27 GMT


<html>

      <head></head>

      <body>

            <!--body goes here-->

      </body>

</html>

  • 第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息三部分组成。此例(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)

  • 第二部分:消息报头,用来知会客户端要使用的一些附加信息。Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8

  • 第三部分:空行,消息报头后面的空行是必须的

  • 第四部分:响应消息正文,服务器返回给客户端的信息内容。空行之后的html部分为响应正文。

4.HTTP状态码

Response返回状态行中状态码,不同状态码代表不同含义,直接反映请求的情况。HTTP Status Code由三位数字(十进制)组成,第一个数字定义了响应的类别,共分五种。

五种类别

分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误

常见状态码

状态码英文名称中文描述
200OK请求成功。一般用于GET与POST请求
301Moved Permanently永久重定向。
302Found临时重定向。有网址劫持风险,不建议使用。
304Not Modified未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源.
400Bad Request客户端请求的语法错误,服务器无法理解
401Unauthorized请求要求用户的身份认证
403Forbidden服务器理解请求客户端的请求,但是拒绝执行此请求
404Not Found服务器无法根据客户端的请求找到资源(网页)。
500Internal Server Error服务器内部错误,无法完成请求
503Service Unavailable由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

5.HTTP请求方法

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

6.其他

GET和POST请求的区别

1.定义不同:get重点在从服务器上获取资源,post重点在向服务器发送数据;

2.提交方式不同:get传输数据是通过URL请求,这个过程用户是可见的。而POST请求会把请求的数据放置在请求实体中。因此,GET请求的数据会暴露在地址栏中。

2.传输数据的大小不同:HTTP规范中均没有限制。Get传输的数据量小,是因为受URL长度限制,但效率较高;Post可以传输大量数据,所以上传文件时只能用Post方式。

3.安全性不同:get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等,post相对get安全性较高。

4.字符集支持不同:get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。post支持标准字符集,可以正确传递中文字符。

 三、练习自测  

1.说出最少4种常用的HTTP方法?

2.GET方法与POST方法的区别?

3.简述HTTP请求报文与响应报文格式?

4.说出以下常见的HTTP相应状态码含义:

200,301,302,400,403,404,500,503

5.HTTP的缺点与HTTPS?

1、2、3、4答案省略...

5.答:

a、通信使用明文不加密,内容可能被窃听

b、不验证通信方身份,可能遭到伪装

c、无法验证报文完整性,可能被篡改

四、总结

感谢每一个认真阅读我文章的人!!!

如果下面这些资料用得到的话可以直接拿走:

1、自学开发或者测试必备的完整项目源码与环境

2、测试工作中所有模板(测试计划、测试用例、测试报告等)

3、软件测试经典面试题

4、Python/Java自动化测试实战.pdf

5、Jmeter/postman接口测试全套视频获取

6、Python学习路线图

                     

 

五、重点:配套学习资料和视频教学

那么在这里我也精心准备了上述大纲的详细资料包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。如下,需要的点击下方名片加入群聊免费领取。群里还有大佬帮忙解答问题。

            

       

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/81503.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计大学生兼职管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

[附源码]Python计算机毕业设计宠物短期寄养平台Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

R语言无监督学习:PCA主成分分析可视化

总览 在监督学习中&#xff0c;我们通常可以访问n个 观测值的p个 特征 集 &#xff0c;并 在相同观测值上测得的 Y。 无监督学习是一组没有相关的变量 Y的方法。在这里&#xff0c;我们重点介绍两种技术… 主成分分析&#xff1a;用于数据可视化或在其他监督学习方法之…

面试官:你说说Springboot的启动过程吧(5.4万字分析启动过程)

文章目录前言一、Springboot是什么二、启动流程2.1 构建Spring Boot项目2.2 启动的日志2.3 启动流程分析说明2.3.1 第一部分&#xff1a;SpringApplication的构造函数A、webApplicationType&#xff08;web应用类型&#xff09;B、引导注册初始化器C、设置初始化器D、设置监听器…

[附源码]Python计算机毕业设计大学生二手物品交易网站Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

锁存器和触发器

大多数数字系统中,除了需要具有逻辑运算和算术运算功能的组合逻辑电路外,还需要具有存储功能的电路。组合电路与存储电路结合构成时序逻辑电路,简称时序电路。 本文将讨论实现存储功能的两种逻辑单元电路∶锁存器和触发器,着重讨论其工作原理与电路结构,以及所实现的不同逻…

手写js——继承

原型链继承 所谓 函数 也就是 函数 Father其本身&#xff0c;也叫作构造函数 &#xff0c;当一个函数被创建的同时&#xff0c;也会为其创建一个 prototype 属性&#xff0c;而这个属性&#xff0c;就是用来指向 函数原型&#xff0c;的我们可以把 prototype 理解为 Father的一…

用 Numba 加速 Python 代码,变得像 C++ 一样快

1. 介绍 Numba 是 python 的即时&#xff08;Just-in-time&#xff09;编译器&#xff0c;即当你调用 python 函数时&#xff0c;你的全部或部分代码就会被转换为“即时”执行的机器码&#xff0c;它将以你的本地机器码速度运行&#xff01;它由 Anaconda 公司赞助&#xff0c…

SpringMVC初配置解析?

在springMVC-servlet中 在web.xml中 SpringMVC常用注解 Controller 负责注册一个bean 到spring 上下文中 RequestMapping 注解为控制器指定可以处理哪些 URL 请求 RequestBody 该注解用于读取Request请求的body部分数据&#xff0c;使用系统默认配置的HttpMessageConverter进行…

CentOS7安装Cockpit网页版图像化服务管理工具

不经意间看到CentOS8说是默认集成了Cockpit——网页版图像化服务管理工具&#xff0c;出于为了更好的管理自己的服务器&#xff0c;于是参考一些资料在自己的服务器CentOS7上也安装了一个。 一、Cockpit是什么 github 地址&#xff1a; https://github.com/cockpit-project/c…

[附源码]Python计算机毕业设计大数据与智能工程系教师档案管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

基于node.js+vue的社区团购网站 毕业设计

在当今社会的高速发展过程中&#xff0c;产生的劳动力越来越大&#xff0c;提高人们的生活水平和质量&#xff0c;尤其计算机科技的进步&#xff0c;数据和信息以人兴化为本的目的&#xff0c;给人们提供优质的服务&#xff0c;其中网上购买团购商品尤其突出&#xff0c;使我们…

移植知识点整理(续,后期持续添加)

一&#xff1a; uboot源码移植准备工作 1.在家目录下创建一个<demo>文件夹 2.将en.SOURCES-stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17_tar_v3.1.0.xz文件夹拷贝到demo目录下 3.对en.SOURCES-stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17_tar_v3.1.0.xz进行解压…

RK3568平台开发系列讲解(安卓适配篇)获取 root 权限

🚀返回专栏总目录 文章目录 一、关闭 selinux二、注释用户组权限检测三、su 文件默认授予 root 权限沉淀、分享、成长,让自己和他人都能有所收获!😄 📢此部分可以参考瑞芯微官方文档,在源码“Android11/rk_android11.0_sdk/RKDocs/android/patches/root”目录下。 一…

太全了!学Java项目,这就够了

你是否为不知道怎么入手去看一个开源项目&#xff1f; 你是否想看别人的项目学习笔记&#xff1f; 你是否想跟着别人的项目搭建过程一步一步跟着做项目&#xff1f; 今天给大家介绍一个网站&#xff0c;为了让更多Java的开发者能更容易找到值得学习的开源项目&#xff0c;我…

微服务框架 SpringCloud微服务架构 微服务保护 32 隔离和降级 32.4 熔断降级

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 微服务保护 文章目录微服务框架微服务保护32 隔离和降级32.4 熔断降级32.4.1 熔断降级32 隔离和降级 32.4 熔断降级 32.4.1 熔断降级 熔断…

[附源码]Python计算机毕业设计宠物交易网站Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

springcloud03:Eureka和Ribbon

Eureka和RibbonEureka介绍三大角色Eureka详解Eureka注册中心创建(springcloud-eureka模块)服务注册-信息配置-自我保护机制(服务提供模块)CAP原则Ribbon&#xff1a;负载均衡及Ribbon服务消费方(客户端)集成RibbonEureka介绍 三大角色 Eureka Serrver:提供服务的注册与发现。z…

day18【代码随想录】用栈实现队列、用队列实现栈、有效的括号

文章目录前言一、用栈实现队列&#xff08;力扣232&#xff09;二、用队列实现栈&#xff08;力扣225&#xff09;三、有效的括号&#xff08;力扣20&#xff09;前言 用栈实现队列 用队列实现栈 有效的括号 一、用栈实现队列&#xff08;力扣232&#xff09; 请你仅使用两个…

SpringBoot2基础入门

SpringBoot2基础入门学习要求环境要求学习资料01、Spring与SpringBoot1、Spring能做什么1.1、Spring的能力1.2、Spring的生态1.3、Spring5重大升级1.3.1、响应式编程1.3.2、内部源码设计2、为什么用SpringBoot2.1、SpringBoot优点2.2、SpringBoot缺点3、时代背景3.1、微服务3.2…