计算机网络自顶向下(4)---应用层HTTP协议

目录

1.HTTP协议

1.URL

2.urlencode和urldecode

3.HTTP协议请求

4.HTTP响应格式

5.请求方法

6.状态码

7.Header


1.HTTP协议

        HTTP是超文本传输协议(Hypertext Transfer Protocol)的缩写。它是一种用于传输超媒体文档(如HTML)的应用层协议。HTTP是Web通信的基础,用于浏览器和服务器之间的数据传输,使用户能够获取和发送网页、图片、音频、视频等资源。

        HTTP协议是一种无状态的协议,即每个请求都是独立的,服务器不会保存之前的任何状态信息。客户端向服务器发送一条请求,服务器接收请求后处理并返回响应,然后关闭连接,完成一次HTTP事务。

        HTTP通常使用TCP协议作为传输层协议,通过连接到服务器的端口(默认为80端口)来实现数据的传输。HTTP协议规定了请求方法(GET、POST、PUT、DELETE等)、请求头部、请求体、响应状态码、响应头部等一系列规范,使得客户端和服务器能够进行有效的通信。

1.URL

        URL是统一资源定位符(Uniform Resource Locator)的缩写。它是用于标识和定位互联网上资源的地址。

        URL由多个部分组成,包括协议(例如HTTP、HTTPS、FTP等)、主机名(或IP地址)、端口号、路径、查询参数和片段标识符等。它的格式通常为:

protocol://hostname:port/path?query#fragment
  • 协议:表示数据传输使用的协议,如HTTP、HTTPS、FTP等。
  • 主机名:表示资源所在的服务器的域名或IP地址。
  • 端口号:表示服务器监听的端口,默认的HTTP端口是80,HTTPS端口是443。
  • 路径:表示资源在服务器上的路径,用于标识资源的位置。
  • 查询参数:表示对资源的额外参数,多个参数之间使用"&"连接。
  • 片段标识符:表示对资源的具体部分进行定位,通常在网页中使用锚点链接时会用到。

        通过URL,用户可以访问和定位互联网上的网页、图片、视频、文件等各种资源。浏览器会根据URL来发起请求并获取相应的资源,从而实现网页的加载和显示。

2.urlencode和urldecode

  urlencode和urldecode是用于对URL中的特殊字符进行编码和解码的函数。

  • urlencode函数将URL中的非字母数字字符转换为特殊字符编码,以便在URL中进行传输。编码后的字符由一个百分号%和两位十六进制数表示。例如,空格被编码为%20,问号被编码为%3F

3.HTTP协议请求

        HTTP协议请求是客户端向服务器发送的数据包,用于请求特定资源或执行特定操作。HTTP请求由请求行、请求头、空行和请求体组成。

        请求行:包含请求方法、请求的URL和HTTP协议的版本。常见的请求方法有GET、POST、PUT、DELETE等。

GET /example.html HTTP/1.1

        请求头:包含关于客户端和请求的附加信息,如User-Agent(客户端类型)、Host(请求的主机名)、Content-Type(请求体的类型)等。

Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36

        空行:用于分隔请求头和请求体的空行。

        请求体:可选的,包含客户端向服务器发送的数据,例如在POST请求中的表单数据或JSON数据。

key1=value1&key2=value2

        通过发送HTTP请求,客户端可以向服务器请求特定的资源,如HTML页面、图片、视频等,或者执行特定的操作,如提交表单数据、更新服务器上的数据等。服务器收到请求后会根据请求的方法和URL来处理请求,并返回相应的响应给客户端。

4.HTTP响应格式

        HTTP协议响应是服务器向客户端发送的数据包,用于返回请求的结果或错误信息。HTTP响应由状态行、响应头、空行和响应体组成。

        状态行:包含HTTP协议的版本、状态码和状态描述。状态码表示服务器对请求的处理结果,常见的状态码有200(OK)、404(Not Found)、500(Internal Server Error)等。

HTTP/1.1 200 OK

        响应头:包含关于响应的附加信息,如服务器类型、内容类型、内容长度等。

