Linux网络 - HTTP协议

文章目录

  • 前言
  • 一、HTTP协议
    • 1.url
      • url特殊字符
    • request
    • respond
  • 总结


前言

上一章内容我们讲了在应用层制定了我们自己自定义的协议、序列化和反序列化。
协议的制定相对来讲还是比较麻烦的,不过既然应用层的协议制定是必要的,那么肯定已经有许多计算机大佬们已经制定好了非常完善的协议了,我们今天就来学习我们日常生活经常会用到的HTTP协议。

需要用到的软件为 postman,fiddler。这些都是知名的抓包工具。

一、HTTP协议

在这里插入图片描述
现在我们使用浏览器一般都是使用http协议和https协议,在近些年,由于https更为安全可靠,许多浏览器都默认强制使用https协议进行访问,各大厂商也跟着一起改变。

Http在传输层也是采用的也是TCP协议。

所以,由于浏览器限制,这里我使用postman来进行http协议的访问。

1.url

之前我们学习udp和tcp协议我们知道,通过ip地址和端口号的方式就能访问到全网中的唯一主机所绑定端口号的服务器。

那么url是什么?

在这里插入图片描述

以上图为例,红色框圈起来的就叫做url(统一资源定位系统(uniform resource locator;URL)。

它的用途就是通过ip地址+端口号+文件路径的方式,来访问到全网中唯一主机中唯一资源。以?号结尾。

在这里插入图片描述
后面?的部分可以理解为参数,这是一种K/V式的参数,多个参数之间用&隔开。

url特殊字符

在这里插入图片描述
上图可以看出,这样的一串http地址,每个部分需要有不同的字符来隔开,例如/ : @ ? # 那么如果我们就是要在参数中加入这些字符,应该怎么办?
我们很容易就想到一种方式就是转码和解码。
在这里插入图片描述

request

在这里插入图片描述
我们这里向百度搜索helloworld,就是向百度的服务器发送了这样一个request请求报文。

这里我们没有发送正文。

respond

当我们向百度服务器发送上面这样的正文之后,百度的服务器也要给我们一个respond响应报文。
在这里插入图片描述

一般状态码200 为成功,404为未找到资源

需要注意的是,这里有个content-length,这个参数表示后面的正文字符长度,看过我的上个文章就知道,想要获取一个完整的报文,就需要向报头传长度进去。


总结

本章主要讲解了一下http协议中的url与请求报文和响应报文。
下一章我们来讲解如何自己实现一个httpserver。

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

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

相关文章

C++使用spdlog输出日志文件

参考博客: 日志记录库 spdlog 基础使用_spdlog 写日志-CSDN博客 GitHub - gabime/spdlog: Fast C logging library. 首先在github上下载spdlog源码,不想编译成库的话,可以直接使用源码,将include文件夹下的spdlog文件夹&#x…

网络:用2个IP地址描述一个连接

用2个IP地址描述一个连接。这是在阅读了《TCP/IP指南》后的感想,与工业标准不同,需注意区分。 如果一个IP地址有48位,则用96位描述一个连接 对于单播,是每个IP分别描述位置。位置包括:邮局编号主机编号,采用…

Qt 信号与槽机制概述

在 Qt 中,emit 是一个用于发射信号的关键字。它是 Qt 的信号与槽(Signals and Slots)机制的一部分,用于在某个条件满足时通知其他对象。发射信号是一种实现对象之间通信的方式,特别是在事件驱动编程模型中。 Qt 信号与…

示例:WPF中TreeView自定义TreeNode泛型绑定对象

一、目的&#xff1a;在开发中经常需要绑定TreeView&#xff0c;所以定义了一个泛型的TreeNode<T>用来方便绑定对象和复用 二、实现 public partial class TreeNodeBase<T> : SelectBindable<T>, ITreeNode{public TreeNodeBase(T t) : base(t){}private Obs…

MySQL常见的命令

MySQL常见的命令 查看数据库&#xff08;注意添加分号&#xff09; show databases;进入到某个库 use 库; 例如&#xff1a;进入test use test;显示表格 show tables;直接展示某个库里面的表 show tables from 库&#xff1b; 例如&#xff1a;展示mysql中的表格 show tabl…

前端三大件速成 05 javascript(2)字符串对象、数组对象、函数对象、BOM对象、DOM对象

文章目录 一、字符串对象1、创建字符串对象的两种方式2、字符串属性3、字符串的方法&#xff08;1&#xff09;编排方法&#xff08;2&#xff09;查询字符串索引&#xff08;3&#xff09;字符串切片&#xff08;4&#xff09;大小写转换&#xff08;5&#xff09;获取指定字符…

Python网络数据抓取(9):XPath

引言 XPath 是一种用于从 XML 文档中选取特定节点的查询语言。如果你对 XML 文档不太熟悉&#xff0c;XPath 可以帮你完成网页抓取的所有工作。 实战 XML&#xff0c;即扩展标记语言&#xff0c;它与 HTML&#xff0c;也就是我们熟知的超文本标记语言&#xff0c;有相似之处&am…

python脚本之解析命令参数

import requests import argparseprint(f"{__name__}:start")parser argparse.ArgumentParser(description使用方法) parser.add_argument(-p, --prefix, typestr, help域名) parser.add_argument(-t, --token, typestr, helptoken) parser.add_argument(-i, --queu…

pyqt 鼠绘椭圆 椭圆标注

目录 pyqt 椭圆标注 四个方向可以调整,调整时,另一端固定,只调整当前端,椭圆参数保存加载json pyqt 画椭圆中心点固定,调整是,两端一起调整。 pyqt 椭圆标注 四个方向可以调整,调整时,另一端固定,只调整当前端,椭圆参数保存加载json import sys import json from …

ClickHouse快速安装教程(MacOS)

文章目录 ClickHouse快速安装教程&#xff08;MacOS&#xff09;1.ClickHouse2.快速安装3.快速启动3.1.启动服务器3.2.启动客户端 4.使用案例1.配置文件2.启动CK服务3.创建数据库4.创建表5.插入数据6.查询数据 ClickHouse快速安装教程&#xff08;MacOS&#xff09; 1.ClickHo…

前端开发之HTTP协议

上一篇&#x1f449;: 前端开发之WebSocket通信 文章目录 1. HTTP 1.0 和 HTTP 1.1 之间有哪些区别1.连接方面&#xff1a;2.资源传输优化&#xff1a;3.缓存机制增强&#xff1a;4.主机头识别5.请求方法扩展 2.HTTP 1.1 和 HTTP 2.0 的区别1. 二进制分帧层&#xff1a;2.多路…

【UEditorPlus】后端配置项没有正常加载,上传插件不能正常使用

接上文【UEditorPlus】后端配置项没有正常加载&#xff0c;上传插件不能正常使用_ueditor ruoyi vue后端配置项没有正常加载,上传插件不能正常使用!-CSDN博客 成功解决图片、视频上传问题后&#xff0c;当服务部署在公网时&#xff0c;会存在大文件无法正常上传的问题。 出现…

makefile中连接使用-lssh2 连接命令提示找不到lssh2 解决

一&#xff1a; 第一种方式自己下载源码编译生成.so 库 安装libssh2之前需要先安装openssl&#xff0c;否则将导致libssh2无法安装 openssl 的下载地址: https://www.openssl.org/source/ libssh2下载地址&#xff1a; https://www.libssh2.org/download/ openssl 的下载…

C# range

基本概念索引范围前缀和后缀范围完整范围示例用法访问数组的子集使用范围进行迭代使用范围进行切片生成一个范围的整数序列步进范围使用范围表达式进行条件过滤 注意事项 在 C# 8.0 及以上版本中&#xff0c;引入了一种新的语法特性&#xff0c;称为“范围”&#xff08; ran…

电感的本质是什么

什么是电感&#xff1f; 电感器件一般是指螺线圈&#xff0c;由导线圈一圈靠一圈地绕在绝缘管上&#xff0c;绝缘管可以是空心的&#xff0c;也可以包含铁芯或磁粉芯。 为什么把’线’绕成’圈’就是电感&#xff1f; 电感的工作原理非常抽象&#xff0c;为了解释什么是电感…

Python写一个MES系统和ERP系统协同任务流程

在这个示例中&#xff0c;我将向您展示如何使用Python编写一个简单的MES&#xff08;制造执行系统&#xff09;和ERP&#xff08;企业资源规划系统&#xff09;协同任务流程。我们将通过一个简单的示例来展示这两个系统如何协同工作。 首先&#xff0c;我们需要了解MES和ERP系统…

游戏服务器要注意哪些安全事项?

网络安全对于游戏行业来说是至关重要的&#xff0c;当游戏行业受到恶意的攻击者进行网络攻击时&#xff0c;严重的会导致服务器崩溃&#xff0c;使业务无法正常进行工作运行&#xff0c;给企业造成巨大的经济损失&#xff0c;那么对于网络安全&#xff0c;游戏服务器需要注意哪…

04通讯录管理系统——退出功能实现

功能描述&#xff1a;退出通讯录 思路&#xff1a;根据用户不同的选项&#xff0c;进入不同的功能&#xff0c;可以选择switch分支结构&#xff0c;将整个架构进行搭建 当用户选择0时&#xff0c;执行退出&#xff0c;选择其他时先不做操作&#xff0c;也不退出程序 代码&am…

2024年6月10日~2024年6月16日周报

文章目录 一、前段时间工作二、完成情况2.1 可变形卷积的学习2.1.1 Introduction-介绍2.1.2 Related Work-相关工作2.1.3 Method-方法2.1.3.1 可变形卷积动态属性的重认识2.1.3.2 Speeding up DCN—加速DCN 2.2 部署可变形卷积 三、假期计划 一、前段时间工作 在之前一段时间主…

------构造类型数据—结构体---- + ----函数-----

构造类型数据——结构体 1&#xff09;结构体的基本概念 结构体&#xff08;struct&#xff09;是C语言&#xff08;以及其他一些编程语言&#xff09;中用于将不同类型的数据组合成一个单一类型的方式。这种数据类型允许你将多个变量&#xff08;可能是不同类型&#xff09;…