TCP/UDP 总结

TCP是一种面向连接、提供可靠传输服务的协议,适用于文件传输、邮件发送和远程登录等场景,通过超时重发、数据校验等方式确保数据可靠性。而UDP是面向非连接、效率更高的协议,常用于即时通讯、在线视频和VoIP,允许一定程度的数据丢失或错误。

一、TCP/UDP 区别

1、TCP是面向连接的,即发送数据前必须要建立连接。而UDP是面向非连接的,发送数据前不需要建立连接。所以UDP的效率更高。
2、TCP提供可靠的传输服务,即传输的数据无差错、不丢失、不重复、按序到达。UDP尽最大努力交付,但是不能保证可靠交付。
3、TCP面向字节流,实际上是把数据看成一串无结构的字节流。而UDP是面向报文的,UDP没有拥塞控制,即使网络拥塞也不会使发送端的发送速率降低,但是对实时应用很有用(例如IP电话、视频直播等)。
4、TCP只能是点对点,而UDP可以是一对一、一对多、多对一、多对多的通信。
5、TCP首部开销20个字节,UDP开销较小,只是8个字节。
6、TCP逻辑上是全双工的可靠信道,UDP则是不可靠信道。

二、应用场景
TCP:
1、文件传输,例如http、ftp对数据可靠性要求较高,数度可以相对慢。
2、发送邮件,例如POP、IMAP、SMTP对数据准确性要求非常高,但实时性较低。
3、远程登录,例如telnet、SSH对数据的准确性有一点的要求,有链接概念。
UDP:
1、即时通信 聊天,对数据准确性要求较低,但是实时性要求较高。
2、在线视频 例如RTSP,实时性要求高,偶尔丢一帧,出现花帧的情况用户也能接受。
3、网络语音电话 VoIP,语音数据包一般比较小、要求发送速度快,偶尔断音或串音也没问题。

三、TCP 为什么可以提供可靠的数据传输

总结:合理截断数据包、超时重发、校验、失序重新排序、丢弃重复数据、进行流量控制。

TCP提供一种可靠的、面向连接的字节流服务。
面向连接:两个使用TCP的应用,(C、S),在彼此交换数据之前,必须先建立一个连接,在一个tcp连接中,仅有两方进行通信。广播和多播不能用于TCP。

TCP通过下面的方式实现可靠传输:
1、将数据截断成合理的数据长度
应用数据被分割成TCP认为最适合传输的数据块。这和UDP不通,应用程序产生的报文长度保持不变。

2、超时重发
TCP发出一段数据后,C端将启动一个定时器,等待S端发出确认信息,如果不能按时收到确认,将重发这一段数据。

3、对发出的请求做出响应,响应有延时是因为会对数据进行校验
当S端收到C端发送的数据后,将发送一个确认信息。但这个确认信息不是马上发送,而是要过一小段时间,因为S端要先进行数据校验。

4、检验出包有错,丢弃报文段,不作出响应,超时后,发送端会重传这条数据
TCP将保持它首部和数据的校验和。这是一个端到端的数据校验和,目的是检测数据在传输过程中的任何变化。如果收到的数据校验和有问题,将丢弃这段数据,并且不发送确认信息,另一端的等待确认超时后,就会重新发送这段数据。

5、对失序的数据重新排序,然后再交给应用层
TCP报文段作为IP报文进行传输,而IP报文的到达可能是无序的,因此TCP报文段就可能是无序的。如果必要,TCP将收到报文进行重新排序,处理完成后发送给应用层。

6、丢弃重复数据
IP报文也用可能会重复,TCP接收端必须丢弃重复的数据。

7、进行流量控制,可以防止较快主机导致较慢主机的缓冲区溢出
TCP还能提供流量控制。TCP连接的每一端都有固定的缓冲空间。TCP的接收端只允许另一端发出接收端缓冲空间大小的数据。这将防止较快主机致使较慢主机缓冲端溢出的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值