Content-Type: text/html
Content-Length: 1024

        空行:用于分隔响应头和响应体的空行。

        响应体:包含服务器返回给客户端的实际数据,如HTML文档、图片、JSON数据等。

        通过HTTP响应,服务器将请求的结果返回给客户端。客户端根据响应的状态码来判断请求是否成功,并解析响应头和响应体来获取实际的数据。

5.请求方法

        HTTP定义了多种请求方法(也称为HTTP动词或HTTP谓词),用于指定对资源的不同操作。以下是常见的HTTP请求方法:

  1. GET:从服务器获取资源。GET请求只请求获取资源,不对服务器数据产生任何影响。它通常用于获取HTML页面、图片、视频等静态资源。

  2. POST:向服务器提交数据并处理请求。POST请求用于向服务器提交数据,通常用于提交表单数据、文件上传等操作。POST请求会对服务器数据产生影响。

  3. PUT:向服务器传送数据,更新资源。PUT请求用于向服务器传递数据,并将其存储在指定的URL位置。如果URL已存在,则将其替换为请求中的数据。

  4. DELETE:删除服务器上的资源。DELETE请求用于删除服务器上的指定资源。

  5. HEAD:类似于GET请求,但只获取报头信息而不获取实体主体。HEAD方法会返回与GET方法相同的报头信息,但没有实际的响应主体。

  6. OPTIONS:获取服务器支持的请求方法列表。OPTIONS请求用于获取服务器支持的请求方法列表,并在响应中返回允许的方法。

  7. PATCH:对资源进行部分修改。PATCH请求用于对资源进行局部更新,只更新请求中指定的部分数据。

  8. TRACE:追踪请求-响应的传输路径。TRACE请求用于测试和诊断,它会在服务器按原样返回请求,以便客户端查看传输路径。

  9. CONNECT:用于代理服务器。CONNECT请求用于与代理服务器建立隧道连接,用于加密和保护隧道中传输的数据。

6.状态码

        HTTP状态码是服务器在响应请求时返回的三位数字代码,用于表示请求的处理结果。以下是常见的HTTP状态码:

1xx(信息性状态码):表示请求已接收,正在处理。

  • 100 Continue:服务器已收到初始部分请求,并要求客户端继续发送剩余部分。

  • 101 Switching Protocols:服务器已理解并接受客户端的请求,将切换到不同的协议。

2xx(成功状态码):表示请求已成功被服务器接收、理解和处理。

  • 200 OK:请求成功,返回请求的信息。

  • 201 Created:请求已成功,并在服务器上创建了新的资源。

  • 204 No Content:服务器成功处理请求,但没有返回任何内容。

3xx(重定向状态码):表示需要进一步操作以完成请求。

  • 301 Moved Permanently:请求的资源已永久移动到新位置。

  • 302 Found:请求的资源临时被移动到新位置。

  • 304 Not Modified:资源未被修改,可以使用缓存的版本。

4xx(客户端错误状态码):表示客户端发起的请求有错误。

  • 400 Bad Request:请求无效,服务器无法理解。

  • 401 Unauthorized:请求未经授权,需要进行身份验证。

  • 404 Not Found:请求的资源不存在。

5xx(服务器错误状态码):表示服务器在处理请求时发生错误。

  • 500 Internal Server Error:服务器遇到了不可预测的错误。

  • 502 Bad Gateway:服务器作为网关或代理,从上游服务器收到无效的响应。

  • 503 Service Unavailable:服务器暂时无法处理请求,通常由于过载或维护。

7.Header

        以下是常见的HTTP头字段(Header)的一些介绍:

  1. Content-Type:指定请求或响应中的媒体类型。常见的值有 text/plain、text/html、application/json 等。

  2. Content-Length:指定请求或响应中的实体主体的长度,用字节表示。

  3. Accept:指定客户端能够接受的媒体类型。

  4. User-Agent:包含了发送请求的用户代理应用程序的相关信息,例如浏览器类型和版本。

  5. Authorization:用于请求身份验证信息,通常与需要进行身份验证的请求一起发送。

  6. Cookie:包含了之前服务器通过 Set-Cookie 头字段设置的一个或多个 HTTP Cookie。

  7. Host:指定请求的目标服务器的主机名和端口号。

  8. Referer:包含了当前请求页面的来源页面的 URL。

  9. If-None-Match:在条件 GET 请求中,用于判断客户端拥有的资源与服务器上的资源是否一致。

  10. Cache-Control:用于控制缓存的行为,例如指定是否缓存、缓存的有效期等。

  11. Content-Disposition:通常用于指示浏览器如何处理由服务器发送的附件。

  12. Accept-Language:指定客户端能够接受的自然语言。

  13. Location:用于重定向响应中,指定新的请求目标 URL。

  14. Date:指定生成响应的日期和时间。

  15. Connection:指定是否需要持久连接。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C#】使用Visual Studio创建Windows Forms应用程序计算对角线之和

