TCP和UDP

本文详细介绍了TCP(传输控制协议)和UDP(用户数据报协议)在传输层的功能和区别,包括TCP的三次握手与四次挥手,TCP与UDP在可靠性、消息顺序、数据传输速度和头部大小等方面的对比,以及它们在不同应用场景下的选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Tcp(传输控制协议)和udp(用户数据报协议)是传输层的协议

Tcp和Udp之间的区别

  1. tcp面向连接,udp是无连接的协议

    tcp三次握手,四次挥手
    首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。
    四次挥手:中断请求可以是client端先发出也可以是server端先发出
    假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说”我Client端没有数据要发给你了”,但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,”告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息”。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,”告诉Client端,好了,我这边数据发完了,准备好关闭连接了”。Client端收到FIN报文后,”就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,”就知道可以断开连接了”。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!

  2. tcp可靠,udp不可靠
    tcp如果丢包会重传,udp不会

  3. tcp有序,udp无序
    消息在传递的时候可能是无序的,先发送的后到达,tcp会进行排序,udp不会进行排序

  4. tcp面向字节流,udp面向报文

    应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。
    TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。如果应用程序一次只发送一个字节,TCP也可以等待积累有足够多的字节后再构成报文段发送出去。

  5. tcp传递慢,udp传递快
    因为TCP需要建立连接、保证可靠性和有序性,所以比较耗时。这就是为什么视频流、广播电视、在线多媒体游戏等选择使用UDP。

  6. tcp的头部比udp的大
    注意:基于tcp的协议如http/https,Telnet ,ftp,smtp
    基于udp的协议:DHCP,DNS,SNMP,TFTP,BOOTP。

tcp流量控制

如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。
1. 滑动窗口实现流量控制
设A向B发送数据。在连接建立时,B告诉了A:“我的接收窗口是 rwnd = 400 ”(这里的 rwnd 表示 receiver window) 。因此,发送方的发送窗口不能超过接收方给出的接收窗口的数值。最后减到 rwnd = 0 ,即不允许发送方再发送数据了。

tcp拥塞控制

拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载,拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素。

几种拥塞控制的方法:


  1. 慢开始( slow-start )
  2. 拥塞避免( congestion avoidance )
  3. 快恢复( fast recovery )。
  4. 快重传( fast retransmit )
    慢开始算法:当主机开始发送数据时,如果立即所大量数据字节注入到网络,那么就有可能引起网络拥塞,因为现在并不清楚网络的负荷情况。因此,较好的方法是先探测一下,即由小到大逐渐增大发送窗口,也就是说,由小到大逐渐增大拥塞窗口数值。通常在刚刚开始发送报文段时,先把拥塞窗口 cwnd 设置为一个最大报文段MSS的数值。而在每收到一个对新的报文段的确认后,把拥塞窗口增加至多一个MSS的数值。用这样的方法逐步增大发送方的拥塞窗口 cwnd ,可以使分组注入到网络的速率更加合理。

一个传输轮次所经历的时间其实就是往返时间RTT
拥塞避免法:让拥塞窗口cwnd缓慢地增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍。这样拥塞窗口cwnd按线性规律缓慢增长,比慢开始算法的拥塞窗口增长速率缓慢得多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值