01 Web基础与HTTP协议

news2025/7/19 0:36:19

1、域名和DNS

1.1 域名的概念

如果说一个主机,没有名字也可以完全用IP来代替,但是IP地址不好记忆。例如说,我们记一些网站的名称百度、新浪、搜狐等很好记,但是如果要去记百度的IP、新浪的IP、以及搜狐的IP地址,那将会很繁琐。

补充:当一个服务器部署出来之后,你需要给它一个IP地址,服务器有了IP地址之后,用户就可以访问了(拿名字或是拿IP都可以访问)。但是互联网上的一些服务器,它的IP地址真的就是固定的一个值吗?

不是的。如果说我有一个服务器运行了一段时间后需要维护了,那这个服务器得暂停吧,那如果你暂停了,别人怎么访问呢?

那你就需要第二个服务器来接替它得工作了,那这样一来IP地址就变了,变成第二个服务器得IP地址了。

所以有时候我们访问网站得IP地址可能不是唯一的(可能运行这个服务得主机有一很多),所以我们就引入了域名得概念。

有了域名之后,只需要在DNS里面改一改映射得条目就可以解决第二个主机IP地址更换得问题了(即还是这个名字,我只需在DNS文件里把这个名字所对应得IP地址换一换就行了)。

网络是基于TCP/IP协议进行通信和连接的。

注:每一台主机都有一个唯一的标识(固定的IP地址)——用来区分在网络中的成千上万个用户和计算机。

网络中的地址方案分为两套:IP地址系统、域名地址系统。

上面这两套地址系统是一一对应的关系,

因为IP地址是数字标识,使用时难以记忆和书写,因此在IP地址的基础上又发展出一种符号化的地址方案,来代替数字型的IP地址——域名

注:每个符号化的地址都与特定的IP地址相对应,这样使得在网络上的资源访问起来就容易的多了。

没有DNS技术之前,如果也想用名字去访问目标主机,这时候就可以用到Hosts文件了。

我们可以通过这个Hosts文件直接把你要解析的主机和其对应得IP地址写进去,写进去以后,那你这个主机就可以解析了。

补充:Windouws系统的Hosts文件位置:

在此电脑里,找到c盘,然后找到Windows这个目录,打开之后往下翻翻找到一个system32,点进去之后,再往下去翻找到一个叫drivers(驱动)的,然后打开之后再往下翻找到etc这个条目,打开之后就有个hosts文件。

双击打开该文件的时候不能直接打开,得先找一个文本编辑器,

Hosts文件是把名称和IP直接写死到文件里头得,这种Hosts文件得方式对于有大量的主机的名称需要去解析的时候,就显得不那么方便了。此时我们就可以部署一个DNS服务器,用来帮助我们解析大量的主机名称。

补充:Hosts文件和DNS系统它们的区别:

Hosts文件这种方式是自己找自己的hosts文件,该文件里写的有我要解析的条目,

DNS的工作原理是:当我要解析一个域名的时候,但我的hosts文件里没有写对应的名称,那就可以去找DNS服务器,让它来帮助我去解析。

所以,DNS适合更大型的互联网络,而hosts文件适合小规模的内部的局域网络。一般情况下,企业的内网不会搭建DNS服务器,就算要用解析内部主机的名称,一般也是用hosts这种方式。

1.2 域名的结构

注:根域由ICANN负责管理。根域下管理了若干个顶级域,每个顶级域的名称都代表了一类域名,适合不同的应用场景。

补充:顶级域的适用范围:

net:适用于网络、互联网的运营机构等使用

edu:适用于教育机构使用,如清华大学(它们的域名后面就是以edu结尾的)等

com:适用于商业机构,一般性的公司等,

gov:适用于政府的机构或部门使用,

mil:适用于军事部门使用

org:适用于协会、红十字会等一些非营利性组织

还有一些以国家名字作后缀的如cn——是中国的

(如我们常见的baidu.com中的baidu就是一个二级域)

当你有了二级域之后,就可以在二级域下面创建我的主机,那这个主机的名字是由该二级域的管理机构自行指定的。

一般情况下,顶级域它代表了某一个机构,某一个组织,在该机构下我们可以申请的是二级域(公司企业方),

注:顶级域是一个监管方,二级域才是企业方,在企业往下就是该企业的主机了。

在上图中,对于www.baidu.com来说,

前面的www是主机名;

标号baidu是这个域名的主体;

后面的com是该域名的后缀,代表这是一个国际域名,是顶级域名;

