在TCP/IP协议栈中,有两个高层协议是网络应用程序编写者应该了解的,他们是“传输控制协议”(Transmission Control Protocol,简称:TCP)和“用户数据报协议”(User Datagram Protocol,简称:UDP)。
TCP是面向连接的通信协议,TCP提供两台计算机之间的可靠无差错的数据传输。应用程序利用TCP进行通信时,源和目标之间会建立一个虚拟连接。这个连接一旦建立,两台计算机之间就可以把数据当作一个双向字节流进行交换。就像我们打电话一样,互相能听到对方的说话,也知道对方的回应是什么。
UDP是无连接通信协议,UDP不保证可靠数据的传输,但能够向若干个目标发送数据,接收发自若干个源的数据。简单地说,如果一个主机想另外一台主机发送数据,这一数据就会立即发出,而不管另外一台主机是否已经准备接收数据。如果另外一台主机收到了数据,他不会确认收到与否。
就像传呼机给用户发信息一样,传呼台并不知道你是否能收到信息(为避免丢失用户信息,他们常常将一条信息发送两遍)。
TCP、UDP数据包(也叫数据帧)的基本格式如下:
协议类型 | 源IP | 目标IP | 源端口 | 目标端口 | 帧序号 | 帧数据 |