[项目][WebServer][项目介绍及知识铺垫][上]详细讲解

embedded/2024/12/22 18:45:32/

目录

  • 1.何为WWW?
  • 2.HTTP分层
    • 1.整体
    • 2.细节
    • 3.DNS?
    • 4.协议之间是如何协同运作的?
  • 3.Http相关概念
    • 1.特点
    • 2.URI && URL && URN
    • 3.HTTP URL格式


1.何为WWW?

  • WWW是环球信息网的缩写,常简称为Web
  • 分为Web客户端和Web服务器程序,WWW可以让Web客户端(常用浏览器)访问浏览Web服务器上的页面,是一个由许多互相链接的超文本组成的系统,通过互联网访问
  • 在这个系统中,每个有用的事物,称为一样“资源”
    • 并且由一个全局“统一资源标识符”(URI)标识
    • 这些资源通过超文本传输协议(Hypertext Transfer Protocol)传送给用户,而后者通过点击链接来获得资源
  • HTTP(超文本传输协议)是基于TCP的连接方式进行网络连接
  • HTTP/1.1版本中给出一种持续连接的机制(长链接)
  • 绝大多数的Web开发,都是构建在HTTP协议之上的Web应用

2.HTTP分层

1.整体

请添加图片描述

2.细节

请添加图片描述

3.DNS?

请添加图片描述

4.协议之间是如何协同运作的?

请添加图片描述


3.Http相关概念

  • 目前主流服务器使用的是http/1.1版本,但是本项目为了简化代码,按照http/1.0来完成项目

1.特点

  • 客户/服务器模式(B/S/C/S)
    请添加图片描述

  • 简单快速,HTTP服务器的规模小,因而通信速度很快

  • 灵活,HTTP允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记

  • 无连接,每次连接只处理一个请求

    • 服务器处理完客户的请求,并收到客户的应答后,即断开连接
    • 采用这种方式可以节省传输时间 (http/1.0具有的功能,http/1.1兼容)
  • 无状态

    • http协议每当有新的请求产生,就会有对应的新响应产生,协议本身并不会保留你之前的一切的请求或者响应
    • 这是为了要更快的处理大量的事物,保证协议的可伸缩性
  • 可是,随着web的发展,因为无状态而导致业务处理变得棘手起来,比如保持用户的登录状态

    • http/1.1虽然也是无状态协议,但是为了保持状态的功能,引入了Cookie和Session技术

2.URI && URL && URN

  • URI是Uniform Resource Identifier,统一资源标识符,用来唯一的标识一个资源
  • URL是Uniform Resource Locator,统一资源定位符,他是一种具体的URI
    • 即:URL可以用来标识一个资源,而且还指明了如何locate这个资源
  • URN,Uniform Resource Name,统一资源命名,是通过名字来标识资源,比如MAILTO:java-net@java.sun.com
  • URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式,URL和URN都是一 种UR
  • URL是URI的子集,可以理解成URL是一种特殊类型的URI,包含了如何获取指定资源
    • 任何东西,只要能够唯一地标识出来,都可以说这个标识是URI
    • 如果这个标识是一个可获取到上述对象的路径,那么同时它也可以是一个URL
    • 但如果这个标识不提供获取到对象的路径,那么它就必然不是URL
  • 示例:
    • URI: /home/index.html
    • URL: www.xxx.com:/home/index.html

3.HTTP URL格式

  • 格式:http://host[":"port][abs_path]
    • http表示要通过HTTP协议来定位网络资源
    • host表示合法的Internet主机域名或者IP地址,本主机IP:127.0.0.1
    • port指定一个端口号,为空则使用缺省端口80
    • abs_path指定请求资源的URI
    • 如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成
      • 虽然浏览器默认会添加/,但是依旧没有告知服务器,要访问什么资源
      • 此时,默认返回对应服务的首页
  • 例子:
    • 输入: www.baidu.com,浏览器自动转换成:http(s)://www.baidu.com/
    • 一个较为完整的http请求:https://github.com/DieSnowK/Study


http://www.ppmy.cn/embedded/111176.html

相关文章

SpringMvc 完整上传文件流程(Ajax请求)头像,图片上传

1、config包下的操作 1.1、创建MyWebApplicationInit类 如何创建第一个SpringMvc步骤 以配置类的形式代替xml文件(点击链接查看) 1.2、设置文件大小(自定义) 1.3、创建SpringMvcConfig类 并实现 WebMvcConfigurer接口 EnableW…

LabVIEW如何确保采集卡稳定运行

在LabVIEW开发中,如何确保硬件采集卡稳定运行,特别是长期采集电压信号,是系统稳定性的重要考虑因素。用户在使用采集卡时,可能需要频繁进行开始、停止和重新采集的操作,这对硬件和软件提出了高要求。下面介绍实现长期稳…

qt --如何获取本地联网的网口mac地址

单独的获取某一个网卡的mac地址 在代码里 可能出现意料之外的bug 如果你本地的网卡较多 QList< QString > ABC::getMac() {QList< QNetworkInterface > nets QNetworkInterface::allInterfaces(); // 获取所有网络接口列表int nCnt nets.count();QList< QStr…

【数据结构】十大经典排序算法总结与分析

文章目录 前言1. 十大经典排序算法分类2. 相关概念3. 十大经典算法总结4. 补充内容4.1 比较排序和非比较排序的区别4.2 稳定的算法就真的稳定了吗&#xff1f;4.3 稳定的意义4.4 时间复杂度的补充4.5 空间复杂度补充 结语 前言 排序算法是《数据结构与算法》中最基本的算法之一…

Vue 2和Vue 3区别以及实现原理

Vue 2 使用 Object.defineProperty Vue 2 的响应式系统通过Object.defineProperty来实现&#xff0c;它为对象的每个属性添加 getter 和 setter&#xff0c;以便追踪依赖并响应数据变化。 优点&#xff1a; 兼容性好&#xff1a;Object.defineProperty在所有现代浏览器中都得…

Linux 5.1 内核替换为 5.4 内核

文章目录 替换内核1. **下载并配置 Linux 5.4 内核**2. **使用旧内核的配置文件**3. **更新内核配置**4. **编译内核**5. **安装新内核**6. **更新引导加载程序**7. **重启系统**8. **验证内核版本**注意事项&#xff1a; 替换内核 将 Linux 5.1 内核替换为 5.4 内核。要进行这…

iPhone 16正式亮相:5款配色 群青色抢眼

9月10日消息&#xff0c;在今天凌晨1点的新品发布会上&#xff0c;苹果公司正式推出了备受期待的iPhone 16系列。 iPhone 16采用了独特的融色玻璃背板设计&#xff0c;提供五种配色&#xff0c;其中新增的群青色款引人注目&#xff0c;而广受期待的粉色款也重磅回归。 与此前传…

项目日志——日志落地模块的设计、实现、测试

文章目录 日志落地模块设计实现扩展实现测试 日志落地模块 设计 功能是&#xff0c;将格式化完成后的日志消息字符串&#xff0c;输出到指定的位置 支持将日志落地到不同的位置 标准输出指定文件滚动文件 滚动文件按照时间或者大小进行滚动切换&#xff0c;可以按照天数对…