计算机网络:HTTP(应用层)

2023-11-01

目录

1 HTTP 基本概述

2 HTTP 的操作过程

3 HTTP 的特点

4 HTTP 的报文结构

5 HTTPS


1 HTTP 基本概述

HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,HTTP定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。

从层次的角度看,HTTP 是面向事务的(Transaction-oriented) 应用层协议,它规定了在浏览器服务器之间的请求响应的格式与规则,是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

2 HTTP 的操作过程

从协议执行过程来说,浏览器要访问www服务器时,首先要完成对www服务器的域名解析。一旦获得了服务器的IP地址,浏览器就通过TCP向服务器发送连接建立请求。

万维网的大致工作过程如下图所示。

  • 每个万维网站点都有一个服务器进程,它不断地监听TCP的端口80 (默认),当监听到连接请求后便与浏览器建立连接。
  • TCP连接建立后,浏览器就向服务器发送请求获取某个Web页面的HTTP请求。
  • 服务器收到HTTP请求后,将构建所请求Web页的必需信息,并通过HTTP响应返回给浏览器。
  • 浏览器再将信息进行解释,然后将Web页显示给用户。
  • 最后,TCP连接释放。

在测览器和服务器之间的请求与响应的交互,必须遵循规定的格式和规则,这些格式和规则就是HTTP。因此HTTP有两类报文:

  1. 请求报文(从Web客户端向Web服务器发送服务请求)
  2. 响应报文(从Web服务器对Web客户端请求的回答)。

