计算机网络中学过,网络由下往上分为:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。
TCP 即Transmission Control Protocol,传输控制协议
UDP 即User Data Protocol,用户数据报协议
而各层对应的协议如下图
可以看出,IP协议对应于网络层,TCP协议和UDP协议对应于传输层,而HTTP协议对应于应用层。
Socket是对TCP/IP协议等的封装和应用,Socket本身并不是协议,而是一个调用接口(API),通过Socket我们才能使用TCP/IP协议。TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口,这就像操作系统会提供标准的编程接口,比如Win32编程接口。TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。
TCP/IP协议主要解决数据如何在网络中传输,而HTTP协议主要解决如何包装数据。
TCP协议的三次握手
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即
SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和
服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过四次握手。
TCP协议与UDP协议的区别(犹如打电话和发短信的区别)
首先我们要知道TCP协议是一种面向连接服务的协议,而UDP协议是一种无连接服务的协议。
面向连接服务的特点:数据传输前,先建立连接,连接建立后再传输数据,数据传送完后,释放连接。面向连接服务,可确保数据传送的次序和传输的可靠性。
无连接服务的特点是:无连接服务只有传输数据阶段。消除了除数据通信外的其它开销。只要发送实体是活跃的,无须接收实体也是活跃的。它的优点是灵活方便、迅速,特别适合于传送少量零星的报文,但无连接服务不能防止报文的丢失、重复或失序。
知道了TCP协议和UDP协议的区别,就不难理解为何采用TCP传输协议的MSN比采用UDP协议的QQ传输文件慢了,但不能说QQ通信是不安全的,因为可以手动对UDP数据的收发进行验证。