当前位置: 首页 > news >正文

38.应用层协议HTTP(一)

HTTP协议概念和理解

        HTTP(HyperText Transfer Protocol,超文本传输协议)是一个至关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超文本(如HTML文档)(应用层协议)
        URL(Uniform Resource Locator,统一资源定位符)是互联网上用于标识和定位资源的标准化地址格式。
URL构成实例:
        https://news.qq.com/rain/a/20250418A05TE500
  • https(协议名称)
    成熟的协议,端口号是固定的!
    https:443
    http:80
    ssh:22
    news.qq.com(域名)
  • 域名 -> IP地址 -> 直接用IP为什么不好?IP不利用人的阅读,人看不出含义
           域名有对应的域名服务器进行解析(存放域名键值对的服务器,属于基础设施),域名转化成IP的过程称为DNS(Domain Name System,域名系统是互联网的核心服务之一,用于将人类可读的域名转换为计算机可识别的IP地址,实现网络访问的“地址翻译”)
  • /rain/a/20250418A05TE500(资源路径)
    你访问的资源路径 -> linux路径分隔符
        HTTP协议,本质也是Socket通信->必须知道服务器IP(域名)+ 端口号(成熟协议端口号固定)
HTTP协议本质理解:
人上网的行为就两种:
1)从远端拿数据(HTTP)
2)把自己本地的数据上传给远端
        HTTP -> 传送文件的 -> 短视频,视频,网页,图片,音频 -> 在没有获取资源的时候,资源存在哪里?服务器内部 -> 以什么形式存在?一个文件
HTTP角度:“资源”即文件,文件在Linux特定路径下。
        http[s]:port
域名:IP地址,具有唯一性
资源路径:目标机器上唯一一个文件
http[s]:port:定位到全网唯一主机的唯一文件(超文本传输协议)

url特殊字符处理

        请求的时候,url中如果有特殊字符,客户端(一般是浏览器),会自动给我们进行对特殊字符进行编码encode,浏览器urlencode,服务器urldecode。

HTTP-request结构理解

HTTP协议:结构化的,协议是通信双方约定的结构体。

不是所有的HTTP请求,都会携带数据。

三个问题:

1.http如何做到报头和有效载荷的分离?以空行为分隔符

2.http协议如何理解?特殊字符串来划分区域

3.http协议,序列化与反序列化,在哪里表现?

HTTP协议,序列化与反序列化用的是特殊字符进行子串拼接,且不依赖任何第三方库。

request结构分析

Request请求行:请求方法  URI  HTTP版本

  • 请求方法类型:最常见的GET(从远端服务器获取数据),POST(向远端服务器发送数据)
  • URI:统一资源标识符(Uniform Resource Identifier),用于表示资源所在的路径。
    其中 / 代表请求的是首页
  • HTTP版本:用于服务器进行判断版本(服务器根据客户端的HTTP版本请求可以提供相应版本的服务)

Response状态行:HTTP版本 状态码 状态码描述

URI理解

请求是怎么表示自己要请求什么资源?URI表示

网页内容必须在服务器指定路径下的文件(图片,视频... css,js....)

        URI内容 / 不是Linux根目录,而是web根目录 -> 资源都放在web(http)根目录下 -> http请求的本质,其实就是请求我们代码中的 ./wwwroot 目录下的特定路径下的资源。而URL中的路径,就是我们要请求的资源的路径。

URI路径转化成物理路径:

  • / ,访问的是首页:./webroot + /index.html
  • /a/b/c.html ,访问的是其他页面:./webroot + /a/b/c.html

报文完整性判断方法

tcp协议是面向字节流的,读取后,需要对报文的完整性进行判断,方法:

1)读到完整的请求报头(空行分割)

2)对报头进行反序列化,提取一个属性:Content-Length(有效载荷长度)

3)从剩余字符串中,提取Content-Length个字符。

首页结构理解

a标签是存放资源路径或者url的。点击链接,浏览器会向服务器发起http请求。

我们在浏览器端请求的时候,首页作为站点的入口,一个网站就是一颗多叉树

        点击链接的时候,浏览器会形成新的访问地址,发送二次请求 -> 我们请求的资源,都是通过http request的 URI 表示的。

code理解

HTTP Response会通过特定状态码来标识对应的情况。

http://www.dtcms.com/a/395981.html

相关文章:

  • VMware虚拟机ubuntu20.04共享文件夹无法使用
  • PyTorch 神经网络工具箱核心知识点总结
  • 豆包Seedream 4.0:全面测评、玩法探索与Prompt解读
  • STM32_02_GPIO
  • Flink SlotSharingGroup 机制详解
  • Final Cut Pro X fcpx音视频剪辑编辑(Mac中文)
  • 【LeetCode_88】合并两个有序数组
  • PromptPilot 发布:AI 提示词工程化新利器,首月零元体验
  • MySQL-详解数据库中的触发器
  • JVM调优实战及常量池详解
  • 字典树(Trie)
  • AI浏览器概述:Browser Use、Computer Use、Fellou
  • 「docker」三、3分钟快速安装docker
  • Altium Designer(AD)自定义PCB形状
  • 基于ZYNQ的创世SD NAND卡读写TXT文本实验
  • 文心快码入选2025人工智能AI4SE“银弹”标杆案例
  • 什么是SDN(Software Defined Netwok)
  • GitLab-如何基于现有项目仓库,复制出新的项目仓库
  • 本科大二第三周学习周报
  • 三、自定义Button模板触发器(纯XAML)
  • tar 将多个文件或目录打包成一个单独的归档文件
  • 2025新版 WSL2 + Docker Desktop 下载安装详细全流程指南 实现容器化管理,让开发效率起飞
  • 【LangChain4j】大模型实战-SpringBoot(阿里云百炼控制台)
  • Spring Security / Authorization Server 核心类中英文对照表
  • SqlHelper自定义的Sql工具类
  • 每周读书与学习->初识JMeter 元件(二)
  • 西门子 S7-200 SMART PLC 实操案例:中断程序的灵活应用定时中断实现模拟量滤波(上)
  • 测试分类(1)
  • 广州创科——湖北房县汪家河水库除险加固信息化工程(续集)
  • QT(5)