注:域名中的标号都是由英文字母和数字组成的;

每一个标号不超过63个字符;

不区分大小写字母;

标号中除了连字符-外不能使用其他的标点符号;

级别最低的域名写在左边,级别最高的域名写在右边。(完整的域名总共不超过255个字符)

1.3 域名的结构类型

根域:指的是根服务器——用来管理互联网的主目录;

顶级域:包括组织域和国家/地区域名。

注:对于一个完整的域名来说,域名最右侧的是国家/地区域名,

国家代码有两个字母组成的(如:.cn——是中国专用的顶级域名 .uk .de .jp等)

在国家/地区域名左侧的是组织域名(如:.com——用于商业机构、.net——用于网络组织、.org——用于非盈利组织等各种组织)

二级域名:是在顶级域名的域名,是指域名注册人的网上名称(例如:baidu、ibm、yahoo等)

FQDN:是指主机名加上全路径(主机名+.DNS后缀)

2、Hosts文件

Hosts文件——是一个存储计算机网络中节点信息的文件,它可以将主机名映射到相应的IP地址,从而实现DNS的功能。

注:Hosts文件可以由计算机的用户进行修改控制。

2.1 Hosts文件的作用

我们在网络上访问网站时,要首先通过DNS服务器把要访问的域名解析为IP地址后,计算机才能够对这个网络域名作网站进行访问。

如果说,我们在访问网站的时候,每个域名请求都需要等待域名服务器解析后才返回IP地址的信息,那么访问网络的效率就会降低(因为DNS域名解析和返回IP信息都需要时间)。

为了提高对经常访问的网络域名的解析效率,我们就可以通过在Hosts文件中建立域名和IP地址的映射关系来达到目的。

注:根据系统规定,在进行DNS请求之前,系统会先检查自己的Hosts文件中是否有这个网络域名映射关系。

如果有,则调用这个IP地址映射;

如果没有,再向已知的DNS服务器提出域名解析,也就是说,Hosts的请求级别比DNS服务器要高。

2.2 修改Hosts文件

在Linux系统中,Hosts文件存储在目录/etc下面,我们可以使用vim编辑器对其进行修改。

例如,用vim编辑器对/etc/hosts文件可以修改,加上下图的代码:

这样一来,当访问www.baidu.com时,发现本机hHosts文件中有映射的IP地址,则访问这个IP地址。

3、DNS

域名虽然便于人们记忆,但机器之间只能互相认识IP地址。

注:域名和IP地址之间的转换工作称为域名解析。

通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

域名解析要由专门的域名解析系统(即DNS系统)来完成。

补充:从主机名到IP地址的映射有两种方式:

  • 静态映射:每台设备上都配置有主机到IP地址的映射(只供本设备使用),由各设备独立维护自己的映射表;
  • 动态映射:建立一套DNS域名解析系统,只在专门的DNS服务器上配置主机到IP地址的映射。

注:网络上需要使用主机名通信的设备,首先需要到DNS服务器上查询主机所对应的IP地址。

补充:在解析域名时,可以首先采用静态域名解析的方法;

如果静态域名解析不成功,再采用动态域名解析的方法。

我们可以将一些常用的域名放入到静态域名解析表中,这样可以大大提高域名解析效率。

4、域名注册

每个域名都是独一无二的,不可重复的。

域名注册的步骤:

(1)准备申请资料

(2)寻找域名注册网站

(3)查询域名

(4)正式申请

(5)申请成功

补充:客户端想要用域名去访问服务器的流程:

递归查询用的是UDP的53的端口

5、网页与HTML

网页是构成网站的基本元素,是承载各种网站应用的平台。

注:网站是由网页组成的,如果说只有域名和虚拟主机而没有制作任何网页,那么客户仍旧

无法访问这个网站。

补充:网页是由HTML(超文本标记语言)编写的。

5.1 网页的概述

若干个网页就构成了一个网站。

网页是一个文件,它存放在世界某个角落的某一部计算机中,而这部计算机必须是与互联网相连的。

注:网页经由网址(URL)来识别与存取,它是互联网中的一页。

补充:网页包括的内容有:

  • 文本:是网页上最重要的信息载体与交流工具

注:网页中的主要信息一般都以文本形式为主。

  • 图像:在网页中具有提供信息并1展示直观形象的作用。

注:图像可以分为静态图像、动画图像:

静态图像:可能是图片或矢量图形。

