Web基础与HTTP协议

本文深入解析域名系统、HTML基本概念与网页结构,以及HTTP协议的不同版本与请求方式,带你理解网页访问背后的逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

引言

一、域名概述

1.1.域名的概念

1.2.早期使用Host文件解析域名

1.3.DNS(Domain Name System 域名系统)

1.4.域名注册

1.5.DNS解析

1.5.1.DNS解析的三种方式

二、网页

2.1 网页基本概念

2.2 HTML

2.2.1.HTML超文本标记语言

2.2.2.HTML文档的结构

2.2.3.网页基本标签

三、Web概述

3.1 Web概述

3.2 Web1.0 vs Web2.0

3.3.静态页面与动态页面概述

(1) 静态页面定义

(2)静态页面特点

(3) 动态页面

(4) 动态页面特点

3.4.动态网页和静态网页的区别

四、HTTP协议概述

4.1.HTTP协议的版本

4.2.HTTP1.0和HTTP1.1之间的区别

4.3.HTTP 请求格式(GET / POST 方式)

4.4.GET与POST区别

4.5.HTTP状态码

4.6.常见的HTTP状态码

4.7.HTTP请求的过程

五、总结 

引言

你有没有想过,我们平时是如何访问页面呢?让我们一起来走进网页的世界吧!

一、域名概述

1.1.域名的概念

IP地址不易记忆

1.2.早期使用Host文件解析域名

  • 主机名称重复
  • 主机维护困难

1.3.DNS(Domain Name System 域名系统)

  • 分布式
  • 层次性

1.4.域名注册

  • 域名注册是Internet中用于解决地址对应问题的一种方法。
  • 遵循先申请先注册原则。
  • 域名注册步骤。

1.5.DNS解析

1.5.1.DNS解析的三种方式

①  /etc/hosts

linux系统中负责快速解析的文件,包含了ip与主机名的映射关系,在没有DNS服务器的情况下,使用本地/etc/hosts完成解析/映射,实现快速访问。

主要用于主机之间(IP和主机名)的映射/解析关系
192.168.226.128 master
192.168.226.129 node1
192.168.226.130 node2

② /etc/resolv.conf
DNS客户端配置文件,主要用于设置DNS服务器的IP和域名,还包含了主机域名的搜索顺序等等,这个文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。

主要用与匹配DNS服务器
nameserver 114.114.114.114  //第三方运营商
nameserver 8.8.8.8               //谷歌
nameserver 218.2.135.1       //江苏南京

③  网卡配置文件

/etc/sysconfig/network-scripts/ifcfg-ens33

我们也可以在网卡配置文件中定义DNS1= DNS2=

生效顺序 1 hosts文件 2 网卡配置文件 3 /etc/resolv.conf

二、网页

2.1 网页基本概念

1.网页
(1)纯文本格式文件
(2)编写语言为HTML

2.网站
由一个一个页面构成的,是多个网页的结合体。

主页:打开网站后出现的第一个网页称为网站主页(或首页)。

3.域名
浏览网页时输入的网址。

4.HTTP/HTTPS
用来传输网页的通信协议(是否加密),是一种通讯/交互的标准/规范。

5.URL
是一种万维网寻址系统。

6.HTML
用来编写网页的超文本标记语言。

7.超链接
超链接是将网站中不同网页链接起来的功能。

8.发布
将制作好的网页上传到服务器供用户访问的过程。

2.2 HTML

2.2.1.HTML超文本标记语言

Hyper Text Markup Language
网页的“源码”
浏览器:“解释和执行”HTML源码的工具

2.2.2.HTML文档的结构

HTML网页
头部部分
标题部分
主体部分
网页内容,包括文本、图像等

示例:

<html>
<head>
<title>我的第一个网页 </title>
</head>

<body >
       Hello World!
</body>

</html>

#头标签中常用标签:
标签				描述
<title>				定义了文档的标题
<base>				定义了页面链接标签的默认链接地址
<link>				定义了一个文档和外部资源之间的关系
<meta>				定义了 HTML 文档中的元数据
<script>			定义了客户端的脚本文件
<style>				定义了 HTML 文档的样式文件

