1、Linux网络编程/套接字编程
现在大多数计算机网络都是根据TCP/IP协议栈搭建起来的,为了具体实现TCP/IP协议栈,Linux操作系统就对外提供了一套可供程序员做网络开发所用的操作接口,这就是Socket编程接口,这就是用来进行Linux网络编程项目开发的一些最基本的接口函数,比如socket、listen、connect、accept、send、read和write等等。总而言之,Socket是Linux操作系统下的一套API工具,Linux网络编程就是依靠这套工具实现TCP/IP协议栈的。
2、TCP和UDP的区别
基本上所有的网络服务都分为两种,一种是基于面向连接的可靠通信,一种是无面向连接的不可靠通信,分别对应是TCP/IP协议栈里传输层的TCP协议和UDP协议,他们接受下层网络层IP协议的服务同时为上层应用层的各种协议提供服务,因此Linux环境下Socket网络编程的程序设计也有两种:①基于TCP服务应用,数据流套接字(SOCK_STREAM); ②基于UDP服务应用 数据报套接字(DGRAM):
1、TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在很大程度上保证了连接的可靠性;而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议。
2、也正由于1所说的特点,使得UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好。知道了TCP和UDP的区别,就不难理解为何采用TCP传输协议的MSN比采用UDP的QQ传输文件慢了,但并不能说QQ的通信是不安全的,