图片的格式通常为GIF、JPEG或PNG等;矢量图形的格式通常为SVG或Flash

动画图像:通常动画为GIF和SVG

  • Flash动画:可以有效的吸引访问者更多的注意

5.2 HTML的概述

HTML叫做超文本标记语言(是一种规范、标准),

注:HTML通过标记符号来标记要显示的网页中的各个部分。

因为网页文件本身是一种文本文件,我们可以通过在文本文件中添加标记符,来告诉浏览器如何显示其中的内容。

如:文字如何处理、画面如何安排、图片如何显示等。

然后浏览器会按顺序阅读网页文件,并且根据标记符来解释和显示其标记的内容(对于那些书写出错的标记将不指出其错误,且不停止其解释执行过程)。

这样一来,开发者就只能通过显示效果来分析出错原因和出错部位了。

补充:不同的浏览器,对于同一标记符可能会有不完全相同的解释,所以就会出现不同的显示效果。

对于HTML文件,我们可以使用任何能够生成txt文件的文本编辑器来编辑,然后只需要修改文件名的后缀为.html或.htm即可生成超文本标记语言文件。

5.3 HTML的基本标签

(1)HTML的语法规则

HTML标签采用双标记符的形式,前后标记符对应(分别表示标记开始和结束),标记符中间的内容被标签描述。

注:前标记符由表示,但是结尾标记符多了一个/(由表示)

(2)HTML的文件结构

HTML文件最外层是由网页组成的,它包含有多个网页页面。

注:网站具有独立域名、独立存放空间的内容集合(这些内容可能是网页,也可能是程序或其他文件)

主页——是用户打开浏览器时默认打开的网页。

补充:当一个网站服务器收到一台电脑上网络浏览器的消息连接请求时,便会向这台计算机发送这个文档。

如果说,我们在浏览器的地址栏输入域名,而未指向特定的目录或文件时,默认浏览器会打开网站的首页。

5.4 Web1.0与Web2.0

Web1.0(是指早期互联网模式)——基本采用的是技术创新主导模式

Web2.0(相对于Web1.0是新的时代)——利用Web平台,由用户主导而生成的内容互联网产品模式(如博客、社交网站等)

注:Web2.0的特征有:

(1)用户分享:用户可以不受时间和地域的限制分享各种观点,用户也可以得到自己需要的信息;

(2)以兴趣为聚合点的社群:Web2.0聚集的是对于某个或者某些问题感兴趣的群体;

(3)开放的平台

5.5 静态网页与动态网页

(1)静态网页

在网站设计中,纯粹的HTML格式的网页通常被称为静态网页。

注:静态网页是标准的HTML文件,静态网页是网站建设的基础,它的扩展名是.html或.htm。

早期的网站一般都是由静态网页制作的。

补充:静态网页也可以出现各种动态的效果,如.GIF格式的动画、FLASH、滚动字幕等。

(2)动态网页

动态网页是指根静态网页相对的一种网页编程技术。

注:随着HTML代码的生成,

静态网页页面的内容和显示效果基本上就不会发生变化了(除非是修改页面代码);

动态页码则不然,页面代码虽然没有变,但是显示的内容却是可以随着时间、环境、数据库操作的结果而发生改变的。

补充:动态网页URL的后缀是.aspx .asp .jsp .php .perl .cgi等形式;

在动态网页中有一个标志性的符号是?

动态网页是基本的html语法规范与JAVA、PHP、C#等高级程序设计语言、数据库编程等多种技术的融合。

注:从某种意义上讲,凡是结合了HTML以外的高级程序设计语言和数据库技术进行的网页编程技术生成的网页都是动态网页。

(3)动态网页语言

早期的动态网页主要采用通用网关接口CGI技术,但由于编程困难、效率低下、修改复杂所以逐渐被新技术所替代。

目前常用的动态网页编程语言:

PHP:超文本预处理器,是当今Internet上最为火热的脚本语言,

JSP:JAVA服务器页面,是基于整个JAVA体系的Web开发技术

Python:是一种面向对象、跨平台的动态类计算机程序设计语言,最初被设计用于编写自动化脚本(Shell),但后来被用于独立的大型项目开发。

Ruby:是一种简单快捷的面向对象(面向对象程序设计)脚本语言,

6、HTTP协议

HTTP协议——超文本传输协议,是互联网上应用最为广泛的一种网络协议,所有的网页文件都必须遵守这个标准。

6.1 HTTP协议概述

