百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

HTTP概述(http的基本原理)

zhezhongyun 2025-04-06 23:31 24 浏览

在当今互联网时代,我们每天浏览网页、观看视频、下载文件,背后都有一个重要的协议在默默工作——HTTP(HyperText Transfer Protocol,超文本传输协议)。它就像互联网的信息搬运工,确保数据从世界各地的服务器顺利送达我们的设备。

1. HTTP是什么?

HTTP是Web浏览器、服务器和应用程序之间通信的桥梁,确保信息快速、可靠、安全地传输。无论是加载网页、播放视频,还是在线购物,HTTP都扮演着关键角色。

HTTP的特点

  • 可靠传输:HTTP依赖TCP协议,确保数据完整无损地传输。
  • 无状态:每次请求都是独立的,不会记录上一次交互信息(但可以通过Cookie等机制解决)。
  • 灵活扩展:支持各种数据格式,如文本、图片、视频等。

2. Web的基本架构

Web服务器与客户端

  • Web服务器:存储网页资源,如HTML文件、图片、视频等,并通过HTTP协议响应客户端请求。
  • Web客户端:主要是Web浏览器(如Chrome、Firefox),向服务器发送HTTP请求并展示内容。

请求与响应的过程

以访问
http://www.example.com/index.html 为例,完整流程如下:

  1. 浏览器解析URL,提取服务器地址(www.example.com)。
  2. DNS解析,将域名转换为IP地址。
  3. 浏览器向服务器发送HTTP请求("我要 index.html")。
  4. 服务器处理请求并返回响应("给你 index.html")。
  5. 浏览器渲染页面,展示在屏幕上。

3. 资源、URL 与 MIME 类型

什么是Web资源?

Web资源可以是静态文件(如HTML、图片)或动态生成的内容(如天气查询、搜索引擎结果)。

URL(统一资源定位符)

URL是Web资源的地址,标准格式如下:

协议://服务器地址:端口号/资源路径

例如:

https://www.example.com:443/images/logo.png
  • 协议(https):指定传输方式。
  • 服务器地址(www.example.com):Web服务器的域名。
  • 端口号(443):HTTPS默认端口(HTTP默认80)。
  • 资源路径(/images/logo.png):服务器上文件的具体位置。

MIME类型(媒体类型)

Web服务器会为每个文件类型指定MIME(Multipurpose Internet Mail Extensions)类型,例如:

文件类型

MIME 类型

HTML 文档

text/html

纯文本

text/plain

JPEG 图片

image/jpeg

MP4 视频

video/mp4

JSON 数据

application/json


4. HTTP事务:请求与响应

每次Web浏览都会涉及HTTP请求HTTP响应两个部分。

常见的HTTP方法

方法

作用

GET

请求资源(如网页、图片)

POST

提交数据(如表单提交、文件上传)

PUT

更新资源

DELETE

删除资源

HEAD

仅请求资源的头部信息

HTTP状态码(服务器响应情况)

状态码

描述

200 OK

请求成功

301 Moved Permanently

资源永久重定向

404 Not Found

资源不存在

500 Internal Server Error

服务器内部错误


5. HTTP 报文结构

HTTP报文由三部分组成:

  1. 起始行(说明请求类型或响应状态)
  2. 头部字段(包含元信息,如内容类型、长度等)
  3. 主体(可选,包含传输的数据,如HTML内容)

示例:HTTP请求报文

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html

示例:HTTP响应报文

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1024

...

6. HTTP连接与通信

TCP/IP协议

HTTP运行在TCP协议之上,确保数据可靠传输。通信过程如下:

  1. 客户端与服务器建立TCP连接(三次握手)。
  2. 客户端发送HTTP请求
  3. 服务器返回HTTP响应
  4. TCP连接关闭(HTTP/1.1支持持久连接)。

IP地址 & 端口

Web服务器通常使用80端口(HTTP)或443端口(HTTPS),客户端通过DNS解析获取服务器IP地址后建立连接。


7. HTTP的演进

HTTP协议经过多次升级,以提高性能和安全性:

版本

特点

HTTP/0.9

仅支持GET请求,无状态码和头部字段

HTTP/1.0

增加状态码、MIME类型,但每个请求需新建连接

HTTP/1.1

支持持久连接、管道化请求,提高性能

HTTP/2

二进制协议、多路复用,减少延迟

HTTP/3

基于QUIC协议,减少握手延迟,提升速度


8. Web 的关键组件

除了Web服务器和浏览器,HTTP生态系统中还有以下重要角色:

1. 代理服务器(Proxy)

  • 功能:拦截客户端请求,提高安全性(如内容过滤)。
  • 示例:企业网关(限制访问特定网站)。

2. 缓存(Cache)

  • 功能:存储常用数据,加速加载速度。
  • 示例:CDN(内容分发网络)。

