文献综述
1.研究背景
随着信息技术的飞速发展,以及网络信息的交互不断加强,网络数据传输安全成为重要问题之一。基于 Socket 的数据传输安全技术成为近几年的热点研究问题,为了实现网络数据传输安全技术的功能,必须充分利用 Socket 通信的自身优势,并结合Python语言的简单易编程特点来完成 [1]。
Socket既可以实现本地主机通信也可以实现网络间主机通信,它就是一个文件描述符,对Socket的操作与普通文件描述符操作差别很小,即都可以使用 read、write、close函数进行操作。一旦完成初始化工作,双方之间进行数据交互都可以通过socket实现。但是,Socket不再是一个磁盘文件,其主要资源是一个内核内存空间的structsk_buff结构体对象,该对象详细描述了通信双方的基本信息,缓冲的数据等[2]
2.国内外Socket通信的研究与应用现状
Socket最初由加利福尼亚大学Berkeley分校为Unix操作系统开发的网络通信接口,后来又被移植到Dos与Windows系统,特别是近几年互联网在全世界范围的广泛普及,进一步奠定了它在网络通信程序开发领域的主宰地位[3]。后因其较复杂,20世纪90年代初,Microsoft联合其他几家公司制定了一套开放的、支持多种协议的在Windows基础上的网络编程接口,即Windows Socket,已基本实现与协议无关,但较常用的是TCP/IP协议,实际上Socket为计算机通讯提供了通讯端口,通过这个端口,可以与同样具有Socket端口的计算机实现数据的发送与接收[4]。根据是否面向连接,可以将Socket通信分为面向连接的数据流通信和面向无连接的数据报通信。但两者有相似的操作,都需要创建各自的Socket对象,但是,两者也有不同之处,面向连接的TCP通信需要双方建立可行的数据连接才能通信,而面向无连接的 UDP 通信则只是简单地将数据发送到对应的目的主机即可,而不管对方是否处于存活状态,对方是否允许接收数据包以及该数据包是否完整被发送到目标主机 [5]。
在面向连接的通讯中服务器和客户机在交换数据之前先要建立一个连接,在无线通讯中数据作为信息的一部分被交换[6]。网络应用编程界面——套接字(Socket) 已成为开发网络应用软件的强有力工具。然而,在国内,对套接字(Socket)研究更局限于在应用方面的研究,很少涉及到对套接字(Socket)实现进行深入的研究。对套接字(Socket)的实现进行研究涉及到套接字(Socket)背后的协议,这样对研究套接字(Socket) 的实现带来了困难,从套接字(Socket)实现的同台计算机上进程间的通信来入手研究套接字的实现,可以避开复杂的协议,这样为研究套接字(Socket)的实现提供了一条简单的途径[7]。目前,基于客户机/服务器(C/S)的网络通信模型是使用最广、最为基础的通信模型。在这种模式下,相互通信的网络程序中,一方称为客户程序(client),另一方称为服务程序(server)。它们的区别在于,服务程序总是被动的等待连接,服务程序一启动,初始化完毕就进入等待连接状态;而客户程序启动后,向远程服务程序发出连接请求,服务程序收到请求后,按照一定的规则建立连接,连接完成后,两个程序之间就建立了一个虚拟的数据通信链路,这些程序可以直接从自己打开的套接口读入和写出数据,而不用关心实际的数据链路 [8]。
对于程序员来说,可以把Socket看成是一个文件指针,只要向指针所指的文件读写数据,就可以实现双向通信。利用 Socket 进行通信,有两种方式。第一种是面向连接的流方式。在这种方式下,两个通信的应用程序之间要先建立一种连接链路,只有建立了这条链路之后,数据才能够被接收和发送。这种方式对应的传输层协议是TCP(TransportControl Protocol)协议。第二种是无连接的数据报文方式,在这种方式下,两个通信的应用程序不需要首先建立通信链路,直接可以接收和发送信息。这种方式对应的传输层协议是UDP(User DatagramProtocol)协议[9]。流式方式的特点是通过信可靠,对数据有校验和重发的机制,通常用来做数据文件的传输,所用的telnet 通信正是采用这种方法;数据报文方式由于取消了重发校验机制,能够达到较高的通信速率,可应用于对数据可靠性要求不高的通信,如实时通信等[10]。 本次设计是上位机软件与下位机松下plc建立数据通讯,要求通信的可靠性与安全性,所以使用TCP/IP协议进行通讯。
3.研究Socket通讯的意义
以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。