接上篇计算机网络总结(一);
五、会话层、表示层和应用层
在TCP/IP四层模型中,这三层是直接合并成应用层来理解,统称为应用层,传输层以及传输层以下的各层提供的是完整的通信服务,应用层则是面向用户的一层,我们来复习一下之前的重要传输协议UDP和TCP,对应用层来说,视频、语音和实时信息这些多媒体的信息发布,注重信息的实时性,哪怕是这一秒的信息丢失,下一秒也立刻会有新数据填充进来,在传输层采用的就是UDP协议,而那些注重可靠信息传送的,比如金融信息,可靠通讯等等,这些在传输层采用的就是TCP协议,可以看到,看似简单的UDP协议,在实际应用中还是很广泛的。
这里介绍面向应用层常用的几种协议;
- DNS协议
DNS(Domain Name System:域名系统协议)是一种分布式网络目录服务,DNS服务的端口号是53,,主要用于域名与 IP 地址的相互转换,以及控制电子邮件的发送;在传输层通信中,是通过IP地址和端口号来完成进程间通信的,但是IP地址和端口号记忆起来毫无逻辑、相当复杂,于是,我们使用域名系统来帮助我们记忆,比如你Ping一下baidu.com,相对于计算机来说这个域名就会直接转化为IP地址,DNS服务就是将点分十进制的IP地址转化为方便记忆的域名,实际中是通过域名服务器来完成这个操作的,在域名服务器中记录着域名和IP地址的映射关系,当你访问某一域名时,首先会访问本地的域名服务器,如果没找到,则向上一级的域名服务器访问,直到找到对应的IP地址,返回给本机,就能完成这个操作了,如以下的操作,就完成了域名到IP地址的转换:
- DHCP协议
DHCP(Dynamic Host Configuration Protocol:动态主机配置协议)是一个局域网协议,是应用UDP协议的应用层协议,其实就是解决我们的电脑在连接不同路由器时,IP地址不断变化的过程,一般我们电脑使用的都是动态分配IP地址,DHCP服务器的默认监听端口是67,比如我们在家连入WIFI时,主机会使用UDP协议广播DHCP发现报文,DHCP服务器接收这条报文后,就会发出DHCP提供报文,然后主机再向DHCP服务器发出DHCP请求报文,这时DHCP服务器回应并会提供它的IP地址供主机使用,这时我们的主机就有IP地址使用了。简单点说就是:
主机:“兄弟,你们那谁有IP地址啊?”
DHCP服务器:“我这有,我这有。”
主机:“给我一个呗!”
DHCP:“给你,给你!”
这里需要提醒一下,其实你的电脑和路由器使用的是同一个IP地址,通过NAT技术,区别不同端口号来实现的连接;
看到这里,大家肯定会觉得,DHCP协议和前面介绍的RARP协议很像,确实,其实DHCP协议从某种程度上来说是对RARP协议的升级,现在的RARP协议其实已经被淘汰了,其功能有DHCP协议完成。
- HTTP协议
HTTP(Hyper Text Transfer Protocol:超文本传输协议)是一种可靠的传输协议,HTTP协议的端口号是80,它的底层是通常是依靠TCP/IP协议完成的,所谓的超文本就是指包含超链接的文本,采用的CS架构(Client/Server:客户端/服务端),它用于从Web服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
HTTP协议常用的几种请求方法:
- GET方法:获取指定的服务端资源。
- POST方法:提交数据到服务端。
- DELETE方法:删除指定的服务端资源。
- UPDATE方法:更新指定的服务端资源。
HTTP协议返回的状态码及其含义:
- 200~299:成功状态码
- 300~399:重定向状态码
- 400~499:客户端错误状态码(熟悉的404,NOT FOUND,有木有)
- 500~599:服务端错误状态码
- HTTPS协议
HTTPS协议是基于HTTP协议的,HTTP协议是一种明文传输,而HTTPS(Secure)是安全的HTTP协议,它的端口号是443,HTTPS的安全基础是SSL(Secure Sockets Layer:安全套接层);
这里首先引入两个加密模型概念,如果通信双方使用的相同的秘钥进行加密和解密,则称为“对称加密”,如果通信双方使用的是不同的秘钥加密和解密,则称为“非对称加密”;在“非对称加密”中使用的两把秘钥A,B是拥有一定数学关系的一组秘钥,常用的就是公钥和私钥,比如我现在颁发给大家我的公钥,大家要给我传输加密信息,就可以通过公钥加密之后传输给我,等我接受到信息的之后,再通过我自己拥有的私钥解密,这样就完成了加密传输过程,在这里,使用过公钥加密之后,无法用公钥解开,保证了信息的私密性,只能通过私钥解密;
此外,还有一个重要概念:数字证书,是可信任组织颁发给特定对象的认证,在网络中,可以用来识别对方身份,类似网络身份证一样,而且数字证书中还包含了颁发方的公钥,这点很关键,在SSL加密中,会使用到。
接下来我们讲解整个SSL过程:
- 客户端首先生成一个随机数1和它的加密算法发送到服务端;
- 服务端接受到消息后,再将自己的数字证书和一个随机数2发送给客户端;
- 客户端接受到消息后,生成一个随机数3,然后通过接收到的数字证书的加密算法加密随机数3发送给服务端。
通过以上三步,其实整个SSL加密过程就全部完成了,服务端接收到用它自己公钥加密的随机数3之后,使用其私钥解密,就可以得到随机数3了,这样,客户端和服务端就都得到了随机数1、2和3,然后通过第一步客户端发送给服务端的加密算法生成一个对称秘钥,就能进行加密传输了,为什么说SSL是安全的加密传输呢?
我们来考虑第三方如何也能得到这个秘钥来破解加密通信,首先,你必须拦截到三次全部的信息,假设你完成了这个操作,这样你可以得到信息有加密算法、随机数1和随机数2,但是你无法得到随机数3,因为随机数3的解密私钥并未传输,所以保证了秘钥的安全;
回顾整个SSL过程,我们可以发现,它是一个对称加密和非对称加密均使用了的加密过程,在传递随机数3的过程中,使用了公钥和私钥的非对称加密,而最后都通过加密算法和対应随机数生成了相同的秘钥,使用对称加密进行通信。
进一步分析,SSL过程是位于应用层和传输层之间的,在实际建立连接的过程中,首先是客户端和服务端建立443端口的TCP连接,然后再进行SSL安全参数握手过程,生成相同的秘钥之后,最后才进行客户端和服务单的发送数据操作。
总的来说,其实应用层的协议很多也很复杂,这里就不一一介绍了。
六、总结
其实整个过程,理清脉络,搞清楚为什么要有这个协议,这个协议是干什么的,又是怎么实现的。这样细品,其实还是很清晰的,不过整体来说,上面讲到的这些都只是皮毛,还有许多知识的大门没有打开,告辞,告辞!