端口:
http 80
https 443
ftp 20 21
telnet 23
ssh 22
DNS 53
DHCP 67 68
mail smtp 25
pop3 110
ladp 389 域控制器
3306 mysql 关系型
sqlserver 1433 c#
oracle 1521
3389 windows 远程连接端口
redis nosql 6379
编码介绍:
主要有两类: 一类为非Unicode编码;一类是Unicode编码;
常见编码种类:
1、ASCII码:
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)
是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。
常见换算单位:
bit 位,计算机中最小的表示单位
8bit = 1bytes 字节,最小的存储单位,1bytes缩写为1B
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
2、GBK 和 GB2312
对于我们来说能在计算机中显示中文字符是至关重要的,然而ASCII表里连一个偏旁部首也没有。
所以我们还需要一张关于中文和数字对应的关系表。一个字节只能最多表示256个字符,要处理中文显然一个字节是不够的,所以我们需要采用两个字节来表示,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
3、Unicode
但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。
现代操作系统和大多数编程语言都直接支持Unicode。
现在,分析一下ASCII编码和Unicode编码的区别:
ASCII编码是1个字节,而Unicode编码通常是2个字节。
字母A用ASCII编码是十进制的65,二进制的01000001;
字符0用ASCII编码是十进制的48,二进制的00110000;
4,、UTF-8
基于节约的原则,出现了把Unicode编码转化为“可变长编码”的UTF-8编码。
UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间了。如下所示:
5、总结
从上面的表格还可以发现,UTF-8编码有一个额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
tabindex
class
id
DNS原理:
简介:DNS域名解析服务器
DNS(Domain Name System,域名系统),实质上就是域名和IP地址相互映射的联机分布式数据库系统;
作用:根据域名查出IP地址;
例子:若要访问一个地址为www.baidu.com的网页,则首先要通过dns查出他的IP地址是xxx.xxx.xxx.xx ,才得以访问;
域名服务器:
根域名服务器:(root name server)
最高层次,也是重要的;
任何一个根域名服务器都知道所有顶级域名服务器的域名和IP地址;
本地域名服务器将域名转换IP地址的过程中,只要自己无法转换,就首先求助于根域名服务器。
假定所有根域名服务器都挂了,则整个互联网的DNS系统也都挂了。
根域名服务器并不直接把待查询的域名直接转换成IP地址(根域名服务器也没有这种信息),而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。
顶级域名服务器:(TDL服务器)
负责管理在该顶级域名服务器注册的所有二级域名;
当收到DNS查询请求时,就给出相应的回答
(可能是最后的结果,也可能是下一步应当找的域名服务器的IP地址)
权限域名服务器:
DNS采用划分区的方法解决:
域名服务器数量过多,运行效率低下的现象;
一个服务器所管辖的(或者有权限的)范围叫做区;
每个区都设置相应的权限域名服务器,用来保存该区中所有主机的域名到IP地址的映射;
本地域名服务器:(local name server)
当一个主机发出DNS查询请求时,这个查询请求报文就发给本地域名服务器;
当所要查询的主机也属于同一个本地ISP时,该本地域名服务器立即就能将所查询的主机名转换为IP地址,而不需要再访问其他域名服务器。
DNS解析流程:
递归查询 和 迭代查询;
递归查询:
主机向本地域名服务器查询一般都采用递归查询;
如果主机所询问的本地域名服务器不知道被查询域名的IP地址是什么的时候----->?
本地域名服务器就以DNS客户的身份向其他根域名服务器继续发送查询请求报文(即替该主机继续查询),而不是让主机自己进行下一步查询;
简而言之:别人帮本地域名服务器找去找
迭代查询:
本地域名服务器向根域名服务器的查询通常采用迭代查询
当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么直接给出所要查询的IP地址,要么告诉本地域名服务器下一步应该去哪一个域名服务器进行查询,然后让本地域名服务器进行后续的查询。
逐步按照域树的路径向下走直到节点,得到所要解析的域名的IP地址,然后把结果返回给发起查询的主机。
简而言之:让本地域名自己去查找
当然本地域名服务器也可以采用递归查询,这取决于最初的查询请求报文的设置是要使用哪一种查询方式。
解析流程:
解析实例:
假如客户端在浏览器的URL中输入y.abc.com,
即想要解析获取y.abc.com的IP地址。
(客户是第一次访问y.abc.com)
如果 本地域名服务器 采用迭代查询:(图a)
(1)客户端向 本地域名服务器(递归查询) 发出解析y.abc.com域名的请求。
本地域名服务器查看本地缓存,是否有缓存过y.abc.com域名,如果有直接返回给客户端;如果没有执行下一步;
(2)本地域名服务器采用迭代查询。它先向一个根域名服务器查询
(3)根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器dns.com的IP地址。
(4)本地域名服务器向顶级域名服务器dns.com进行查询。
(5)顶级域名服务器dns.com告诉本地域名服务器,下一步应查询的权限服务器dns.abc.com的IP地址。
(6)本地域名服务器向权限域名服务器dns.abc.com 进行查询。
(7)权限域名服务器dns.abc.com 告诉本地域名服务器,所查询的主机的IP地址。
(8)本地域名服务器最后把查询结果告诉m.xyz.com。
注:整个查询过程共用到了8个UDP报文;
如果 本地服务器采用 递归查询:(图b)
这里,本地域名服务器只需要向根域名服务器查询一次,
1、主机首先向其本地域名服务器进行递归查询。
2、本地域名服务器收到递归查询的委托后,也采用递归查询的方式向某个根域名服务器查询。
3、根域名服务器收到递归查询的委托后,也采用递归查询的方式向某个顶级域名服务器查询。
4、顶级域名服务器收到递归查询的委托后,也采用递归查询的方式向某个权限域名服务器查询。
当查询到域名对应的IP地址后,查询结果会在之前受委托的各域名服务器之间传递,最终传回给用户主机。
注:整个查询过程也是使用了8个UDP报文;
得到IP地址之后就要去访问该网站:
---->建立稳点且可靠的连接(TCP)从而进行三次握手Keepalive建立;
---->之后进行证书的匹配识别(HTTPS)
---->认证完毕之后将主机发送https-requset请求
---->请求完毕之后服务端将返回200OK证明请求成功
---->此时前端页面将渲染在客户端上;
DNS优化如何实现
1)增加DNS服务器数量
减小服务器压力,当单位服务器需要处理的DNS请求数量较少时速度会更快;
2)全国多地分布DNS服务器
用户网络访问速度跟用户计算机到服务器的距离有关,若可以让用户就近访问所在省份的服务器便可以加速DNS解析速度;
3)识别用户线路反馈相应线路IP
当用户网络线路跟服务器网络线路一致时速度较快,而不一致时则较慢,如:用户使用电信的线路但服务器是联通的线路,这样就会造成用户访问网站速度下降,如果可以识别用户访问线路并反馈相应IP则会加速网站访问。
DNS为什么用UDP?
更正确的答案是 DNS 既使用 TCP 又使用 UDP。当进行区域传送(主域名服务器向辅助域名服务器传送变化的那部分数据)时会使用 TCP,因为数据同步传送的数据量比一个请求和应答的数据量要多,而 TCP 允许的报文长度更长,因此为了保证数据的正确性,会使用基于可靠连接的 TCP。
当客户端向 DNS 服务器查询域名 ( 域名解析) 的时候,一般返回的内容不会超过 UDP 报文的最大长度,即 512 字节。用 UDP 传输时,不需要经过 TCP 三次握手的过程,从而大大提高了响应速度,但这要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。