#内容标签中常用标签
标签				描述
<table>				定义一个表格
<tr>				定义了表格中的一行
<td>				定义了表格中某一行的一列
<img>				定义了一个图像
<a>					定义了一个超链接
<p>					定义了一行
<br>				定义了换行
<font>				定义了字体

2.2.3.网页基本标签

网页摘要信息的作用
有利于浏览器解析
有利于搜索引擎搜索

<title>标签		#标题
<meta>标签		#元标志

标题标签类型:
行控制相关标签
范围标签
图像标签
超链接标签
特殊符号

三、Web概述

3.1 Web概述

Web(World Wide Web)即全球广域网,也称为万维网。一种分布式图形信息系统,建立在Internet上的一种网络服务。

3.2 Web1.0 vs Web2.0

Web1.0

  • 以编辑为特征,网站提供给用户的内容是编辑处理后的,然后用户阅读网站提供的内容。
  • 这个过程是网站到用户的单向行为。

Web2.0

  • 更注重用户的交互作用,用户既是网站内容的消费者(浏览者),也是网站内容的制造者。
  • 加强了网站与用户之间的互动,网站内容基于用户提供,网站的诸多功能也由用户参与建设,实现了网站与用户双向的交流与参与。

Web2.0特征

  • 用户分享、以兴趣为聚合点的社群、开放的平台,活跃的用户。

3.3.静态页面与动态页面概述

(1) 静态页面定义

① 静态网页是标准的HTML文件。
② 扩展名是.htm、.html。
  例如文本、图像、声音、Flash动画、客户端脚本和ActiveX控件及Java小程序等。
③ 是网站建设的基础,早期网站一般都由静态网页制作。
④ 没有后台数据库、不含程序和不可交互的网页。
⑤ 相对更新起来比较麻烦,适用于一般更新较少的展示型网站。

(2)静态页面特点

① 每个静态网页都有一个固定的URL,且URL以.htm、.html、.shtml等常见形式为后缀,而不含有“?”
② 网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页都是保存在网站服务器上的。
③ 静态网页的内容相对稳定,容易被搜索引擎检索。
④静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难。
⑤ 静态网页的交互性较差,在功能方面有较大的限制。
⑥ 页面浏览速度迅速,过程无需连接数据库,开启页面速度快于动态页面。

(3) 动态页面

① 网页 URL不固定,能通过后台与用户交互。
② 在动态网页网址中有一个标志性的符号——“?”。
③ 常用的语言有PHP、JSP、Python、Ruby等。

(4) 动态页面特点

① 交互性
网页会根据用户的要求和选择而动态改变和响应,将浏览器作为客户端界面,这将是今后WEB发展的大势所趋。
② 自动更新
无须手动地更新HTML文档,便会自动生成新的页面,可以大大节省工作量。
③ 因时因人而变
当不同的时间,不同的人访问同一网址时会产生不同的页面。

3.4.动态网页和静态网页的区别

1、交互性

  • 静态网页由于很多内容都是固定的,在功能方面有很大的限制,所以交互性较差。
  • 动态网页则可以实现更多的功能,如用户的登录、注册、查询等。

2、更新与维护

  • 静态网页内容一经发布到网站服务器上,无论是否有用户访问,这些网页内容都是保存在网站服务器上的。如果需要修改某个网页的内容,可以直接找到该文件修改其源码,然后保存即可。静态网页没有数据库的支持,当网站信息量很大的时候,网页的生成和维护都很困难。
  •  动态网页可以根据不同的用户请求,时间或者环境的需求动态的生成不同的网页内容,并且动态网页一般以数据库技术为基础,可以大大降低网站维护的工作量。

3、响应速度

  • 静态网页内容相对固定,且不需要连接数据库,响应速度较快,因此容易被搜索引擎检索,相对于动态页来说,静态页对搜索引擎更友好。
  • 动态网页实际上并不是独立存在于服务器上的网页文件,只有当用户请求时服务器才返回一个完整的网页,其中涉及到数据的连接访问和查询等一系列过程,所以响应速度较差于静态页。