HTTP协议采用了请求/响应模型,

6.2 HTTP方法

HTTP支持几种不同的请求命令,这些命令被称为HTTP方法。

注:每条HTTP请求报文都包含一个方法,即告诉服务器要执行什么动作其中包括获取一个页面、运行一个网关程序、删除一个文件等。

补充:最常用的获取资源的方法是GET、POST、HTTP,具体使用方法如下图:

GET方法采用URL后缀的形式,在URL上显示参数,而URL是有长度限制的,故不适合提交较大的数据。

GET与POST的对比如下图:

6.3 HTTP状态码

HTTP状态码是用以表示网页服务器HTTP响应状态的3位数字代码。当浏览器请求某一个URL时,服务器根据处理情况返回相应的处理状态。

HTTP状态码可以分为5大类,如下图所示:

注:生成环境常见状态码如下:

6.4 HTTP请求流程分析

用户在浏览器输入URL访问时,发起 HTTP请求报文(这个请求中包含请求行、请求头、请求体),

然后当服务器收到请求后会返回响应报文(包括状态行、响应头、响应体),具体流程图如下:

补充:(1)请求报文

请求行:由请求方法、URL、协议版本三部分组成;

请求头:为请求报文添加了一些附加信息,由名/值对组成,每行一对,名和值之间使用冒号分隔;

常见的请求头有:

注:空行:请求头部会有一个空行,表示请求头部结束,接下来为请求体,这一行非常重要,必不可少;

请求体:是请求提交的参数。

(2)响应报文

状态行:由协议版本、状态码和状态码描述三部分组成;

响应头:响应头与请求头类似,但为响应报文添加了一些附加信息。

常见的响应头部如下:

注:空行:响应头部的最后会有一个空行,表示响应头部的结束;

响应体:服务器返货相应的HTML数据,浏览器对其解析后显示页面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1899423.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于.NET开源游戏框架MonoGame实现的开源项目合集

前言 今天分享一些基于.NET开源游戏框架MonoGame实现的开源项目合集。 MonoGame项目介绍 MonoGame是一个简单而强大的.NET框架,使用C#编程语言可以创建桌面PC、视频游戏机和移动设备游戏。它已成功用于创建《怒之铁拳4》、《食肉者》、《超凡蜘蛛侠》、《星露谷物…

Blazor 逐键搜索并动态反馈到url

Blazor 逐键搜索并动态反馈到url 源码 前言: 今天打开了 spotify 网页版找歌, 突然发现这个功能很抓眼球,于是试试blazor能不能模仿一下. 1. 节省时间,直接用模板开搞 新建项目,使用 Bootstrap Blazor App 模板 , 命名为 b22dynamicURL BootstrapBlazor简介: BootstrapBlaz…

uni-app 使用Pinia进行全局状态管理并持久化数据

1.引言 最近在学习移动端的开发,使用uni-app前端应用框架,通过学习B站的视频以及找了一个开发模板,终于是有了一些心得体会。 B站视频1:Day1-01-uni-app小兔鲜儿导学视频_哔哩哔哩_bilibili B站视频2:01-课程和uni的…

PDF压缩工具选哪个?6款免费PDF压缩工具分享

PDF文件已经成为一种常见的文档格式。然而,PDF文件的体积有时可能非常庞大,尤其是在包含大量图像或复杂格式的情况下。选择一个高效的PDF压缩工具就显得尤为重要。小编今天给大家整理了2024年6款市面上反响不错的PDF压缩文件工具。轻松帮助你找到最适合自…

C-study(五).2

逻辑运算符 连接两个完整的关系表达式。 && 逻辑与,ab都为真时,a&&b的值真,其余时候假。 || 逻辑或,ab都为假时,a||b的值假,其余时候真。 ! 逻辑非、只需要一个运算对象,a真&a…

数据结构——(双)链表

文章目录 1. 定义 2. 双链表和单链表的区别 3. 代码示例 3.1 双链表节点和结构定义 3.2 初始化双链表 3.3 返回双链表的长度 3.4 在指定位置插入元素 3.5 在末尾插入元素 3.6 删除指定位置的元素并返回被删除的元素 3.7 删除末尾元素 3.8 获取指定位置的元素 3.9 修…

pandas 在可空列上聚合

