第三章 协议设计涉及知识简介 即时通讯安全准则主要包括:不随意泄露即时通讯的用户名和密码;不在第三方网站登录网页版即时通讯软件;定期更改密码;谨慎使用未经认证的即时通讯插件;在即时通讯设置中开启文件自动传输病毒扫描选项;不接收来历不明或可疑的文件和网址链接。
3.2 网络协议
3.2.1定义
协议是用来描述进程之间信息交换数据时的规则术语义。在计算机网络中,两个相互通信的实体处在不同的地理位置,其上的两个进程相互通信,需要通过交换信息来协调它们的动作达到同步,而信息的交换必须按照预先共同约定好的规则进行。网络协议的定义:为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
3.1.2 网络协议是由三个要素组成
a.语义:语义是解释控制信息每个部分的意义,它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。
b.语法:语法是用户数据与控制信息的结构与格式,以及数据出现的顺序。 c.时序:时序是对事件发生顺序的详细说明。(也可称为“同步”)。
人们形象地把这三个要素描述为:语义表示要做什么,语法表示要怎么做,时序表示做的顺序。
3.3 OSI七层网络模型
3.3.1OSI七层模型简介
OSI网络模型是一个开放式系统互联的参考模型。通过这个参考模型,用户可以非常直观地了解网络通信的基本过程和原理。OSI参考模型如图所示。
用户从OSI网络模型可以很直观地看到,网络数据从发送方到达接收方的过程中,数据的流向以及经过的通信层和相应的通信协议。事实上在网络通信的发送端,其通信
2
第三章 协议设计涉及知识简介 数据每到一个通信层,都会被该层协议在数据中添加一个包头数据。而在接收方恰好相反,数据通过每一层时都会被该层协议剥去相应的包头数据。用户也可以这样理解,即网络模型中的各层都是对等通信。在OSI七层网络模型中,各个网络层都具有各自的功能,如表所示。
各网络层的功能
协 议 层 名 物理硬件层 数据链路层 网络层 数据传输层 会话层 表示层 应用层 功 能 概 述 表示计算机网络中的物理设备。常见的有计算机网卡等 将传输数据进行压缩与加压缩 将传输数据进行网络传输 进行信息的网络传输 建立物理网络的连接 将传输数据以某种格式进行表示 应用程序接口 ?注意:在表1.1中列出了OSI七层网络模型中各层的基本功能概述。用户根据这些基
本的功能概述会对该网络模型有一个比较全面的认识。
3. 4 TCP/IP协议
3.4.1 tcp/ip协议简介
TCP/IP协议实际上是一个协议簇,其包括了很多协议。例如,FTP(文本传输协议)、SMTP(邮件传输协议)等应用层协议。TCP/IP协议的网络模型只有4层,包括数据链路层、网络层、数据传输层和应用层,各层功能如下:
TCP/IP网络协议各层功能
协 议 层 名 数据链路层 网络层 数据传输层 应用层 功 能 概 述 网卡等网络硬件设备以及驱动程序 IP协议等互联协议 为应用程序提供通信方法,通常为TCP、UDP协议 负责处理应用程序的实际用于层协议 在数据传输层中,包括了TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)协议。其中,TCP协议是基于面向连接的可靠的通信协议。其具有重发机制,即当数据被破坏或者丢失时,发送方将重发该数据。而UDP协议是基于用户数据报协议,属于不可靠连接通信的协议。例如,当用户使用UDP协议发送一条消息时,并不知道该消息是否已经到达接收方,或者在传输过程中数据已经丢失。但是在即时通信中,UDP协议在对一些对时间要求较高的网络数据传输方面有着重要的作用。
3
第三章 协议设计涉及知识简介
3.5 TCP传输
3.5.1简介
TCP,Transfer Control Protocol的缩写(传输控制协议),是一种面向连接的网络传输协议。TCP协议的特点是,支持多数据流操作,提供流控和错误控制,甚至能完成对乱序到达报文的重新排序等。因此,TCP提供了可靠的应用数据传输服务。
3.5.2通信双方使用TCP传输的一般过程如图:
连接请求连接确认数据传送服务器客户机
3.5.3 TCP协议和UDP协议的区别
(1)TCP协议面向连接,UDP协议面向非连接 (2)TCP协议传输速度慢,UDP协议传输速度快 (3)TCP协议保证数据顺序,UDP协议不保证 (4)TCP协议保证数据正确性,UDP协议可能丢包 (5)TCP协议对系统资源要求多,UDP协议要求少
3.6 C/S编程模型
客户机/服务器模型,又称为Client/Server模型,简称C/S架构,是一种非对称式编程模式。C/S计算技术在信息产业当中占有重要的地位。该模式的基本思想是把集中在一起的应用划分成为功能不同的两个部分,分别在不同的计算机上运行,通过它们之间的分工合作来实现一个完整的功能。对于这种模式而言其中一部分需要作为服务器,用来响应并为客户提供固定的服务;另一部分则作为客户机程序用来向服务器提出请求或要求某种服务。
在此“服务器”是指能在网络上提供服务的任何程序。服务器接受网络上的请求,完成服务后将结果返回给申请者。对于简单的服务,把每个请求用一个IP数据报发给服务器,服务器用另一个数据报返回响应。
客户机和服务器都是独立的计算机。当一台连入网络的计算机向其他计算机提供各种网络服务(如数据、文件的共享等)时,它就被叫做服务器。而那些用于访问服务器资
4
第三章 协议设计涉及知识简介 料的计算机则被叫做客户机。严格说来,客户机/服务器模型并不是从物理分布的角度来定义,它所体现的是一种网络数据访问的实现方式。采用这种结构的系统目前应用非常广泛。如宾馆、酒店的客房登记、结算系统,超市的POS系统,银行、邮电的网络系统等。
C/S编程模型是基于可靠连接的通信模型。在通信的双方必须使用各自的IP地址以及端口进行通信。否则,通信过程将无法实现。通常情况下,当用户使用C/S模型进行通信时,其通信的任意一方称为客户端,则另一方称为服务器端。
服务器端等待客户端连接请求的到来,这个过程称为监听过程。通常,服务器监听功能是在特定的IP地址和端口上进行。然后,客户端向服务器发出连接请求,服务器响应该请求则连接成功。否则,客户端的连接请求失败。C/S编程模型如图所示:
C/S编程模型
由于客户端连接服务器时,需要使用服务器的IP地址和监听端口号才能完成连接。所以,服务器的IP地址和端口必须是固定的。在这里,向用户介绍部分协议所使用的端口号码。例如,HTTP协议(网页浏览服务)所使用的端口号为80,FTP协议(文本传输)所使用的端口号是21。
注意:用户在实际编程中,通信双方的连接以及数据通信均是基于Socket(套接字)进行的。
3.7 Socket套接字
用户在Windows中编写网络通信程序时,需要使用Windows Socket(Windows套接字)。与Windows套接字相关的API函数称为Winsock函数。
在网络通信的双方,均有各自的套接字,并且该套接字与特定的IP地址和端口号相关联。通常,套接字主要有两种类型,分别是流式套接字(SOCK_STREAM)和数据报套接字(SOCK_DGRAM)。其中,流式套接字是专门用于使用TCP协议通信的应用程序中,
5
第三章 协议设计涉及知识简介 而数据报套接字则是专门用于使用UDP协议进行通信的应用程序中。
3.8 网络字节顺序
网络字节顺序是指TCP/IP协议中规定的数据传输使用格式,与之相对的字节顺序是主机字节顺序。网络字节顺序表示首先将数据中最重要的字节进行存储。例如,当数据0x358457使用网络字节顺序进行存储时,该值在内存中的存放顺序将是0x35、0x84、0x57。因为通信数据可能会在不同的机器之间进行传输,所以通信数据必须以相同的格式进行整理。只有经过格式处理的通信数据,才能在不同的机器之间进行传输。
3.9 Windows Sockets
在MFC类库中,几乎封装了Windows Sockets的全部功能。在本节中,将向用户介绍两个主要的套接字相关类,分别是CAsyncSocket类和CSocket类。
3.9.1 CAsyncSocket类
在微软基础类库中,CAsyncSocket类封装了异步套接字的基本功能。用户使用该类进行网络数据传输的步骤如下:
(1)调用构造函数创建套接字对象。
(2)如果创建服务器端套接字,则调用函数Bind()绑定本地IP和端口,然后调用函数Listen()监听客户端的请求。如果请求到来,则调用函数Accept()响应该请求。如果创建客户端套接字,则直接调用函数Connect()连接服务器即可。
(3)调用Send()等功能函数进行数据传输与处理。 (4)关闭或销毁套接字对象。
注意:在MFC中,所有类中均有一个变量m_hWnd表示该类的实例句柄。
3.9.2 CSocket类
微软的MFC提供了两个类:CAsyncSocket和CSocket,极大地方便了Socket功能的使用。这两个类的继承关系如图:
CObjectCAsyncSocketCSocket MFC Socket类的继承关系
CSocket类派生于CAsyncSocket类。该类不但具有CAsyncSocket类的基本功能,还具有串行化功能。用户在实际编程中,通过将CSocket类与CSocketFile类和CArchive类一起使用,能够很好地管理数据以及发送数据。用户使用该类进行网络编程的步骤如下:
6