4、访问特点

  • 静态网页的每个网页都有一个固定的URL,且网页URL以.htm、.html、.shtml等常见形式为后缀,而不含有“?”,利于搜索引擎抓取并收录。
  • 动态网页中的“?”对搜索引擎检索存在一定的问题,搜索引擎一般不可能从一个网站的数据库中访问全部网页,或者出于技术方面的考虑,搜索之中不去抓取网址中“?”后面的内容。

四、HTTP协议概述

  • HTTP(超文本传输协议HyperText Transfer Protocol)协议是互联网上应用最为广泛的一种网络协议,它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。
  • HTTP/HTTPS是应用层上的协议,建立在传输层TCP之上,客户端通过与服务端进行TCP连接(三次握手),之后发送HTTP请求与接收HTTP响应都是通过访问Socket接口来调用TCP协议实现。
  • HTTP 是一种无状态 (stateless) 协议, HTTP协议本身不会对发送过的请求和相应的通信状态进行持久化处理(存储,保存)。这样做的目的是为了保持HTTP协议的简单性,从而能够快速处理大量的事务, 提高效率。

4.1.HTTP协议的版本

HTTP 0.9:已过时
⭐HTTP 1.0:
⭐HTTP 1.1
HTTP 2.0

4.2.HTTP1.0和HTTP1.1之间的区别

① 缓存处理
在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

② 带宽优化及网络连接的使用
HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。

③ 错误通知的管理
在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

④ Host头处理
在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。

⑤ 长连接
HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。

4.3.HTTP 请求格式(GET / POST 方式)

(1)GET 方式
① 请求行
请求的方式
请求的资源路径
请求的版本协议号

② 请求头(描述信息/标准化信息)
Accept:客户端可以接受的数据类型
Accept-Language:客户端可以接受的语言类型
User-Agent:浏览器的信息
Accpect-Encoding:客户端可以接受的编码格式
Host:表示请求的ip和端口号
Connection:告诉服务器请求连接如何处理
Keep-Alive:通知服务器回传数据不要马上关闭,保持一小段的连接
Closed:马上关闭

(2)POST 请求方式
① 请求行
请求的方式
请求的资源路径
请求的协议的版本号

② 请求头

Accept:客户端可以接受的数据类型
Accept-Language:客户端可以接受的语言类型
Referer:表示请求发起时,浏览器地址栏中的地址
User-Agent:浏览器的信息
Content-Type:发送的数据类型
Content-Length:发送的数据长度

③ 请求体:就是发送给服务器的数据

4.4.GET与POST区别

①区别一:语义上的区别
Get向服务器请求数据,依照HTTP协议,get 是用来请求数据。
Post向服务器发数据,依照HTTP协议,Post的语义是向服务器添加数据,也就是说按照Post的语义,该操作是会修改服务器上的数据。

②区别二:服务器请求的区别
Get请求是可以被缓存,示例:
访问百度,访问的方式就是GET,此时访问后的内容会缓被存在浏览器中,短时间再次访问,其实是拿到的浏览器中的缓存内容,另外Get请求只能接收ASCII码的回复,Post请求是不可以被缓存的。对于Post方式提交表单,刷新页面浏览器会弹出提示框“是否重新提交表单”,Post可以接收二进制等各种数据形式,所以如果要上传文件一般用Post请求。

③区别三:参数放请求头和请求体的差别
Get请求通常没有请求体(当然这也是可以由程序猿心情改变的),在TCP传输中只需传输一次(而不是一个包),所以Get请求效率相对高。
Post请求将数据放在请求体中,而实际传输中,会先传输完请求头,再传输请求体,是分为两次传输的(而不是两个包)。Post请求头会比Get更小(一般不带参数),请求头更容易在一个TCP包中完成传输,更何况请求头中有Content-Length的标识,可以更好地保证Http包的完整性。

4.5.HTTP状态码

