Linux -- 初识HTTP协议

news2025/1/18 18:09:59

目录

什么是HTTP协议

什么是 URL ?

理解 URL 

初识HTTP 请求与响应格式

代码验证

gitee

HTTP.hpp

结果


什么是HTTP协议

HTTP(HyperText Transfer Protocol,超文本传输协议)主要用于客户端(通常是浏览器)与服务器之间信息的交换。

它定义了客户端(如浏览器) 与服务器之间如何通信, 以交换或传输超文本(如 HTML 文档)。HTTP 协议是客户端与服务器之间通信的基础。 客户端通过 HTTP 协议向服务器发送请求, 服务器收到请求后处理并返回响应

HTTP 协议是一个无连接、 无状态的协议:

  • 无连接每次请求都需要建立新的连接;
  • 无状态:服务器不会保存客户端的状态信息,服务器不会保留之前请求的状态

什么是 URL ?

URL(Uniform Resource Locator,统一资源定位器)是互联网上标准的资源地址。它用于指定网络上的信息位置以及访问这些信息的方法。简单来说,URL 就是我们平时说的网址

一个URL通常由以下几个部分组成:

https://mail.google.com:443/mail/u/0/?tab=wm#inbox
  • https 是协议
  • mail 是子域名。
  • google.com 是主域名。
  • :443 是端口号,这里使用的是HTTPS的默认端口,所以通常是省略的
  • /mail/u/0/ 是带层次的文件路径
  • ?tab=wm 是查询字符串。
  • #inbox 是片段标识符。

理解 URL 

网络通信,本质上是两个进程之间的通信,在 HTTP 协议中,客户端通过 HTTP 协议向服务器发送请求, 可以看作客户端在向服务器请求某种资源,这种资源可以是图片、文字、音视频,在客户端向服务器发出请求之前,这些资源已经存储在服务器了,在 Linux 下一切皆文件,这些资源本质上也是文件,服务器需要找到文件,并把对应的资源发给客户端

那么服务器如何找到对应的文件呢?只要是文件,就会自己的文件路径,只要有了文件路径,就可以找到文件。此外,我们需要注意到,可能会有很多台服务器在向客户端提供服务,所以除了知道文件路径外,还需要知道服务器的 IP + 端口号,才可以确定文件所在的服务器。综上,IP + 端口号 + 文件路径 就可以确定互联网中唯一的文件(资源)了

URL 中的端口号通常是可选的,并且在某些情况下会被省略。具体来说:

默认端口:对于一些熟知的服务,如 HTTP 和 HTTPS,存在默认的端口号。当使用这些默认端口时,端口号可以从URL中省略

  • HTTP 的默认端口是 80
  • HTTPS 的默认端口是 443

因此,如果访问的是一个通过 HTTP 运行在 80 端口上的网站或通过 HTTPS 运行在 443 端口上的安全网站,你不需要在 URL 中明确指定端口号。

初识HTTP 请求与响应格式

HTTP REQUEST:

HTTP RESPONSE:

代码验证

gitee

http · zihuixie/Linux_Learning - 码云 - 开源中国icon-default.png?t=O83Ahttps://gitee.com/zihuixie/linux_-learning/tree/master/http

HTTP.hpp

#pragma once

#include<iostream>
#include<string>
#include<vector>

class HTTPServer
{
public:
    HTTPServer()
    {

    }
    ~HTTPServer()
    {

    }

    std::string HandlerHttpRequest(std::string req)
    {
        std::cout<<"----------------------------------------------"<<std::endl;
        std::cout<<req;

        std::string reponse="HTTP/1.0 200 OK\r\n";
        reponse+="\r\n";
        reponse+="<html><body><h1>hello world<h1><body><html>";

        return reponse;
    }
private:

};

结果

页面访问成功:

 收到报文:

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

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

相关文章

重返未来1999梁月养成攻略 雷电云手机速刷养成材料

在重返未来1999这款游戏中&#xff0c;1月16日上新的版本中新春限定角色【梁月】已经火热上线&#xff0c;今天就给大家一些养成攻略。 1.梁月是一名可适配多种体系的输出位角色&#xff0c;同时自身还有免疫和全队减伤&#xff0c;可以提升队伍的生存能力&#xff0c;比较推荐…

Pytorch|YOLO

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、 前期准备 1. 设置GPU 如果设备上支持GPU就使用GPU,否则使用CPU import torch import torch.nn as nn import torchvision.transforms as transforms im…

ASP.NET Core 中,认证(Authentication)和授权(Authorization)

在 ASP.NET Core 中&#xff0c;认证&#xff08;Authentication&#xff09;和授权&#xff08;Authorization&#xff09;是两个非常重要的概念。它们确保用户能够安全地访问应用程序&#xff0c;并且在访问过程中能按其权限被正确地控制。接下来&#xff0c;我将详细解释这两…

ThinkPHP 8的一对多关联

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 编程与应用开…

基于SpringBoot+Vue的药品管理系统【源码+文档+部署讲解】

系统介绍 基于SpringBootVue实现的药品管理系统采用前后端分离的架构方式&#xff0c;系统实现了用户登录、数据中心、药库管理、药房管理、物资管理、挂号管理、系统管理、基础设置等功能模块。 技术选型 开发工具&#xff1a;idea2020.3Webstorm2020.3 运行环境&#xff…

