飞翔飞翔
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
    • HTTP协议
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
    • HTTP协议
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
  • 学习路径
  • HTTP 基础

    • 认识HTTP协议与应用层定位
    • HTTP消息格式与报文结构
    • HTTP请求方法与幂等性
    • HTTP状态码详解
  • 连接与缓存

    • HTTP持久连接与版本演进
    • HTTP缓存机制
  • 状态与协商

    • Cookie与Session状态管理
    • HTTP重定向与内容协商
    • HTTP条件请求与范围请求
  • 安全与加密

    • HTTP认证机制
    • HTTPS与TLS握手
  • 协议演进

    • HTTP2核心特性
    • HTTP3与QUIC
  • 架构与实战

    • HTTP代理服务器与Web缓存
    • HTTP常见攻击与防御
    • HTTP实践工具与抓包分析

认识HTTP协议与应用层定位

概念引入

想象一下,你走进一家餐厅点餐。你(客户端)对着服务员说出想吃的菜,服务员把订单送到后厨(服务器),厨师做好菜后,服务员再把菜端回给你。这个"你说需求→对方处理→返回结果"的过程,就是 HTTP(HyperText Transfer Protocol,超文本传输协议) 的核心工作模式。

HTTP 是互联网上最基础的通信协议之一。每当你在浏览器地址栏输入 www.feixiang.net 访问广州飞翔科技官网时,你的浏览器就在用 HTTP 与飞翔公司的服务器"对话"。


核心内容

HTTP 是什么?

HTTP 是一种 应用层协议,它定义了客户端(通常是浏览器或 App)与服务器之间交换数据的规则。它运行在 TCP(Transmission Control Protocol,传输控制协议) 之上,默认使用 端口 80。

可以把 TCP 比作一条可靠的"电话线路",而 HTTP 则是电话里双方约定的"说话语法"——谁先开口、怎么提问、怎么回答,都有固定格式。

万维网 WWW 的三要素

万维网(WWW,World Wide Web)能运转起来,离不开三个好搭档:

要素作用生活比喻
HTML定义网页的内容和结构餐厅的菜单(有什么菜)
URL定位互联网上每个资源的地址菜单上的菜名编号(精准找到某道菜)
HTTP负责把 HTML 内容从服务器传送到浏览器服务员把菜从后厨端到桌上

以飞翔公司官网为例:

  • 你在浏览器输入 http://www.feixiang.net/about.html
  • URL 告诉浏览器去哪里找"关于我们"页面
  • 浏览器通过 HTTP 向飞翔服务器发起请求
  • 服务器返回 HTML 代码,浏览器渲染成精美页面,展示航仔、翼王等团队成员

静态网页 vs 动态网页

类型特点飞翔公司示例
静态网页内容固定,服务器直接返回预存文件官网首页的公司介绍、靓晴设计的 UI 展示图
动态网页内容根据请求实时生成员工查询系统(输入"航仔"返回他的技术栈)、工资条查询页面

静态网页像印刷好的宣传册,动态网页则像现场定制的咖啡——根据你的口味(请求参数)实时调配。

HTTP 的核心特征

① 无状态(Stateless)

HTTP 不会记住你上一步做了什么。就像餐厅服务员每次接单都换新人,你刚说完"不要香菜",下一个服务员又来问一遍。

飞翔公司场景:雁姐登录内部系统查看用户数据,刷新页面后,服务器"不认识"她了,需要重新登录。这就是无状态带来的体验。解决方法是使用 Cookie 或 Session 来"补记忆"。

② 请求-响应(Request-Response)

永远是客户端先开口,服务器再回答。服务器不会主动给你发消息。

③ 文本协议

HTTP 报文是纯文本(人类可读),不像二进制协议那样晦涩。这就像一个餐厅用普通话而不是暗语交流,调试起来非常方便。

HTTP 在 TCP/IP 五层模型中的位置

HTTP 位于最顶端的应用层,它"承上启下":

  • 承上:为浏览器、App 等软件提供统一的网络通信接口
  • 启下:把数据交给 TCP,由 TCP 负责可靠传输

HTTP 与相邻应用层协议对比

协议全称默认端口用途飞翔公司场景
HTTP超文本传输协议80浏览网页访问官网 www.feixiang.net
FTP文件传输协议21上传/下载文件凌叔批量上传服务器日志
SMTP简单邮件传输协议25发送邮件鸣哥用企业邮箱发周报
POP3邮局协议 v3110下载邮件到本地云吞把用户反馈邮件收到电脑
IMAP互联网消息访问协议143在线管理邮件图妹在多个设备同步邮件
DNS域名系统53域名转 IP输入 feixiang.net 解析到服务器 IP

HTTP 和这些协议是"同事关系",都住在应用层,但分工不同。HTTP 专精于"一问一答式的网页传输",而 FTP 擅长大文件搬运,SMTP 负责邮件投递。


本篇小结

  • HTTP 是应用层协议,基于 TCP 端口 80,采用请求-响应模式
  • WWW 三要素协同工作:URL 定位资源、HTTP 传输资源、HTML 呈现资源
  • 静态网页像印刷册,内容不变;动态网页像定制咖啡,实时生成
  • HTTP 三大特征:无状态(不记往事)、请求-响应(客先主后)、文本协议(人类可读)
  • HTTP 在 TCP/IP 五层模型中位于应用层,承上启下连接软件与网络
  • HTTP 与 FTP、SMTP、DNS 等是应用层"同事",各有专长

动手实践

温馨提示: 以下实践示例中涉及的域名(如 www.feixiang.net)、公司场景和接口均为虚构数据,仅用于演示协议原理,实际执行时可能不会产生文档中描述的效果。建议将命令中的域名替换为你自己可访问的真实地址进行练习。

实践:用 curl 观察 HTTP 请求

打开终端,执行以下命令访问飞翔公司官网(以百度为例演示,飞翔内网请替换实际地址):

# 查看完整的 HTTP 请求和响应头
curl -v http://www.feixiang.net 2>&1 | head -30

# 只查看响应头
curl -I http://www.feixiang.net

观察输出中的 HTTP/1.1 200 OK 和各类首部字段。

实践:对比 HTTP 与 HTTPS

# HTTP 默认端口 80
curl -I http://www.feixiang.net

# HTTPS 默认端口 443(加密版 HTTP)
curl -I https://www.feixiang.net

思考:为什么现代网站都推荐使用 HTTPS?

实践:思考题

  1. 如果 HTTP 是有状态的(像微信聊天一样记住上下文),会带来什么好处和弊端?
  2. 为什么浏览器访问一个网页时,往往会产生多个 HTTP 请求?(提示:HTML、CSS、JS、图片是分开请求的)
  3. 飞翔公司的员工查询系统应该使用静态网页还是动态网页?为什么?

查看思考题答案

下一页
HTTP消息格式与报文结构