当今网络通信已经是广为人知并且不可或缺的数字世界的一部分,任何通过网络发送和接受的数据都是公开的,这一点相信懂得网络基本知识的人都知道。但是看看我们的世界,好像网络通信挺和谐的啊,并没有想象中的数据泄漏什么之类的事件大爆发啊,也没有因为数据安全性问题而被公众抛弃啊。这里面究竟是如何的一个流程,以及是怎样运作和采取什么方法来解决数据安全问题的呢?下面就我个人对网络的理解讲讲属于皮毛层的一个流程过程吧。
数据在网络中传输时是以字节形式传送的,除了某些内部网络还有具有自定义协议的通信网络之外,基本上网络通信最常见的就是浏览器形式,也就是符合HTTP协议的数据传送。那么既然是用HTTP协议进行组装和解析数据的话,只要懂得HTTP协议的人都可以解析在网络上传送的消息的意义,又因为HTTP是公开的一个国际协议标准,所以谁都可以根据HTTP文本来截取相关信息,这样的话使用HTTP协议的消息就很明显是透明的了,至少对于懂得通信协议的人来说完全不是秘密。照这样说来网络岂不是一点安全性可讲都没有??没错,事实上就是很不安全的,毕竟数据传送形式都是人人皆知的。但是安全是必须的啊,所以我们只能寻找方法来解决网络数据的防伪造、防篡改、防泄密等安全性问题。
其实前辈们早就想好了解决方案了。
由于HTTP协议是公开的,所以数据传送形式也是众所周知的。在这种情形下寻求数据安全性的解决方案无疑是相当有难度的。幸运的是,许多数学家在理论上已经证明并给出了很多对数据进行加密和摘要的算法,用来帮助解决数据安全性的问题,如著名的RSA算法和MD5摘要算法。那么这样看来,问题好像是解决了,但仅仅用加密和摘要的方案并不能让我们高枕无忧,新的问题也是接踵而来的。怎样才能使人们相信通信的对方就是真正的想要通信的对方呢?而且针对RSA算法来说,数据加密问题解决得挺完美,但是撇开其速度慢的缺点不说,从生成的公钥在网上公开到对方取得公钥这一过程中,又是安全无保障的环节。你怎么知道网上的公钥就是对方公开的?也许你会说可以在公钥上面加入对方的一些信息啊,并且也可以使用摘要来处理加上去的信息。没错,事实上也是这样解决的,这便是数字签名技术。但是还是有问题存在,因为签名也可能被他人截获并篡改,即使不被改动,你也不能确定签名就是对方所签的。说到底,如果没有彼此都信任的第三方来做鉴定工作的话,那么所谓安全的通信就不可能存在。而通过第三方来确认身份的技术,便是数字证书技术。
世界各国都需要保证各自国内网络通信的安全,加上网络建设属于基础设施建设,也即公共事业的一部分,那么网络认证中心这样的角色只能由政府或是有能力、足够权威的机构或企业担任了。因为如果你不选择相信别人,那么你也就不用和别人交流了,那也就不用进行网络通信了。所以到最后,你还是必须尝试着去相信别人,并由此来确保对方的身份,那么其他问题也就迎刃而解了。
最后就整个流程做一个较细致的介绍:
A和B为通信双方,C是认证中心。A给B发送数据前使用RSA算法(也可以是其他算法,这里用RSA做例子)处理将要发送的数据,生成了公私钥对,A保存私钥,然后对公钥签名,签名内容为A的信息摘要,可使用MD5算法处理得到。之后A找C认证,即C用RSA算法处理A所提交的公钥(含A的签名),C保存私钥,并将用公钥加密的A的公钥公开在网上,B拿到C公开的A的公钥后,到C那里使用C的私钥解密,并确认摘要信息是否为A的信息,若通过确认,则可以相信对方的身份,并进行通信。
可见相信第三方是解决这个问题的关键,所以信誉是多么重要的,得人心者得天下!
分享到:
相关推荐
综上所述,使用Java开发网络通信程序不仅可以充分利用Java的强大功能,还能借助其丰富的API和工具来简化开发流程。从输入/输出流的管理到Socket通信机制的理解,再到对Java语言特性的掌握,每一个知识点都至关重要。...
这本书深入浅出地介绍了网络通信的基本概念和技术,并提供了丰富的C语言编程实例,帮助读者理解和掌握网络通信的实践应用。 首先,书中会讲解网络通信的基础知识,包括TCP/IP协议族、OSI七层模型以及网络数据传输的...
对于初学者来说,这样的例子程序可以帮助理解工业网络通信的基本原理和实际操作,而对于有经验的工程师,它可以作为一个参考,快速解决特定的通信问题。通过深入研究这个"Test"程序,我们可以提升对西门子工业网络...
在本压缩包中,我们可以找到多个与网络通信相关的资源,这些资源将帮助我们深入理解网络通信的基本原理和技术。 "网络与数据通信1.7z"可能包含了关于网络通信的基本概念,如OSI模型(开放系统互连模型)、TCP/IP...
本示例旨在为初学者提供一个直观的理解和实践经验,帮助他们掌握基本的网络通信概念和技术。 在"EventSelectTest"这个文件中,我们可以推测它可能是一个关于事件驱动的网络编程示例。在事件驱动模型中,程序的执行...
在本文中,我们将深入探讨如何使用Microsoft Visual C++(简称VC)来模仿QQ的网络通信程序。QQ作为一款流行的即时通讯软件,其背后的网络通信机制是复杂而高效的。通过模仿QQ,我们可以学习到网络编程的基本原理,...
6. 安全通信:包括加密技术(如SSL/TLS)和认证机制,确保网络通信的安全性。理解如何在C++中实现这些安全功能,对于开发银行、电商等高安全性的网络应用尤为重要。 7. 错误处理和调试:在开发过程中,正确处理网络...
本篇文章将深入探讨Java实现的基本网络通信程序,包括TCP(传输控制协议)和UDP(用户数据报协议)。 TCP是一种面向连接的、可靠的传输协议,它确保了数据包的有序、无损传输。在Java中,我们主要通过`java.net....
【标题】基本Udp的网络通信程序 在计算机网络编程中,UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的传输层协议。与TCP(传输控制协议)不同,UDP不保证数据的顺序、完整性和可靠性,但它...
在IT领域,MFC(Microsoft Foundation Classes)是一个由微软开发的C++库,它为Windows应用程序提供了一种构造用户界面...通过学习和实践,你可以掌握创建网络通信应用程序的基本技能,并逐步提升到更高级的应用场景。
在Java编程语言中,网络通信是一项重要的技能,它允许程序之间通过网络进行数据交换。本项目提供的"网络通信java代码"旨在帮助初学者理解和实践如何实现网络上的双向通信。在这个过程中,我们将探讨TCP(传输控制...
本文将深入探讨“网络通信程序方法”,包括网络通信的基本概念、编程过程和常用技术框架。 首先,我们要理解网络通信的基础,即TCP/IP协议栈。TCP/IP(传输控制协议/互联网协议)是互联网上的标准通信模型,它由四...
《Visual C++网络通信开发入门与编程实践》一书的核心内容是通过Visual C++这一强大的编程工具,介绍如何进行网络通信程序的开发。C++语言以其高效、灵活和面向对象的特点,广泛应用于系统级和高性能应用的开发,...
7. **第15章**:可能涵盖了网络安全和加密技术,如SSL/TLS协议,以及如何在Windows下实现安全的网络通信。 8. **第16章**:可能涉及网络服务的实现,如HTTP服务器、FTP服务器的编程,以及Windows服务的创建和管理。...
【网络通信安全:外联行为审计】 网络通信安全是当今信息化时代的重要议题,尤其是对外联行为的审计,它涉及到组织内部网络安全的维护和...对于不符合要求的组织,应尽快采取整改措施,以满足网络通信安全的基本要求。
通过实践这个TCP通信程序,你可以深入了解网络通信的流程,掌握C#中实现网络通信的方法,这对于开发涉及网络交互的软件,如即时聊天工具、文件传输应用等,具有重要的学习价值。同时,理解TCP协议的工作机制,也有助...
首先,我们要理解网络通信的基本原理。网络通信是通过网络协议(如TCP/IP)来实现的,这些协议定义了数据在网络中的格式、路由和交互方式。TCP/IP模型包括四个主要层次:应用层、传输层、网络层和链路层。应用层是最...
网络通信的基本概念: 1. **套接字(Sockets)**:套接字是网络通信的基础,它提供了进程间通信的接口,使得运行在不同计算机上的程序能够相互通信。在Visual C++中,可以使用Winsock库来操作套接字。 2. **TCP/IP...
《Visual C++网络通信编程技术详解》是一...通过《Visual C++网络通信编程技术详解》,读者将能够熟练运用C++进行网络编程,构建功能强大的网络应用程序,无论是客户端还是服务器端,都能应对各种复杂的网络通信需求。