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数据,浏览器对其解析后显示页面。