01-http概述

HTTP概述

  • HTTP使用的是可靠地数据传输协议。
  • HTTP属于应用层协议

Web客户端和服务器

  • web服务器:又称http服务器,用于存储web内容,并向web客户端提供web内容
  • web客户端:用于请求web服务器的应用软件,常见为浏览器

资源

媒体类型

MIME类型是一种文本标记,表示一种主要对象类型和一个特定的子类型,用/分隔;

URI(统一资源标识符)

URI的两种形式为:URL与URN

URL(统一资源定位符)
  1. 描述一台特定服务器上某资源的特定位置
  2. 目前几乎所有URI都是URL
  3. 解析URL组成:例如:https://www.baidu.com/img/a.png;
  • 方案,说明访问资源说使用的协议类型。通常为http或https协议,上方为例即:https//
  • 服务器因特网地址(域名):上方为例即:www.baidu.com
  • 指定资源路径:上方为例即:/img/a.png
URN(统一资源名)

作为特定内容的唯一名称使用,与目前资源的所在地无关。目前处于实验阶段,并不推广使用

事务

方法

常见http方法如下:

  • GET:从服务器向客户端发送命名资源
  • PUT:将来自客户端的数据存储到一个命名的服务器资源中去
  • DELETE:从服务器中删除命名资源
  • POST:将客户端数据发送到一个服务器网管应用程序
  • HEAD:仅发送命名资源响应中的HTTP首部

状态码

  • 每条HTTP响应报文返回时都会携带一个状态码
  • 状态码都为三位数值的代码,代表着额定意义
  • 状态码后都会有一条解释性的原因短语
    常见状态码:
  • 200:OK。文档正确返回
  • 302:Redirect(重定向)。到其他地方取资源
  • 404:Not Found(未找到)。无法找到该资源

报文

  • HTTP报文是由一行一行的简单字符串组成的。HTTP报文都是纯文本,不是二进制代码
  • 请求报文(request message):web客户端向web服务器发送的报文
  • 响应报文(response message):web服务器向web客户端发送的报文

http报文的三部分

  1. 起始行:请求报文包含请求路径,请求方法,http协议版本;响应报文包含http协议版本,http状态码,状态码解释短语
  2. 首部字段(header头):每个首部字段都包含一个名字和一个值,使用:分隔,多个字段使用新行分隔,并以空行结束
  3. 主体:请求报文包含发送给web服务器的数据;响应报文包含发送给客户端的数据

链接

TCP/IP

TCP特点

  • 无差错的数据传输
  • 按序传输(数据按照发送的顺序到达)
  • 未分段的数据流(可以在任意时刻以任意尺寸将数据发送出去)
    HTTP协议栈

连接、IP和端口号

http链接无端口号时,默认端口号为80

协议版本

按照时间顺序如下:

  • HTTP0.9:只支持GET方法,不支持多媒体的MIME内容,各种HTTP首部与版本号,只应该用于与老的客户端进行连接
  • HTTP1.0:添加了版本号,各种HTTP首部,一些额外的方法,以及多媒体对象的处理
  • HTTP1.1:重点关注的是校正HTTP设计中的结构性缺陷,明确语义,引入重要的性能优化措施,并删除一些不好的特性
  • HTTP2.0(HTTP-NG):目前仍在实验中。重点关注性能的大幅优化,以及更强大的服务逻辑远程执行框架

web的结构组件

代理

位于客户端和服务端之间的HTTP中间实体

缓存

HTTP的仓库,使常用页面的副本可以保存在离客户端更近的地方

网关

连接其他应用程序的特殊web服务器

隧道

对HTTP通信报文进行盲转发的特殊代理

Agent代理

发起自动http请求的半智能web客户端

相关推荐
Gary Studio1 小时前
rk芯片驱动编写
linux·学习
mango_mangojuice1 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习
lingggggaaaa1 小时前
安全工具篇&动态绕过&DumpLsass凭据&Certutil下载&变异替换&打乱源头特征
学习·安全·web安全·免杀对抗
PP东2 小时前
Flowable学习(二)——Flowable概念学习
java·后端·学习·flowable
学电子她就能回来吗2 小时前
深度学习速成:损失函数与反向传播
人工智能·深度学习·学习·计算机视觉·github
AI视觉网奇4 小时前
ue 角色驱动衣服 绑定衣服
笔记·学习·ue5
wdfk_prog5 小时前
[Linux]学习笔记系列 -- [drivers][input]serio
linux·笔记·学习
ZH15455891317 小时前
Flutter for OpenHarmony Python学习助手实战:GUI桌面应用开发的实现
python·学习·flutter
编程小白20267 小时前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习
学历真的很重要7 小时前
【系统架构师】第二章 操作系统知识 - 第二部分:进程与线程(补充版)
学习·职场和发展·系统架构·系统架构师