tomcat状态一直是Exited (1)

docker run -di -p 80:8080 --nametomcat001 你的仓库地址/tomcat:9执行此命令后tomcat一直是Exited(1)状态 解决办法&#xff1a; 用以下命令创建运行 docker run -it --name tomcat001 -p 80:8080 -d 你的仓库地址/tomcat:9 /bin/bash最终结果 tomcat成功启动

递归40题!再见递归

简介&#xff1a;40个问题&#xff0c;有难有易&#xff0c;均使用递归完成&#xff0c;需要C/C的指针、字符串、数组、链表等基础知识作为基础。 1、数字出现的次数 由键盘录入一个正整数&#xff0c;求该整数中每个数字出现的次数。 输入&#xff1a;19931003 输出&#xf…

《leetcode-runner》【图解】【源码】如何手搓一个debug调试器——架构

前文&#xff1a; 《leetcode-runner》如何手搓一个debug调试器——引言 文章目录 设计引入为什么这么设计存在难点1. 环境准备2. 调试程序 仓库地址&#xff1a;leetcode-runner 本文主要聚焦leetcode-runner对于debug功能的整体设计&#xff0c;并讲述设计原因以及存在的难点…

PyTorch使用教程(1)—PyTorch简介

PyTorch是一个开源的深度学习框架&#xff0c;由Facebook人工智能研究院&#xff08;FAIR&#xff09;于2016年开发并发布&#xff0c;其主要特点包括自动微分功能和动态计算图的支持&#xff0c;使得模型建立更加灵活‌。官网网址&#xff1a;https://pytorch.org。以下是关于…

用LLM做测试驱动开发:有趣又高效的尝试

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

5-1 创建和打包AXI Interface IP

创建和打包AXI Interface IP的前流程和后流程 step 1 &#xff1a; 选择类型 1&#xff1a; 将当前的工程打包成IP 2&#xff1a; 将当前的BD工程打包成IP 3&#xff1a; 将指定的源码打包成IP 4&#xff1a; 创建一个新的AXI 接口IP 其中3和4是比较常用的&#xff0c;本次…

国家统计局湖北调查总队副总队长张小青一行调研珈和科技农业遥感调查智能化算法

1月15日上午&#xff0c;国家统计局湖北调查总队党组成员、副总队长张小青一行莅临珈和科技开展调研。调研期间&#xff0c;张小青一行实地了解了珈和科技在自动化作物分布提取技术领域的最新成果&#xff0c;深入探讨了作物自动化处理模型在农业调查上应用的创新价值及优化方向…

基于微信小程序的电子点菜系统设计与实现(KLW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

SQL Server 导入Excel数据

1、选中指定要导入到哪个数据库&#xff0c;右键选择 》任务 》导入数据 2、数据源 选择Excel&#xff0c;点击 下一步(Next) 3、目前 选择OLE DB Provider &#xff0c;点击 下一步&#xff08;Next&#xff09; 4、默认 &#xff0c;点击 下一步&#xff08;Next&#xff09;…

【Excel】【VBA】双列排序:坐标从Y从大到小排列之后相同Y坐标的行再对X从小到大排列

Excel VBA 双列排序 功能概述 这段VBA代码实现了Excel中的双列排序功能&#xff0c;具体是&#xff1a; 跳过前3行表头先按C列数据从大到小排序在C列值相同的情况下&#xff0c;按B列从大到小排序排序时保持整行数据的完整性 流程图 #mermaid-svg-XJERemQluZlM4K8l {font-fa…

【C++】构造函数与析构函数

写在前面 构造函数与析构函数都是属于类的默认成员函数&#xff01; 默认成员函数是程序猿不显示声明定义&#xff0c;编译器会中生成。 构造函数和析构函数的知识需要建立在有初步类与对象的基础之上的&#xff0c;关于类与对象不才在前面笔记中有详细的介绍&#xff1a;点我…

1月17日星期五今日早报简报微语报早读

1月17日星期五&#xff0c;农历腊月十八&#xff0c;早报#微语早读。 1、广东明确旅馆承担防偷拍责任&#xff1a;应确保客房没有偷窥等设备&#xff1b; 2、商务部&#xff1a;手机补贴不用交旧手机&#xff1b; 3、中国汽车工业协会&#xff1a;坚决反对拜登政府禁止使用中…

【Linux】gdb_进程概念

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

深入内核讲明白Android Binder【二】

深入内核讲明白Android Binder【二】 前言一、Binder通信内核源码整体思路概述1. 客户端向服务端发送数据流程概述1.1 binder_ref1.2 binder_node1.3 binder_proc1.4 binder_thread 2. 服务端的binder_node是什么时候被创建的呢&#xff1f;2.1 Binder驱动程序为服务创建binder…

记录一次微信小程序使用云能力开发的过程

对于开发微信小程序云开发不知从何起的同学们&#xff0c;可以当作一次参考。虽说官方有文档&#xff0c;有模板示例&#xff0c;但是这些都是片段或者完整的结果展示。对于初学或者开发经验较少的同学们&#xff0c;可能不知先从那里入手进行第一步的开发。下面解析下构建微信…