TCP和UDP

区别

1、TCP 是面向连接的,可靠的数据传输服务,UDP 是面向无连接的,尽最大努力的数据传输服务,不保证数据传输的可靠性

2、TCP 面向字节流,UDP 面向报文

  • 应用进程交给 UDP 多长的报文,UDP 就照样发送,一次发送一个报文
  • TCP 在发送时采取的方式完全不同:TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应该包含多少个字节。如果报文太长,TCP 会将其拆分再发送,如果报文太短,TCP 会等待积累足够多的字节后再构成报文段发送出去

3、TCP 数据传输慢,UDP 数据传输快

4、TCP 有拥塞控制,UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有效,如直播,实时视频会议等)

5、TCP 只能是一对一的通信,而 UDP 支持一对一、一对多、多对一和多对多的通信

6、TCP 的首部开销大,有 20 个字节,比 UDP 的 8 个字节的首部要长。

7、TCP提供可靠全双功的通信服务。UDP是半双功,只能单向传播。

具体示意图查看TCP和UDP

适用场景

TCP 适用于效率要求相对低,但对准确性要求相对高的场景。因为传输中需要对数据确认、重发、排序等操作,相比之下效率没有UDP高。TCP 适用于电子邮件(SMTP)、远程终端接入(TELNET)、万维网(HTTP)、文件传送(FTP)

UDP 适用于效率要求相对高,对准确性要求相对低的场景。如视频直播、QQ语音电话等即时通讯、广播通信。开销小(因为提供可靠的、面向连接的运输服务,会多很多开销比如确认、流量控制、计时器、连接管理等),也适用于简单文件传送(TFTP)、路由选择协议(RIP)、域名系统(DNS)等

对应协议

TCP对应的协议

FTP(21):定义了文件传输协议,使用21端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。

ssh(22): 专为远程登录会话和其他网络服务提供安全性的协议

Telnet(23):(远程登陆协议)它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。如以前的BBS是-纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。

SMTP(25):定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常见的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置-中常看到有这么SMTP端口设置这个栏,服务器开放的是25号端口。

POP3(110):它是和SMTP对应,POP3用于接收邮件。通常情况下,POP3协议所用的是110端口。也是说,只要你有相应的使用POP3协议的程序(例如Fo-xmail或Outlook),就可以不以Web方式登陆进邮箱界面,直接用邮件程序就可以收到邮件(如是163邮箱就没有必要先进入网易网站,再进入自己的邮-箱来收信)。

HTTP(80):是从Web服务器传输超文本到本地浏览器的传送协议。

UDP对应的协议

DNS(53):用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。

RIP(520):路由信息协议,端口520

SNMP(161):简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

TFTP(69):简单文件传输协议,该协议在熟知端口69上使用UDP服务。

参考