文章目录 使用Visual Studio创建Windows Forms应用程序计算对角线之和步骤 1: 创建新的Windows Forms应用程序项目步骤 2: 设计窗体步骤 3: 编写代码步骤 4: 运行程序步骤 5: 运行结果 使用Visual Studio创建Windows Forms应用程序计算对角线之和 大家好!今天&…

Go 设置并发控制数量 【go并发模型】

背景:go的并发控制也是老生常谈,在公司业务中也是经常出现 谈谈我们这次并发模型的适用场景:要处理的任务很多比如有10000个,没开并发的时候我们要一个一个进行执行这个时候其实无论是cpu压力还是数据库和redis压力都比较小也就是…

uiautomatorviewer安卓9以上正常使用及问题处理

一、安卓9以上使用uiautomatorviewer问题现象 打开Unexpected error while obtaining UI hierarchy 问题详情 Unexpected error while obtaining UI hierarchy java.lang.reflect.InvocationTargetException 二、问题处理 需要的是替换对应D:\software\android-sdk-windows…

stable diffusion 大模型及lora等下载安装使用教程及项目目录说明

首先说明,stable diffusion大模型并非controlNet中使用的模型,这两者有根本的区别,请仔细区分。 国内可下载模型的站点: 哩布哩布 https://liblib.ai 模型分为几类,下载的时候看清楚类型,都会标记在模型…

Tomcat日志文件详解及catalina.out日志清理方法

目录 前言1. Tomcat日志文件详解1.1 catalina.out1.2 localhost_access_log1.3 catalina.<date>.log1.4 host-manager.<date>.log 和 manager.<date>.log1.5 localhost.<date>.log 2. catalina.out文件管理与清理方法2.1 为什么不能直接删除catalina.o…

借老系统重构我给jpa写了个mybatis风格的查询模块

因为公司老系统是用hibernate3开发的&#xff0c;重构自然过渡到使用Spring Data JPA。由于系统中对sql的使用方式还是手动为主&#xff0c;这就造成在service层存在大量的sql拼接方式&#xff0c;后续维护比较困难。 因为怀念以往项目对sql驱动的持久层开发用的mybatis的时光&…

docker数据管理和网络通信+docker实例+dockerfile镜像实战

一、Docker 的数据管理 管理 Docker 容器中数据主要有两种方式&#xff1a;数据卷&#xff08;Data Volumes&#xff09;和数据卷容器&#xff08;DataVolumes Containers&#xff09;。 1&#xff0e;数据卷&#xff08;主机和容器间的挂载&#xff09; 数据卷是一个供容器…

【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练

一、介绍 玉米病害识别系统&#xff0c;本系统使用Python作为主要开发语言&#xff0c;通过收集了8种常见的玉米叶部病害图片数据集&#xff08;‘矮花叶病’, ‘健康’, ‘灰斑病一般’, ‘灰斑病严重’, ‘锈病一般’, ‘锈病严重’, ‘叶斑病一般’, ‘叶斑病严重’&#x…

C++之“构造函数”

文章目录 类的默认成员函数构造函数 类的默认成员函数 默认成员函数就是我们没有在main函数里调用&#xff0c;但是编译器会自动生成的成员函数称为默认成员函数。 C由8个默认成员函数&#xff0c;我们暂时了解6个。 默认成员函数&#xff1a;构造函数&#xff0c;析构函数&a…

Vue3:同一项目同一浏览器只允许打开一个标签页