3. 网关(Gateway)

  • 功能:连接不同的协议,如HTTP转SOAP。
  • 示例:API网关。

4. 隧道(Tunnel)

  • 功能:用于加密传输,如HTTPS代理穿越防火墙。

5. User-Agent(用户代理)

  • 功能:客户端标识(如浏览器、爬虫)。
  • 示例:搜索引擎爬虫 Googlebot。

相关推荐

激光手术矫正视力对眼睛到底有没有伤害?

因为大家询问到很多关于“基质不能完全愈合”的问题,有必要在这里再详细解释一下。谢谢@珍惜年少时光提出的疑问:因为手头刚好在看组织学,其中提到:”角膜基质约占角膜的全厚度的90%,主要成分是胶原板层,...

OneCode核心概念解析——View(视图)

什么是视图?在前面的章节中介绍过,Page相关的概念,Page是用户交互的入口,具有Url唯一性。但Page还只是一个抽象的容器,而View则是一个具备了具体业务能力的特殊的Page,它可以是一个...

精品博文图文详解Xilinx ISE14.7 安装教程

在软件安装之前,得准备好软件安装包,可从Xilinx官网上下载:http://china.xilinx.com/support/download/index.html/content/xilinx/z...

卡片项目管理(Web)(卡片设计的流程)

简洁的HTML文档卡片管理,简单框架个人本地离线使用。将个人工具类的文档整理使用。优化方向:添加图片、瀑布式布局、颜色修改、毛玻璃效果等。<!DOCTYPEhtml><html...

GolangWeb框架Iris项目实战-JWT和中间件(Middleware)的使用EP07

前文再续,上一回我们完成了用户的登录逻辑,将之前用户管理模块中添加的用户账号进行账号和密码的校验,过程中使用图形验证码强制进行人机交互,防止账号的密码被暴力破解。本回我们需要为登录成功的用户生成Tok...

sitemap 网站地图是什么格式?有什么好处?

sitemap网站地图方便搜索引擎发现和爬取网页站点地图是一种xml文件,或者是txt,是将网站的所有网址列在这个文件中,为了方便搜索引擎发现并收录的。sitemap网站地图分两种:用于用户导...

如何在HarmonyOS NEXT中处理页面间的数据传递?

大家好,前两天的Mate70的发布,让人热血沸腾啊,不想错过,自学的小伙伴一起啊,今天分享的学习笔记是关于页面间数据伟递的问题,在HarmonyOSNEXT5.0中,页面间的数据传递可以有很多种...

从 Element UI 源码的构建流程来看前端 UI 库设计

作者:前端森林转发链接:https://mp.weixin.qq.com/s/ziDMLDJcvx07aM6xoEyWHQ引言由于业务需要,近期团队要搞一套自己的UI组件库,框架方面还是Vue。而业界...

jq+ajax+bootstrap改了一个动态分页的表格

最近在维护一个很古老的项目,里面是用jq的dataTable方法实现一个分页的表格,不过这些表格的分页是本地分页。现在想要的是点击分页去请求数据。经过多次的修改,以失败告终。分页的不准确,还会有这个错...

学习ES6- 入门Vue(大量源代码及笔记,带你起飞)

ES6学习网站:https://es6.ruanyifeng.com/箭头函数普通函数//普通函数this指向调用时所在的对象(可变)letfn=functionfn(a,b){...

青锋微服务架构之-Ant Design Pro 基本配置

青锋(msxy)-Gitee.com1、更换AntDesignPro的logo和名称需要修改文件所在位置:/config/defaultSetting.jsconstproSett...

大数据调度服务监控平台(大数据调度服务监控平台官网)

简介SmartKettle是针对上述企业的痛点,对kettle的使用做了一些包装、优化,使其在web端也能具备基础的kettle作业、转换的配置、调度、监控,能在很大一定程度上协助企业完成不同...

Flask博客实战 - 实现博客首页视图及样式

本套教程是一个Flask实战类教程,html/css/javascript等相关技术栈不会过多的去详细解释,那么就需要各位初学者尽可能的先去掌握这些基础知识,当然本套教程不需要你对其非常精通,但最起码...

Web自动化测试:模拟鼠标操作(ActionChains)

在日常的测试中,经常会遇到需要鼠标去操作的一些事情,比如说悬浮菜单、拖动验证码等,这一节我们来学习如何使用webdriver模拟鼠标的操作首页模拟鼠标的操作要首先引入ActionChains的包fro...

DCS F-16C 中文指南 16.9ILS仪表降落系统教程

10–ILS教程我们的ILS(仪表着陆进近)将到达Batumi巴统机场。ILS频率:110.30跑道航向:120磁航向/126真航向无线电塔频率:131.0001.设置雷达高度表开关打开(前)并...