• 计算机网络总结(二)


    接上篇计算机网络总结(一);

    五、会话层、表示层和应用层

      在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协议常用的几种请求方法:

    1. GET方法:获取指定的服务端资源。
    2. POST方法:提交数据到服务端。
    3. DELETE方法:删除指定的服务端资源。
    4. UPDATE方法:更新指定的服务端资源。  

      HTTP协议返回的状态码及其含义:

    1. 200~299:成功状态码
    2. 300~399:重定向状态码
    3. 400~499:客户端错误状态码(熟悉的404,NOT FOUND,有木有)
    4. 500~599:服务端错误状态码
    • HTTPS协议

      HTTPS协议是基于HTTP协议的,HTTP协议是一种明文传输,而HTTPS(Secure)是安全的HTTP协议,它的端口号是443,HTTPS的安全基础是SSL(Secure Sockets Layer:安全套接层);

      这里首先引入两个加密模型概念,如果通信双方使用的相同的秘钥进行加密和解密,则称为“对称加密”,如果通信双方使用的是不同的秘钥加密和解密,则称为“非对称加密”;在“非对称加密”中使用的两把秘钥A,B是拥有一定数学关系的一组秘钥,常用的就是公钥和私钥,比如我现在颁发给大家我的公钥,大家要给我传输加密信息,就可以通过公钥加密之后传输给我,等我接受到信息的之后,再通过我自己拥有的私钥解密,这样就完成了加密传输过程,在这里,使用过公钥加密之后,无法用公钥解开,保证了信息的私密性,只能通过私钥解密;

      此外,还有一个重要概念:数字证书,是可信任组织颁发给特定对象的认证,在网络中,可以用来识别对方身份,类似网络身份证一样,而且数字证书中还包含了颁发方的公钥,这点很关键,在SSL加密中,会使用到。

      接下来我们讲解整个SSL过程:

    1. 客户端首先生成一个随机数1和它的加密算法发送到服务端;
    2. 服务端接受到消息后,再将自己的数字证书和一个随机数2发送给客户端;
    3. 客户端接受到消息后,生成一个随机数3,然后通过接收到的数字证书的加密算法加密随机数3发送给服务端。

      通过以上三步,其实整个SSL加密过程就全部完成了,服务端接收到用它自己公钥加密的随机数3之后,使用其私钥解密,就可以得到随机数3了,这样,客户端和服务端就都得到了随机数1、2和3,然后通过第一步客户端发送给服务端的加密算法生成一个对称秘钥,就能进行加密传输了,为什么说SSL是安全的加密传输呢?

      我们来考虑第三方如何也能得到这个秘钥来破解加密通信,首先,你必须拦截到三次全部的信息,假设你完成了这个操作,这样你可以得到信息有加密算法、随机数1和随机数2,但是你无法得到随机数3,因为随机数3的解密私钥并未传输,所以保证了秘钥的安全;

      回顾整个SSL过程,我们可以发现,它是一个对称加密和非对称加密均使用了的加密过程,在传递随机数3的过程中,使用了公钥和私钥的非对称加密,而最后都通过加密算法和対应随机数生成了相同的秘钥,使用对称加密进行通信。
      进一步分析,SSL过程是位于应用层和传输层之间的,在实际建立连接的过程中,首先是客户端和服务端建立443端口的TCP连接,然后再进行SSL安全参数握手过程,生成相同的秘钥之后,最后才进行客户端和服务单的发送数据操作。

      总的来说,其实应用层的协议很多也很复杂,这里就不一一介绍了。

    六、总结

      其实整个过程,理清脉络,搞清楚为什么要有这个协议,这个协议是干什么的,又是怎么实现的。这样细品,其实还是很清晰的,不过整体来说,上面讲到的这些都只是皮毛,还有许多知识的大门没有打开,告辞,告辞!

      

  • 相关阅读:
    程序启动冲出UAC解决Win UAC问题的编程经验
    代码服务器端Tornado实现聊天室功能(websocket)
    选中菜单android中的显示跳转和隐式跳转
    提交优化Oracle Tuning Log File Sync 等待事件的几种策略
    对象类Effective Java:Ch3_Methods:Item11_谨慎重写clone()
    视频教程视频Java+PHP+.NET海量教程来了 500G教程
    应用性能Intel MIC适合什么样的应用程序
    资源页面dwr的ajax实现
    登录用户Eclipse中SVN访问用户的变更办法
    内存释放[置顶] Cocos2dx 内存管理心得
  • 原文地址:https://www.cnblogs.com/maybe-fl/p/12695419.html
Copyright © 2020-2023  润新知