pandas支持group_by进行聚合,有如下Excel 按照A B C D四列进行聚合,其中D列可空也就是nan import pandas as pd from pandas import ExcelFile from pathlib import Path import os import io import sys sys.stdout io.TextIOWrapper(sys.stdout.buf…

hdu物联网硬件实验3 按键和中断

学院 班级 学号 姓名 日期 成绩 实验题目 按键和中断 实验目的 实现闪灯功能转换 硬件原理 无 关键代码及注释 /* Button Turns on and off a light emitting diode(LED) connected to digital pin 13, when pressing a pushbutton attached…

【IT领域新生必看】探索Java中的对象创建:深入理解`new`与`clone`的对比

文章目录 引言什么是new关键字?使用new关键字的基本语法示例: 什么是clone方法?使用clone方法的基本语法示例: new与clone的区别内存分配与初始化调用方式适用场景性能 new关键字的优缺点优点缺点 clone方法的优缺点优点缺点 深入…

语音模块——LSYT201B模组(超详细)

写在前面: 在嵌入式的学习过程中,语音模块是必不可少的,无论是做项目组合还是单个测试,对于语音模块我们应当有一款合适的模块。今天给大家介绍的是一款质量好、成本低、功能齐全的语音模块——LSYT201B语音模组。它的技术支持详细…

DataWhaleAI夏令营 对话要素提取 Baseline2 微调进阶

Baseline2链接;基于星火大模型的群聊对话分角色要素提取挑战-baseline2 - 飞桨AI Studio星河社区 (baidu.com) 数据集再构造 因为数据集中的对话数据还是标离散的,我们可以使用大模型自己先对数据集做一次抽取,构建一个新的数据集 这里对原…

12.SQL注入-盲注基于时间(base on time)

SQL注入-盲注基于时间(base on time) boolian的盲注类型还有返回信息的状态,但是基于时间的盲注就什么都没有返回信息。 输入payload语句进行睡5秒中,通过开发这工具查看时间,如图所示,会在5秒钟后在执行,因此存在基于…

【SpringCloud】概述 -- 微服务入门

在Java的整个学习过程中,大家势必会听见一些什么分布式-微服务、高并发、高可用这些专业术语,给人的感觉很高级,有一种高深莫测的感觉。可以看一下这篇博客对这些技术架构的演变有一个初步的认识: 服务端⾼并发分布式结构演进之路-CSDN博客文…

数据结构——单向循环链表

文章目录 1. 概念 2. 区别 2.1 结构区别 2.2 访问方式区别 2.3 优缺点对比 3. 流程 4. 基本操作 5. 代码示例 1. 概念 单向循环链表是一种特殊的单链表,其中最后一个节点的后继指针指向头节点,形成一个环。单向循环链表适合用于需要循环访问数据…

UCOS-III 系统移植

1. 移植前准备 1.1 源码下载 UCOS-III Kernel Source: https://github.com/weston-embedded/uC-OS3.git Micriμm CPU Source : https://github.com/weston-embedded/uC-CPU.git Micriμm Lib Source: https://github.com/weston-embedded…

Intellj idea无法启动

个人电脑上安装的是2024.01版本的intellj idea作为开发工具,引入了javaagent作为工具包 但是在一次invaliad cache操作后,intellj idea就无法启动了,双击无响应。 重装了idea后也无效(这个是有原因的,下面会讲&#…

java项目总结4

1.正则表达式 用于验证字符串是否满足自己所需要的规则。方法:matches 注意:\在Java中有特殊涵义,是将其它的意思本来化,假设"是用来引用字符串的,但是你如果想要输出它,那是不是就变成了System.out…

机器学习---线性回归

1、线性回归 例如:对于一个房子的价格,其影响因素有很多,例如房子的面积、房子的卧室数量、房子的卫生间数量等等都会影响房子的价格。这些影响因子不妨用 x i x_{i} xi​表示,那么房价 y y y可以用如下公式表示: y …

基于Qt实现的PDF阅读、编辑工具

记录一下实现pdf工具功能 语言:c、qt IDE:vs2017 环境:win10 一、功能演示: 二、功能介绍: 1.基于saribbon主体界面框架,该框架主要是为了实现类似word导航项 2.加载PDF放大缩小以及预览功能 3.pdf页面跳转…

01--SpringAI接入大模型,chatgpt,Java接入人工智能大模型

01–SpringAI接入大模型,chatgpt,Java接入人工智能大模型 文章目录 01--SpringAI接入大模型,chatgpt,Java接入人工智能大模型一、准备工作?①:环境准备 二、创建一个springAI项目①:创建一个根项目②:创建一个SpringAI模块01.解决…