一、网络分层
二、应用层协议——HTTP、DNS和SSH
2.1 http协议
1. 定义:超文本传输协议( Hyper Text Transfer Protocol ),是用于传输诸如HTML的超媒体文档的应用层协议。它被设计用于Web浏览器和Web服务器之间的通信,但也可以用于其它目的。 HTTP遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求,然后等待收到服务器端的响应。 HTTP是无状态协议,意味着服务器不会在两个请求之间保留任何数据(状态)。虽然通常基于TCP / IP层,但可以在任何可靠的传输层上使用,也就是说,一个不会静默丢失消息的协议,如UDP。
2.2 DNS协议
1. 定义:DNS是域名系统(DomainNameSystem)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务。域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,在Internet上域名与IP地址之间是一一对应的,DNS就是进行域名解析的服务器。
2. DNS服务器:域名与IP地址之间的对应,类似于地址簿。DNS服务器在日常生活十分重要,每个人上网,都需要访问它,但是同时,这对它来讲也是非常大的挑战。一旦它出了故障,整个互联网都将瘫痪。另外,上网的人分布在全世界各地,如果大家都去同一个地方访问某一台服务器,时延将会非常大。因而,DNS 服务器一定要设置成高可用、高并发和分布式的。
3. 根服务器:根服务器主要用来管理互联网的主目录,全世界只有13台(这13台根域名服务器名字分别为“A”至“M”),1个为主根服务器在美国。其余12个均为辅根服务器,其中9个在美国,欧洲2个,位于英国和瑞典,亚洲1个位于日本。所有根服务器均由美国政府授权的互联网域名与号码分配机构ICANN统一管理,负责全球互联网域名根服务器、域名体系和IP地址等的管理,这13台根服务器可以指挥Firefox或Internet Explorer这样的Web浏览器和电子邮件程序控制互联网通信,由于根服务器中有经美国政府批准的260个左右的互联网后缀(如.com、.xyz、.net、.top等)和一些国家的指定符(如法国的.fr、挪威的.no等),美国政府对其管理拥有很大发言权。
4. DNS解析流程(基于UDP协议)
当我们去解析一个域名,比如解析xiaoxiaoguo.cn时,会经过如下步骤:
(1)查看本机的缓存有无该域名记录,如果没有,查看本机的host文件有无该域名记录,如果没有,则发个请求到本地DNS服务器;
(2)本地DNS服务器收到请求后,查看是否有该域名的解析,如果有,返回解析记录给主机,如果没有,则请求根域名服务器;
(3)根域名服务器收到请求后,返回该域名对应的顶级域名服务器,比如这次请求返回.cn的服务器地址;
(4)本地域名服务器接到顶级域名服务器地址后,向该顶级域名服务器请求;
(5)顶级域名服务器返回该域名的权威服务器地址,比如这次返回xiaoxiaoguo.cn对应的权威服务器地址;
(6)本地域名服务器获得该地址后,发请求到该域名的权威服务器;
(7)权威服务器返回该域名对应的解析;
(8)本地域名服务器获取该解析后,返回给主机,解析完成。
参考链接:https://blog.csdn.net/u012375924/article/details/76408947
5. 本机hosts的作用:
(1)加快域名解析:对于要经常访问的网站,我们可以通过在hosts中配置域名和IP的映射关系,这样当我们输入域名计算机就能很快解析出IP,而不用请求网络上的DNS服务器。
(2)方便局域网用户:在很多单位的局域网中,会有服务器提供给用户使用。但由于局域网中一般很少架设DNS服务器,访问这些服务要输入难记的IP地址,对不少人来说相当麻烦。现在可以分别给这些服务器取个容易记住的名字,然后在Hosts中建立IP映射,这样以后访问的时候我们输入这个服务器的名字就行了。
(3)屏蔽网站:现在有很多网站不经过用户同意就将各种各样的插件安装到你的计算机中,有些说不定就是木马或病毒。对于这些网站我们可以利用Hosts把该网站的域名映射到错误的IP或自己计算机的IP,这样就不用访问了。我们在Hosts写上以下内容:127.0.0.1#屏蔽的网站,0.0.0.0#屏蔽的网站,这样计算机解析域名就解析到本机或错误的IP,达到了屏蔽的目的。
(4)顺利连接系统:对于Lotus的服务器和一些数据库服务器,在访问时如果直接输入IP地址那是不能访问的,只能输入服务器名才能访问,那么我们配置好hosts文件,这样输入服务器名就能顺利连接了。
最后要指出的是,hosts文件配置的映射是静态的,如果网络上的计算机更改了请及时更新IP地址,否则将不能访问。
2.3 SSH协议
1. 定义:SSH 为 Secure Shell 的缩写,由 IETF 的网络小组所制定。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。SSH 为建立在应用层基础上的安全协议,目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。简单说,SSH是一种网络协议,用于计算机之间的加密登录。
2. 功能:最早的时候,互联网通信都是明文通信的,传统的网络服务程序,如ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据,一旦被截获,内容就暴露无疑,而且,这些服务程序的安全验证方式也是有其弱点的, 就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式, 就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、PoP、甚至为PPP提供一个安全的"通道"。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
需要指出的是,SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。
3. SSH协议流程
原文地址:https://www.cnblogs.com/qinsafefy/p/9334701.html