用户单击鼠标后所发生的事件按顺序如下(以访问CSDN的网站为例):

  1. 浏览器分析链接指向页面的URL (http://www.csdn.com/index.htm)。
  2. 浏览器向DNS请求解析www.csdn.com的IP地址。
  3. 域名系统DNS群析出CSDN服务器的IP地址。
  4. 浏览器与该服务器建立TCP连接(默认端口号为80)。
  5. 浏览器发出HTTP请求: GET /index. htm。
  6. 服务器通过HTTP响应把文件index.htm发送给测览器。
  7. TCP连接释放。
  8. 浏览器解释文件indexhtm,并将Web页显示给用户。

3 HTTP 的特点

HTP是无状态的。也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。因为服务器不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次。

HTTP的无状态特性简化了服多器的设计,使服务器更容易支持大量并发的HTTP请求

在实际应用中,通常使用Cookie 加数据库的方式来跟踪用户的活动(如记录用户最近浏览的商品等)。

Cookie 是一个存储在用户主机中的文本文件,里面含有一串“识别码”,如“123456”。 用于Web服务识别用户。Web服务器根据Cookie就能从数据库中查询到该用户的活动记录,进而执行一些个性化的工作,如根据用户之前浏览过的商品向其推荐新产品等。

HTTP采用TCP作为运输层协议,保证了数据的可靠传输。HTTP 不必考虑数据在传输过程中被丢弃后又怎样被重传。但是,HTTP本身是无连接的。也就是说,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接。

HTTP既可以使用非持久连接,也可以使用持久连接(HTTP/1.1 支持)。

  • 对于非持久连接,每个网页元素对象(如JPEG图形、Flash 等)的传输都需要单独建立一个TCP连接,如下图所示(第三次握手的报文段中捎带了客户对万维网文档的请求)。也就是说,请求一个万维网文档所需的时间是该文档的传输时间(与文档大小成正比)加上两倍往返时间RTT(一个RTT用于TCP连接,另一个RTT用于请求和接收文档)。

  • 所谓持久连接,是指万维网服务器在发送响应后仍然保持这条连接,使同一个客户和服务器可以继续在这条连接上传送后续的HTTP请求与响应报文,如下图所示。

持久连接又分为:

  1. 非流水线
  2. 流水线两种方式。

对于非流水线方式,客户在收到前一个响应后才能发出下一个请求。

HTTP/1.1的默认方式是使用流水线的持久连接。这种情况下,客户每遇到一个对象引用就立即发出一个请求,因而客户可以逐个地连续发出对各个引用对象的请求。如果所有的请求和响应都是连续发送的,那么所有引用的对象共计经历1个RTT延迟,而不是像非流水线方式那样,每个引用都必须有1个RTT延迟。

4 HTTP 的报文结构

HTTP是面向文本的(Text-Oriented), 因此报文中的每个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。有两类HTTP报文:

  1. 请求报文:从客户向服务器发送的请求报文,如下图(a)所示。
  2. 响应报文:从服务器到客户的回答,如下图(b)所示。

HTTP请求报文和响应报文都由三个部分组成:

  1. 开始行
  2. 首部行
  3. 实体主体

从上图可以看出,这两种报文格式的区别是开始行不同。

开始行

用于区分是请求报文还是响应报文。在请求报文中的开始行称为请求行,而在响应报文中的开始行称为状态行。开始行的三个字段之间都以空格分隔,最后的“CR"和“LF"分别代表“回车"和“换行”

请求报文的“请求行”有三个内容:

  1. 方法
  2. 请求资源的URL
  3. HTTP的版本

其中,“方法”是对所请求对象进行的操作,这些方法实际上也就是一些命令。

下表给出了HTTP请求报文中常用的几个方法。

方法(操作) 意义
GET 请求读取由URL标识的信息
HEAD 请求读取由URL标识的信息的首部
POST 给服务器添加信息(如注解)
CONNECT 用于代理服务器

首部行

用来说明浏览器,服务器或报文主体的一些信息。首部可有几行,但可不使用。在每个首部行都有首部字段名和它的值,每行在结束的地方都要有“回车”和“换行”。整个首部结束时,还有一空行将首部行和后面的实体主体分开

实体主体

在请求报文中一般不用这个字段,而在响应报文中也可能没有这个字段。

5 HTTPS

HTTPS就是安全的HTTP,在http与传输层之间加上了一个SSL对称加密与非对称加密。HTTPS = HTTP+ 加密 + 认证 + 完整性保护。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机网络:HTTP(应用层) 的相关文章

  • arcgis 10.8 for win10安装教程

    本文主要记录arcgis安装步骤 遇到的问题等 文章目录 一 前提 二 下载与安装 1 下载 2 安装 参考资料 一 前提 下载前需要确定 1 ArcGIS对系统的要求 安装之前系统需安装 net framework 4 5 以上版本 我的
  • 形象易懂讲解算法II——压缩感知

    形象易懂讲解算法II 压缩感知
  • 凛冬已至 冰凌垂挂 岁末年初

    时光荏苒 岁月蹉跎 时间一分一秒从我们身边流过 岁月的脚步声也是越来越小 还没来得及跟眼前的2022挥手道别 2023已经出现在我们的眼前向我们问好 2023 就是新的一年 总会给我们带来无数的幻想和憧憬 虽然现在的我还没有一个真正的新年
  • 电源学习总结(六)——BUCK设计

    降压型开关电源 BUCK 是实际应用中较为广泛使用的电路 本文来详细说一说相关的设计细节 这里不考虑集成的开关电源 分控制和驱动 开关管 电感等部分讲 文章目录 基本结构 控制和驱动 开关管 自举电容 电感 电容 工作频率选择 其他注意事项
  • App\led\led.h(6): warning: #1295-D: Deprecated declaration LED_Init - give arg types

    如图所示操作即可 如图所示操作即可 如图所示操作即可
  • “条件递进式编程”技巧两例

    什么是 条件递进式编程 呵呵 这是我自己起的名字 所谓条件递进式编程 就是指需要一系列相关函数组合执行的情况下 后续函数执行的必要性由前面所有函数执行是否成功来决定 比如说 有一系列函数如下DoSomething1 DoSomething2
  • 第一篇博--初入CSDN

    选择开博并计划按月定期发布一些敲码路上的收获和心得 目的是在梳理知识 复盘总结的同时 能够和志同道合的朋友们一起学习 共同进步 在互联网上留下一份自己的痕迹 与诸君共勉 联系方式 631435743 qq com 欢迎大家找我讨论计算机专业
  • 多态的实现

    多态 之前介绍过多态的概念就是基类引用派生类对象且和派生类有相同的同名覆盖函数 那么现在我们就具体讲讲怎么实现多态 类方法实现多态性有两种方法 1 方法重载 可以声明多个同名但参数个数 类型 和顺序不同的方法 编译时根据参数 个数 类型和顺
  • 合肥工业大学 汇编语言程序设计 高分实验代码

    感觉最困难的就是写汇编代码了 当时成功完美运行的时候兴奋的像当年第一次 Hello World 一样 且几乎所有关键之处都有注释 需要的朋友自取 链接 https pan baidu com s 1q4nVJ7aK4JEPQ F6PH45R
  • GitHub Actions自动化部署+定时百度链接推送

    前言 最近用VuePress搭建了一个静态网站 由于是纯静态的东西 每次修改完文章都要重新打包上传很是麻烦 虽然vuepress theme vdoing主题作者提供了GitHub Actions自动化部署的教程文章 但是过于简陋且是19年
  • 【软件测试】用例篇

    一 什么是测试用例 测试用例 向被测试系统发起的一组集合 这组集合包含测试数据 测试步骤 测试平台 预期结果 二 为什么在测试前要设计测试用例 三 基于需求设计测试用例 3 1测试是我们测试人员进行测试的依据 3 2测试人员首先要分析需求
  • GNURadio报错Unable to create context(windows10环境)

    GNURadio报错Unable to create context windows10环境 这里本人使用的是GNU Radio3 7 11 iiosupport win64 版本 外设是ADI的ADALM PLUTO 这里本人使用的是GN
  • TRMF 辅助论文:最小二乘法复现TRMF

    1 目标函数 总 论文笔记 Temporal Regularized Matrix Factorization forHigh dimensional Time Series Prediction UQI LIUWJ的博客 CSDN博客 1
  • Freertos 在contexM0芯片上的移植

    1 freertos源码 官网下载地址 https www freertos org 下载LTS长期支持版本 2 在工程目录下新建FreeRTOS文件夹 将FreeRTOS 的源码添加到这个文件夹中 portable 文件夹中只需要复制 k
  • FL Studio2024水果编曲软件21.2.0中文版本下载更新

    FL Studio2024是功能强大的音乐制作解决方案 使用旨在为用户提供一个友好完整的音乐创建环境 让您能够轻松创建 管理 编辑 混合具有专业品质的音乐 一切的一切都集中在一个软件中 只要您想 只要您需要 它总能满足您的音乐需求 工具方面
  • 如何FL Studio显示中文?切换语言教程

    你是不是也在为fl studio的英文界面而苦恼 你是不是也想让你的fl studio 说中文 方便你制作音乐 你是不是也在网上找了很多教程 却发现都是复杂的 或者已经过时的 如果你的答案是肯定的 那么你来对地方了 今天 我要教你一个一步到
  • CleanMyMac X2024值不值得下载?

    macOS已经成为最受欢迎的桌面操作系统之一 它提供了直观 简洁的用户界面 使用户可以轻松使用和管理系统 macOS拥有丰富的应用程序生态系统 还可以与其他苹果产品和服务紧密协作 如iPhone iPad 用户可以通过iCloud同步和共享
  • MacBook电脑内存容量小根本不够用?如何一键解决?

    得益于M1系列芯片的强势表现 很多朋友都换用了MacBook 首次接触到了macOS系统 但出乎意料的是 很多人就开始受罪了 明明这么出色的硬件 为何到处都不顺手呢 尤其是容量 MacBook相比同价位的Windows笔记本 硬盘本来就偏小
  • CSDN找到“仅我可见”内容

    有时候自己做一些笔记参考了他人的内容 所以想将文章转为 仅自己可见 仅作自用 记录一下CSDN找私密文章的方式 今天摸了好一会儿才找到哈哈哈 1 点击导航栏处的创作中心进入 2 查看更多 3 点击浏览就可以查看啦 来源 CSDN找到 仅我可
  • LIDAR激光雷达反射板

    LIDAR Light Detection And Ranging 系统是一种集激光 全球定位系统 GPS 和惯性导航系统 INS 三种技术于一身的系统 用于获得点云数据并生成精确的数字化三维模型 LIDAR系统包括一个单束窄带激光器和一个

随机推荐

  • STM32F103时钟配置流程

    一般情况下单片机的时钟配置是单片机程序中的第一步 也是很重要的一步 这时候我们需要考虑以下几个问题 1 系统时钟的时钟源用哪个 2 系统时钟频率要多少 3 每个模块的时钟频率要多少 4 如果外部时钟出了问题 这个时候时钟是怎么运行的 下面就
  • 特征工程——归一化处理不适用情况

    哪些机器学习算法不需要做归一化 Normalization 处理 概率模型不需要归一化 因为它们不关心变量的值 而是关心变量的分布和变量之间的条件概率 如决策树 随机森林rf 而像AdaBoost svm Ir KNN KMeans之类的最
  • C++ 模板模板参数

    C 模板模板参数 1 模板模板参数 C 模板的使用一共有以下几种情况 函数模板 类模板 模板参数 成员模板 而本篇介绍模板模板参数 模板参数就是模板的参数 我们一般指定为T类型 实际上可以使用任何的名字 例如指定一个Foo的模板参数 tem
  • 元宇宙浪潮震撼来袭,抓住时机,齐心协力

    互联网诞生至今 世界已与网络互联共生 Z世代 1995 2009年间出生的一代人 对互联网的依赖不同于前辈 他们不再局限于视觉 听觉的网络传播互动 也不仅是通过互联网把视觉 听觉 嗅觉 味觉 触觉相结合 而是互联网的原住民 他们的大部分生活
  • 微信小程序上传头像和昵称持久化保存

    微信小程序上传头像和昵称持久化保存 1 持久化步骤 因为通过微信头像昵称填写功能获取到头像是一个临时头像 这个url只能一段时间内在微信访问 并且无法在公网访问这个url 所以非常有必要把这个url转成我么实际可用的头像到数据库中 让头像持
  • 弹性布局一排为三个时,在循环中最后一排异常

    解决
  • 单件模板

    ifndef FILE HELPER H define FILE HELPER H class FileHelper public FileHelper FileHelper static FileHelper getInstance st
  • redis 网络模型全面解密

    导言 在目前的技术选型中 Redis 俨然已经成为了系统高性能缓存方案的事实标准 因此现在 Redis 也成为了后端开发的基本技能树之一 Redis 的底层原理也顺理成章地成为了必须学习的知识 Redis 从本质上来讲是一个网络服务器 而对
  • 【经典】zheng项目搭建

    一 项目简介 17年初就接触了zheng这个项目 感觉挺牛的 看他的架构图就知道了 现在都已经18年了 时间好快 特此记录下zheng的环境搭建 虽然 先看下码云上zheng的简介吧 https gitee com shuzheng zhe
  • C# 获取namespace的方法

    获取当前class的namespace this GetType Namespace
  • QT_PCAN

    利用Qt做PCAN的二次开发 https www qter org portal php mod view aid 5472 Qt Using PeakCAN Plugin https doc qt io qt 5 qtserialbus
  • AVR单片机使用printf的方法

    1 开发环境 开发平台 ICCAVR 7 22 AVR单片机型号 ATMEGA64 仿真平台 protues7 模拟串口软件 Launch Virtual Serial Port Driver Pro 2 程序编写 要想在AVR单片机中使用
  • Python Pool类多进程 apply_async 异步变成了阻塞解决方法

    出错代码 if name main ip arr get ip list pool Pool processes 4 for temp in ip arr res pool apply async check ip temp get if
  • Linux 查看进程和线程CPU和内存占用情况

    文章目录 Linux 查看进程有哪些线程 Linux 查看程序内存占用情况 top和free等命令 Linux 查看进程 线程数量 Linux 查看进程有哪些线程 linux 下查看进程内的线程有哪些 首先通过进程名称 假设为SensorD
  • c 编程 常犯的错误,隐藏性很高,而且很致命

    1 申请内存 1 1 内存大小错误 比如 申请一块存放8个unsigned int 数据的内存空间 错误 malloc 8 正确 malloc 8 sizeof unsigned int 注解 malloc申请内存 是以字节为单位的 所以当
  • 结构体定义和使用

    收获一 结构体的定义和使用 struct stu char name 姓名 int num 学号 char sex 性别 float score 成绩 struct stu stu1 stu2 stu 就像一个 模板 定义出来的变量都具有相
  • 使用openssl的md5库

    在linux机器上 有一个命令可以计算出文件的md5值 那就是md5sum 如果没有的话 就需要安装RPM包 coreutils 现在我们使用openssl的库也可以方便的计算出文件的md5值 主要用到的函数是 int MD5 Init M
  • 【单片机】【数码管】数码管显示

    1 数码管的显示器及其接口 单片机系统中 常用的显示器有 发光二极管LED显示器 液晶LCD显示器 TFT液晶显示器 本文主要是关于LED显示器的说明 LED显示器有两种显示结构 段显示 7段 米字型等 和点阵显示 5x8 8x8点阵等 L
  • 成功解决 ProxyError: Conda cannot proceed due to an error in your proxy configuration

    welcome to my blog 希望对大家有帮助 给win10的ubuntu1804安装anaconda 执行conda create n daily python 3 7创建虚拟环境时报错 Collecting package me
  • 计算机网络:HTTP(应用层)

    目录 1 HTTP 基本概述 2 HTTP 的操作过程 3 HTTP 的特点 4 HTTP 的报文结构 5 HTTPS 1 HTTP 基本概述 HTTP是Hyper Text Transfer Protocol 超文本传输协议 的缩写 HT