当使用浏览器访问某一个URL,会根据处理情况返回相应的处理状态
通常正常的状态码为2xx,3xx(如200)
如果出现异常会返回4xx,5xx(如404)
 
状态码首位	已定义范围		分类
1xx			100-101			信息提示
2xx			200-206			成功
3xx			300-305			重定向
4xx			400-415			客户端错误
5xx			500-505			服务器错误

4.6.常见的HTTP状态码

消息		描述
200			OK				    请求成功(其后是对GET和POST请求的应答文档)
301		Moved Permanently	    请求的永久页面跳转
403		Forbidden			    禁止访问该页面
404		Not Found			    服务器无法找到被请求的页面
500		Internal Server Error	内部服务器错误
502		Bad Gateway	   		    无效网关
503 	Service Unavailable    	当前服务不可用
504 	Gateway Timeout		    网关请求超时

4.7.HTTP请求的过程

###### http协议请求流程分析简洁版
用户输入URL(地址链接)
客户端获取到端口及主机名后,客户端利用DNS解析域名,首先客户端的浏览器会先找自身的缓存,如果有解析结束。
如果没有客户端会去找host文件,如果host文件没有的话,客户端会去找本地的DNS缓存服务器,本地的DNS缓存服务器没有的话,缓存服务器会去找根域,根域没有,会返回一个.com.然后本地缓存服务器会去找顶级域,顶级域没有的话会返回baidu.com.,然后本地缓存服务器会去找二级域,二级域解析完后会返回客户端。
客户端解析到IP地址后会通过TCP的三次握手与服务器建立连接

###### http协议请求流程分析详细版

 用户输入URL(地址链接)(http://www.baidu.com:80/tools.html)客户端获取到端口及主机名后,客户端利用DNS解析域名,首先客户端的浏览器会先找自身的缓存,如果有解析结束,如果没有客户端会去找host文件,如果host文件没有的话,客户端会去找本地的DNS缓存服务器,本地的DNS缓存服务器没有的话,缓存服务器会去找根域,根域没有,会返回一个.com.然后本地缓存服务器会去找顶级域,顶级域没有的话会返回baidu.com.,然后本地缓存服务器会去找二级域,二级域解析完后会返回客户端。    

   客户端解析到IP地址后会通过TCP的三次握手与服务器建立连接,首先客户端向服务器发送请求连接报文,SYN=1初始序号seq为x,这时客户端进入SYN-SENT状态,服务器确认请求报文ACK=1,SYN=1,确认序号ACK=X+1,服务器产生的初始序号seq=y,回复客户端确认连接,此时服务器进入SYN-RCVD状态,客户端接受后确认报文ACK=1,ACK=y+1,客户端又重组序号为x+1。TCP连接已经建立,客户端进入ESTABLISHED 状态,当服务器收到客户端的确认后,也会进入 ESTABLISHED 状态。客户端连接到IP地址,发送httpGET的请求,从服务器读取http响应。

   之后断开连接时,需要通过TCP的四次挥手完成,客户端向服务器发送断开连接请求报文,FIN=1,ACK=1,序号为u,客户端处于FIN—WAIT-1(终止等待1)状态,服务器确认报文ACK=1,确认序号为ACK=u+1,服务器的序号为v,回复客户端,服务器服务端处于CLOSE—WAIT(关闭等待)状态,客户端接受确认报文ACK=1,确认序号ACK=v+1,客户端重组序号为seq=u+1,客户端处于FIN—WAIT-2(终止等待2)状态,然后服务器也想让客户端断开连接,就发送了断开连接请求,FIN=1,ACK=1,服务器重组序号为w,服务器服务端处于LAST—ACK(最后确认)状态,客户端接受后确认报文ACK=1.确认序号为ACK=w+1,客户端序号为u+1,客户端进入CLOSED(时间等待)状态,等待最长报文段寿命2*MSL,服务器确认后,立即进入关闭状态。然后进行关闭连接。

五、总结 

1、域名空间结构

2、HTML文档结构

3、网页基本标签

4、Web1.0与Web2.0区别

5、Post与Get方法区别

6、HTTP协议报文格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值