9.1网络通信协议
通过计算机网络可以实现多台计算机的连接,但是不同计算机的操作系统和硬件体系结构不同,为了提供通信支持,位于同一个网络中的计算机在进行连接和通信时必须要遵守定的规则, 这就好比在道路中行驶的汽车一定要遵守交通规则一 样。在计算机网络中,这些连接和通信的规则称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统规定, 通信双方必须同时遵守才能完成数据交互。
网络通信协议有很多种,目前应用最广泛的是TCP/IP (Transmission Control Protocol/ Intermet Protocol,传输控制协议/因特网互联协议)、UDP( User Datagram Protocol,用户数据报协议) ICMP( Intemet Control MessageProtocol, Internet 控制报文协议)和其他些协议的协议组。
本章中所学的网络编程知识主要是基于TCPIP协议。在学习具体的内容之前,首先了解一下TCPIP协议。TCPIP (又称TCPIP协议簇)是组用于实现网络互连的通信协议,其名称来源于该协议族中两个重要的协议(TCP和IP)。基于TCPIP的参考模型将协议分成4个层次,如图9-1所示。
TCPIP中的4个层次分别是链路层、网络层、传输层和应用层,每层分别负责不同的通信功能,下面对这4个层次进行详细讲解。
●链路层:也称为网络接口层,该层负责监视数据在主机和网络之间的交互。事实上,TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议与TCP/IP的网络层进行连接。
网络层:也称网络互联层,是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络。
传输层:主要完成网络程序的通信,在进行网络
通信时,可以采用TCP,也可以采用UDP。
应用层:主要负责应用程序的协议,如HTTP、FTP等。
9.1.3 UDP与TCP
协议是定义的通信规则,通过图9-1所示的TCP/P结构可知,传输层的两个重要的的高级协议分别是UDP和TCP,其中,UDP是User Datagam Protocol的缩写,称为用户数据报协议;TCP是Trarnisinaorar的缩写,称为传输控制协议。
UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据后,也不会向发送端反馈是否收到数据。由于使用UDP消耗资源小,通信效率高,所以通常会用于音频、视频和普通数据的传输,例如视频会议使用UDP,因为这种情况即使偶尔丢失一两个数据包, 也不会对接收结果产生太大影响。但是在使用UDP传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP。UDP 的交互TCP是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端、由客户编向服务器端发出连接请求,每次连接的创建都需要经过“三次握手”。第一次握手, 客户端向服务器端发出走接请求,等待服务器确认;第二次握手,服务器端向客户端回送一个响应, 通知客户端收到了连接请求;第三次握手,客户端再次向服务器端发送确认信息,确认连接。TCP连接的整个交互过程如图9-5所示。由于TCP的面向连接特性,它可以保证传输数据的安全性,是一个被广 泛采用的协议:例如,在下载文件时,如果数据接收不完整,将会导致文件数据丢失而不能被打开,因此,下载文件时必须采用TE