web基础与HTTP协议


前言

随着互联网的飞速发展,企业信息化应用大多已采用网页的形式构建,掌握网页的相关的知识和 HTTP 的请求流程,是掌握互联网技术的第一步。


一、DNS与域名

1、网络是基于TCP/IP协议进行通信和连接的,每一台主机都有一个唯一的标识(固定的IP地址),用以区别在网络上成千上万个用户和计算机。网络在区分所有与之相连的网络和主机时,均采用一种唯一、通用的地址格式,即每一个与网络相连接的计算机和服务器都被指派一个独一无二的地址

2、为了保证网络上每台计算机的IP地址的唯一性,用户必须向特定机构申请注册,分配IP地址
网络中的地址方案分为两套:IP地址系统域名地址系统。这两套地址系统其实是一一对应的关系
由于IP地址是数字标识,使用时难以记忆和书写,因此在IP地址的基础上又发展出一种符号化的地址方案,来代替数字型的IP地址

1、域名的概念

1、网络是基于 TCP/IP 协议进行通信和连接的,每一台主机都有一个唯一的固定的 IP 地址,以区别于网络上成千上万个用户和计算机。
2、网络中的地址方案分为两套:IP 地址系统和域名地址系统,两套地址系统是一一对应的。
3、由于 IP 地址是数字标识,使用时难以记忆和书写,因此在IP地址的基础上发展出一种符号化的地址方案,来代替数字型的IP地址。
4、每个符号化的地址都与特定的 IP 地址对应,这样网络上资源访问起来就比较容易的多,这个与网络上的数字型
IP地址相对应的字符型地址,就是域名。

2、DNS解析

DNS解析方式:三种
①/etc/hosts
linux系统中负责快速解析的文件,包含了IP与主机名的映射关系,在没有DNS服务器的情况下,使用本地/etc/hosts完成解析/映射,实现快速访问
主要用于主机之间(IP和主机名)的映射/解析关系
②/etc/resolv.conf
DNS客户端配置文件,主要用于设置DNS服务器的IP和域名,还包含了主机域名的搜索顺序等等,这个文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。
主要用于匹配DNS服务器
③/etc/sysconfig/network-scripts/ifcfg-ens33
可以在网卡配置文件中定义DNS1= DNS2=

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

二、域名

1.定义

标识一组主机并提供它们的有关信息的树形结构(主要确定了根在哪,就可以确定每个分支)

域名服务器(分布式,每台主机维护一部分)
①保持和维护域名空间的程序
②相应解析器的请求

解析端(客户端)
向DNS服务器发出请求的设备

2.域名注册

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

域名申请资料

准备申请资料 ——> 寻找域名注册网站 ——> 查询域名 ——> 正式申请 ——> 申请成功

三、网页(HTTP/HTTPS)

1、网页的基本概念

①网页
纯文本格式文件
编写语言为HTML
在用户的浏览器中被"翻译"成网页形式显示出来

②网站
由一个一个页面构成的,是多个网页的结合体
主页
打开网站后出现的第一个网页称为网站主页(或首页)

③域名
浏览网页时输入的网址

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

⑤URL
是一种万维网寻址系统

⑥HTML
用来编写网页的超文本标记语言

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

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

HTML

①HTML超文本标记语言
Hyper Text Markup Language
网页的"源码"
浏览器:"解释和执行"HTML源码的工具

②HTML文档的结构
HTML网页
头部部分
标题部分
主体部分
网页内容,包括文本,图像等

四、Web

1、Web的概述

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

2、Web1.0与Web2.0

Web1.0
以编辑为特征,网站提供用户的内容是编辑处理后的,然后用户阅读网站提供的内容
这个过程是网站到用户的单向行为
Web2.0
更注重用户的交互作用,用户即使网站内容的消费者(浏览者),也是网站内容的制造者
加强了网站与用户之间的互动,网站内容基于用户提供,网站的诸多功能也由用户参与建设,实现了网站与用户双向的交流与参与

Web2.0特征
用户分享,以兴趣为聚合点的社区、开发的平台、活跃的用户

3、静态页面与动态页面

1、静态页面定义

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

2、静态页面特点

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

3、动态页面

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

4、动态网页特点

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

静态、动态区别

1、交互性
2、信息更新(认为、动态-自动)
3、当不同的时间、访问速度、静态快、动态相对慢
4、页面的打开、访问速度、静态快、动态相对较慢

五、HTTP协议概述

1、HTTP协议简介、版本

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

然而,在许多应用场景中,我们需要保持用户登陆的状态或记录用户购物车中的商品。由于HTTP是无状态协议,所以必须引入一些技术来记录管理状态,例如Cookie。

HTTP协议的版本
HTTP 0.9 以过时
HTTP 1.0
HTTP 1.1
HTTP 2.0

HTTP1.0与HTTP2.0的区别

缓存处理

在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每次请求都要创建连接的缺点。

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

HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法,每条 HTTP 请求报文都包含一个方法,告诉服务器要执行什么动作,包括获取一个页面、允许一个网关程序、删除一个文件等。
其中,最常用的方法是 GET、POST,如下:

方法 描述
GET 请求获取Request-URI s所标识的资源
PUT 请求服务器储存一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
POST 在Request-URI所标识的资源后附加的新的数据
HEAD 请求获取由 Request-URI所标识的资源的响应信息报头

GET方式

①请求行

请求的方式
请求的资源路径
请求的版本协议号

②请求头

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

POST 请求方式

①请求行

请求的方式
请求的资源路径
请求的协议版本号

②请求头

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

③请求头

就是发送给服务器的数据

区别

1、语义上的区别

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

2、服务器请求的区别

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

3、参数放请求头和请求体的差别

Get请求通常没有请求体(当然这也是可以由程序猿心情改变的),在TCP传输中只需传输一次(而不是一个包),所以Get请求效率相对高。

Post请求将数据放在请求体中,而实际传输中,会先传输完请求头,再传输请求体,是分为两次传输的(而不是两个包)。Post请求头会比Get更小(一般不带参数),请求头更容易在一个TCP包中完成传输,更何况请求头中有Content-Length的标识,可以更好地保证Http包的完整性。

HTTP状态码

当使用浏览器访问某一个URL,会根据处理情况返回相对应的处理状态
通常正常的状态码为2xx,3xx(如200)
如果出现异常会返回4xx,5xx(如404)

状态码首位 已定义范围 分类
1xx 100-101 信息提示
2xx 200-206 成功
3xx 300-305 重定向
4xx 400-415 客户端错误
5xx 500-505 服务器错误

常见的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 网关请求超时

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340