TCP
TCP是位于传输层的协议,它是面向链接的,提供全双工的服务,数据流可以双向传输。TCP是一种可靠的传输,它拥有三次握手机制保证数据传输的可靠性,如果对方没有接收到数据则会一直尝试重新传输。像FTP文件传输,远程登陆,HTTP,SMTP,HTTPS等等需要保证传输完整性的都是基于TCP协议。
UDP
UDP也是位于传输层的协议,它是无连接的,面向报文的协议。UDP只能使用尽最大努力交付,并不能保证数据100%的可靠传输,即便有丢包依然会继续传输。因此,UDP更加注重实时性,像语音,电话,视频都是通过UDP传输的,因为偶尔丢几个包并不影响通信。
IPC
IPC,全名Inter Process Communication即进程间通讯,在同一台机器上的两个进程就用IPC,不能跨物理机器,IPC包括共享内存、队列、信号量等几种方式,由于IPC通讯效率之高,所以大量的Unix下软件都用IPC通讯,如oracle。
TCP与UDP的异同
1.链接:TCP是面向连接的传输层协议,即传输数据之前必须建立好链接。UDP无连接
2.服务对象:TCP点对点两点间服务,即一条TCP链接只能有两个端点。UDP支持一对一,一对多,多对一,多对多的相互通信。
3.可靠性:TCP可靠交付。UDP尽最大努力交付。
4.拥塞控制/流量控制:TCP拥有拥塞控制和流量控制来保证数据传输的安全性。UDP则没有。
5.适用场景:TCP适用于数据完整性优先于通信实时性的场景。如果要求通信实时性则使用UDP。
TCP与UDP的优缺点
TCP优点:可靠,稳定
因为TCP有三次握手来建立连接,而且再数据传输的过程中拥有确认,窗口,重传,拥塞控制等机制,再数据传输完成之后还会断开连接来节约资源。
TCP缺点:效率低下,容易被攻击
每一次传输都需要先建立连接,而且传输过程中的各种机制都会消耗大量的时间。又因为
TCP是面向链接的协议,拥有三次握手机制,确认机制,这些也导致TCP容易被利用,实现DOS,DDOS,CC等攻击。
UDP优点:效率高,较为安全
由于UDP是无状态,无连接的传输协议,所以它的传输速度非常快,而且UDP没有各种控制机制,所以被攻击利用的机会就少一些。但并不意味着能避免被攻击。
UDP缺点:不可靠,不稳定
由于UDP是无连接的协议,而且没有TCP拥有的那些机制,所以在网络质量不好的情况下,UDP很容易造成丢包导致数据的缺失。
TCP与IPC的异同
IPC在同一台机器上的两个进程就用IPC,不能跨物理机器,IPC包括共享内存、队列、信号量等几种方式
TCP也叫IP,全名Transmission Control Protocol/Internet Protocol即传输控制协议/网间网协议,TCP/IP可在同一台机子或两台物理机或不同操作平台之间的两个进程进行通讯。
如果两个进程在同一台机子且在同一个操作平台,可选择IPC或TCP/IP两种通讯方式都可以,但IPC效率高于TCP/IP。采用IPC通讯,进程1直接把通讯包发给进程2,采用TCP/IP通讯,进程1将要先把通讯包发给“LO”即本地环路接口,通过“LO”再把通讯包发给进程2
如果两个进程在不同的物理机上或者在不同的操作平台,则不能用IPC,这时用TCP/IP通讯,进程1把通讯包发给本机的物理网卡1,物理网卡1通过网线把通讯包发给进程2所在的机器物理网卡2,网卡2再把通讯包发给进程2。