说明&#xff1a; 阻止同一浏览器打开多个项目标签页&#xff0c;防止多标签页重复时间统计累加&#xff0c;适用于基于微信公众号页面或指定浏览器的计时统计等项目活动&#xff0c;计时在线学习时间统计等。 效果&#xff1a; main.js import {createApp} from vue import…

Cloudlog delete_oqrs_line 未授权SQL注入漏洞复现

0x01 产品简介 Cloudlog 是一个自托管的 PHP 应用程序,可让您在任何地方记录您的业余无线电联系人。使用PHP和MySQL构建的基于Web的业余无线电记录应用程序支持从HF到微波的一般站记录任务 0x02 漏洞概述 Cloudlog delete_oqrs_line 接口存在未授权SQL注入漏洞,未经身份验…

【Python技术】利用akshare定时获取股票实时价,低于5日线钉钉通知报警

今天看了下大盘&#xff0c;临时有个想法&#xff0c;我想知道某个股票回踩5日线的价格&#xff0c;如果实时价格低于5日线通过钉钉报警通知我。 说干就干&#xff0c;临时撸了下简单的代码&#xff0c;仅做演示。 1、计算5日线思路 很多券商软件的MA5价格是近5个交易日收盘…

【Hive】6-Hive函数、运算符使用

Hive函数、运算符使用 Hive内置运算符 概述 整体上&#xff0c;Hive支持的运算符可以分为三大类&#xff1a;关系运算、算术运算、逻辑运算。 官方参考文档&#xff1a;https://cwiki.apache.org/confluence/display/Hive/LanguageManualUDF 也可以使用下述方式查看运算符的…

vue使用jquery的ajax,页面跳转

一、引入jquery依赖 打开终端更新npm npm install -g npm 更新完后引入输入npm install jquery 加载完后 在最外层的package.json文件中加入以下代码 配置好后导入jquery 设置变量用于接收服务器传输的数据 定义ajax申请数据 服务器的Controller层传输数据 &#xff08;…

【Java 并发编程】单例模式

前言 单例模式是一种十分常用但却相对而言比较简单的单例模式。虽然它简单但是包含了关于线程安全、内存模型、类加载机制等一些比较核心的知识点。本章会介绍单例模式的设计思想&#xff0c;会去讲解了几种常见的单例实现方式&#xff0c;如饿汉式、懒汉式、双重检锁、静态内部…

【大模型】AI视频课程制作工具开发

1. 需求信息 1.1 需求背景 讲师们在制作视频的过程中&#xff0c;发现录制课程比较麻烦&#xff0c;要保证环境安静&#xff0c;保证录制过程不出错&#xff0c;很容易反复重复录制&#xff0c;为了解决重复录制的工作量&#xff0c;想通过 ai 课程制作工具&#xff0c;来解决…

数据轻松上云——Mbox边缘计算网关

随着工业4.0时代的到来&#xff0c;工厂数字化转型已成为提升生产效率、优化资源配置、增强企业竞争力的关键。我们凭借其先进的边缘计算网关与云平台技术&#xff0c;为工厂提供了高效、稳定的数据采集与上云解决方案。本文将为您介绍Mbox边缘计算网关如何配合明达云平台&…

【CS常见问题】你用的是VS2019,最高支持.NET5.0,但是项目将.NET6.0设为目标无法运行,怎么办?

.NET版本问题 报错示例报错分析最简单的方法步骤 报错示例 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 NETSDK1045 当前 .NET SDK 不支持将 .NET 6.0 设置为目标。请将 .NET 5.0 或更低版本设置为目标&#xff0c;或使用支持 .NET 6.0 的 .NET SDK 版本。 ABFview C:\x…

◇【论文_20150225】 DQN_2015(nature) 〔Google DeepMind〕

整理代码 1&#xff1a;DQN CartPole_v1.ipynb https://www.nature.com/articles/nature14236 Human-level control through deep reinforcement learning 文章目录 摘要主体&#xff1a;要做什么 如何做的 要点keypoints实验 与 评估2 个指标和 各游戏的最好方法比较t-S…

【Linux网络编程】Socket编程--UDP(第一弹):实现客户端和服务器互相发送消息

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…