TCP
- 需要将传输的文件分段,给每个数据包一个序号,确保收到之后以正确顺序组装
- 客户端与服务器建立会话
- 可靠传输 服务器发送数据包丢失,客户端会通知服务器重发
- 流量控制
建立连接
三次握手协议
终止连接
四次握手
UDP
- 一个数据包就能完成数据通信,不需要分段
- 不需要建立会话
- 不可靠传输
- 不需要流量控制
- 传输高效
应用场景
QQ聊天使用的是UDP协议
作为聊天软件,怎么可以采用这样的不可靠方式来传输消息呢?于是,腾讯采用了上层协议来保证可靠传输:如果客户端使用UDP协议发出消息后,服务器收到该包,需要使用UDP协议发回一个应答包。如此来保证消息可以无遗漏传输。之所以会发生在客户端明明看到“消息发送失败”但对方又收到了这个消息的情况,就是因为客户端发出的消息服务器已经收到并转发成功,但客户端由于网络原因没有收到服务器的应答包引起的。
QQ传输文件使用TCP协议
传输层协议 + 端口号 = 对应的应用层协议
TCP + 80 = HTTP
TCP + 443 = HTTPS
TCP + 3389 = RDP
TCP + 21 = FTP
TCP + 25 = SMTP (发邮件)
TCP + 110 = POP3 (收邮件)
UDP + 53 = DNS (将域名解析成IP地址)