域名是互联网上用于识别和定位网站或电子邮件服务器等资源的字符串。它通常由一个或多个子域名和一个顶级域名组成,例如:www.example.com。
简单来说,它就像一个互联网地址簿,用来帮助人们更容易地访问网站或发送电子邮件。通过域名,用户可以避免输入IP地址这个难度颇高且不易记忆的数字序列。
域名系统(DNS)是互联网的基础设施之一,它通过将人们可读的域名转换为计算机可读的IP地址,使互联网通信更加便捷和可靠。所有的域名都必须进行注册,而域名注册是由专门的域名注册机构来提供服务的。
扩展 面试点 01
1、阿里云域名怎么申请?
申请 查询重名 给钱20-60块 备案(阿里云)拍照(负责人拍照人) 10-20天 申请之后就可以解析和用 但是如果有问题 会被封
DNS解析是指将人类可读的域名转换成计算机可用的IP地址的过程,常见的DNS解析方式有以下三种:
1. 递归查询(Recursive Query):递归查询是一种由本地DNS服务器负责向根域名服务器不断查询,直到查询到目标域名的IP地址。递归查询可能会请求多个DNS服务器的响应,并将结果缓存到本地DNS服务器中。
2. 迭代查询(Iterative Query):迭代查询是一种分步查询的方式。在这种方式下,本地DNS服务器会向根域名服务器询问下一级DNS服务器的地址,然后向该服务器进一步的查询。本地DNS服务器不会请求多个响应,而是依次向相关的DNS服务器逐一发出查询请求。
3. 反向查询(Reverse Query):反向查询是一种通过IP地址确定域名的方式。在这种方式下,服务器将IP地址反向解析为一个与域名相关的名称。这种方式通常只在需要查找特定服务器的名称时使用,而不是为每个服务器创建适当的名称。
基于Linux系统下常用的DNS解析方式,采用了/etc/hosts、/etc/resolv.conf和网卡配置文件等多种方式。
以上述方式的顺序进行DNS解析:
1. 首先,系统会查看本地/etc/hosts文件,如果目标域名在该文件中,则直接返回映射的IP地址。
2. 如果目标域名不在本地/etc/hosts文件中,系统将会查看网卡配置文件中的DNS服务器配置,使用其中第一个DNS服务器地址向其发出查询请求,如果该DNS服务器能够解析该域名,则返回IP地址。
3. 如果第一个DNS服务器无法解析该域名,系统将会使用/etc/resolv.conf文件中列出的下一台DNS服务器地址向其发出查询请求,如果该DNS服务器能够解析该域名,则返回IP地址。
4. 如果在/etc/resolv.conf中列出的所有DNS服务器地址都无法解析该域名,则会返回解析失败的信息。
1 hosts文件 2 网卡配置文件 3 /etc/resolv.conf
① 保持和维护域名空间的程序
② 响应解析器的请求
① 根域 位于域名空间最顶层,一般用一个 “.” 表示
其他所有的域名都是根域的子域名。根域包含所有TLD(顶级域名),例如.com、.org、.net等等。
② 顶级域 一般代表一种类型的组织机构或国家地区(主要有此两种类型构成),如 net(网络公司)、com(商业)、org(民间团体组织)、edu(教育)、gov(政府)、mil(军事)、cn(中国)、jp(日本)、hk(中国香港)
③ 二级域 用来标明顶级域内的一个特定的组织,国家顶级域下面的二级域名由国家网络部门统一管理,如 .cn 顶级域名下面设置的二级域名:.com.cn、.net.cn、.edu.cn …
④ 子域 用来标明顶级域内的一个特定的组织,国家顶级域下面的二级域名由国家网络部门统一管理,如 .cn 顶级域名下面设置的二级域名:.com.cn、.net.cn、.edu.cn …
主机 主机位于域名空间最下层,就是一台具体的计算机,如 www、mail、都是具体的计算机名字,可用www.sina.com.cn.、mail.sina.com.cn. 来表示,这种表示方式称为 FQDN (完全合格域名),也是这台主机在域名中的全名
域名注册是Internet中用于解决地址对应问题的一种方法 遵循先申请先注册原则 域名注册步骤: 准备申请资料————》寻找域名注册网站————》查询域名————》正式申请————》申请成功
客户端输入域名,经域名解析成IP地址,在与服务端建立数据传输之前,要先建立TCP连接(三次握手),然后向服务端发送http请求,包括请求的方法、内容相应的版本号,服务端收到后进行相应,包括状态码,也就是请求的结果,完成一次客户端的http请求后断开TCP连接(四次挥手),此时服务器处于TCP连接的time_wait状态。
HTTP 已经演化出了很多版本,它们中的大部分都是向下兼容的。
HTTP/0.9:已过时。只接受 GET 一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持 POST 方法,所以客户端无法向服务器传递太多信息。
HTTP/1.0:这是第一个在通讯中指定版本号的 HTTP 协议版本,至今仍被广泛采用,特别是在代理服务器中。
HTTP/1.1:引入持续连接,即TCP连接默认不关闭,可以被多个请求复用,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。(每次http连接都要进行三次握手,产生很多报文,造成资源浪费)
HTTP/2.0:完全多路复用,在一个连接里,客户端和浏览器都可以同时发送多个请求和回应,而且不用按照顺序一一对应。引入头部信息压缩机制。支持服务端推送,允许服务器未经过请求,主动向客户端发送资源(例如打开浏览器时的广告)。
HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法(HTTP method)。每条 HTTP 请求报文都包含一个方法, 告诉服务器要执行什么动作,包括:获取一个页面,运行一个网关程序,删除一个文件等。最常用的获取资源的方法是 GET、POST。
HTTP | 描述 |
---|---|
GET | 对服务器资源获取的简单请求 |
PUT | 向服务器提交数据,以修改数据 |
DELETE | 删除服务器上的某些资源 |
POST | 用于发送包含用户提交数据的请求 |
HEAD | 请求页面的首部,获取资源的元信息 |
GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。
与GE不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。
POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。
DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作
GET和POST比较
GET方法:从指定的服务器上获得数据
GET请求能被缓存
GET请求会保存在浏览器的浏览纪录里
GET请求有长度的限制
主要用于获取数据
查询的字符串会显示在URL后缀中,不安全,比如http://www.test.com/a.php?Id=123
POST方法:提交数据给指定服务器处理
POST请求不能被缓存
POST请求不会保存在浏览器的浏览纪录里
POST请求没有长度限制查询的字符串不会显示在URL中,比较安全
HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码,当浏览器请求某一URL时,服务器根据处理情况返回相应的处理状态。
通常正常的状态码为2xx,3xx(如200),如果出现异常会返回4xx,5xx(如404)。
状态码首位 | 已定义 范围 | 分类 |
---|---|---|
1xxx | 100-101 | 信息提示 |
2xxx | 200-206 | 成功 |
3xxx | 300-305 | 重定向 |
4xxx | 400-415 | 客户端错误 |
5xxx | 500-505 | 服务器错误 |
常见状态码
状态码 | 功能描述 |
---|---|
200 | 一切正常 |
301 | 永久重定向 |
302 | 临时重定向 |
401 | 用户名或密码错误 |
403 | 禁止访问(客户端IP地址被拒绝) |
404 | 访问文件不存在 |
414 | 请求URI头部过长 |
500 | 服务器内部错误 |
502 | 无效网关 |
503 | 当前服务不可用 |
504 | 网关请求超时 |
用户在浏览器输入URL访问时,发起HTTP请求报文,请求中包括请求行、请求头、请求体,服务器收到请求后返回响应报文,包括状态行、响应头、响应体。
请求行:请求行由请求方法、URL以及协议版本三部分组成。
请求头:请求头为请求报文添加了一些附加信息,由“名/值“对组成,每行一对,名和值之间使用冒号分隔。
空行:请求头部的最后会有一个空行,表示请求头部结束,接下来为请求体,这一行非常重要,必不可少。
请求体:请求体是请求提交的参数,GET方法已经在URL中指明了参数,所以提交时没有数据。osT方法提交的参数在请求体中。
常用的请求头
请求头 | 描述 |
---|---|
HOST | 接受请求的服务器地址,可以是IP:端口号,也可以是域名 |
User-Agent | 发送请求的应用程序名称 |
Connection | 指定与连接相关的属性,如 connection:Keep-Alive |
Accept-Charset | 通知服务端可以发送的编码格式 |
Accept-Encoding | 通知服务端可以发送的数据压缩格式 |
Accept-Language | 通知服务端可以发送的语言 |
状态行:状态行由协议版本,状态码,状态码描述三部分组成。
响应头:响应头与请求头部类似,为响应报文添加了一些附加信息。
空行:响应头部的最后会有一个空行,表示响应头部结束。
响应体:服务器返回的相应HTML数据,浏览器对其解析后显示页面。
常见响应头
响应头 | 描述 |
---|---|
Server | 服务器应用程序软件的名称和版本 |
Content-Type | 响应正文的类型(是图片还是二进制字符串) |
Content-Length | 响应正文长度 |
Content-Charset | 响应正文使用的编码 |
Content-Encoding | 响应正文使用的数据压缩格式 |
Content-Language | 响应正文使用的语言 |