TCP和UDP的区别

首先我们要清楚tcp和udp都是位于OSI七层模型中的传输层协议,网络层在提供了主机到主机之间的逻辑通道后,而传输层则是建立主机上端到端的连接。

连接上:

TCP

TCP协议提供有连接的方式,既需要三次握手建立连接,四次挥手断开连接。

三次握手建立连接:

看下图

CLOSED状态:既关闭状态,此刻可以建立连接。

SYN_SENT状态:请求方在发送SYN标志位,和seq序列后,由CLOSED状态变为SYN_SENT状态。

SYN_RCVD状态:接收方在接收到请求方发来的seq后,进行确认,以及发送自己的SYN标志位和ACK标志位之后,由CLOSED状态变为SYN_RCVD状态。

ESTABLISHED状态:既连接建立成功后,所处的状态。发送方则是在发送ACK标志位,seq,ack后由SYN_SENT状态变为ESTABLISHED状态,接收方则是在接收到发送方的ACK标志位,seq,ack后由SYN_RCVD状态变为ESTABLISHED状态

四次挥手结束连接:

如下图:

FIN_WAIT1状态:由主动关闭的那一方,在发送FIN标志位,以及seq序列号后,由ESTABLISHED状态进入FIN_WAIT1状态。

CLOSE_WAIT状态:由被动关闭那一方,在接收到发送方发来的FIN报文,然后发送ACK报文确认后,由ESTABLISHED状态进入CLOSE_WAIT状态。

FIN_WAIT2状态:由主动关闭的那一方,在接收到接收方发来的ACK报文后,由FIN_WAIT1状态进入FIN_WAIT2状态。此状态下,处于半关闭状态,此时主动关闭方,已经不能在主动给接收方发送数据了,但是可以接收被动关闭方发来的数据。

LAST_ACK状态:由被动关闭那一方,发送FIN报文后,由CLOSE_WAIT状态进入LAST_ACK状态。

TIME_WAIT状态:由主动关闭的那一方,在接收到被动关闭方传来的FIN报文,然后发送ACK报文给接收方之后,由FIN_WAIT2状态进入TIME_WAIT状态。并且进入改状态后,会等待2MSL时间后,如果没有异常的话,则会自动进入CLOSED状态。

为什么等待2MSL时间?

首先我们要清楚,MSL]指的是最大报文生存时间(Maximum Segment Lifetime),它表示一个 TCP 报文在网络中能够存在的最长时间,通常以秒为单位。

确保可靠的连接关闭

TIME-WAIT 状态确保了连接的彻底关闭。在此状态下,连接的一方等待一段时间,以确保对方已经收到了连接关闭的确认信息。这样可以避免在关闭连接后,残留的数据包继续在网络中传输,从而确保了连接的可靠性和完整性。

防止新旧连接之间的混淆

TIME-WAIT 状态还有助于防止新的连接与旧的连接之间发生混淆。在该状态下,操作系统会保留连接的端口一段时间,以避免新的连接使用相同的端口号与之前的连接产生冲突。这样可以确保新连接不会错误地接收到之前连接的残留数据,从而保证了网络通信的可靠性和正确性。

UDP

UDP协议则提供无连接的方式,既不需要提前与要通信的设备建立连接,而是直接发送数据和接受数据。简单来说就是“发送既结束”。从而达到开销小,性能高的特点。

但是由于这种方式的通信,很容易出现丢包的现象,从而导致不可靠,安全性差的缺点。

传播方式上:

TCP:

tcp协议由于需要建立连接,因此只能实现点到点两者之间的传输,既单播传输。

UDP:

udp协议因为不需要建立连接,直接发送和接收数据即可,因此可以将一个数据包同时发送给多个接收者,而一个接收者也可以接收多个发送者发来的数据包,因此支持一对一,一对多,多对一,多对多的传输方式。

数据包传输方式上:

TCP:

面向字节流的,如果单个数据包过小,则会将多个数据包组合在一起,如果单个数据包过大,则会拆分成小一点的数据包,以字节流的方式进行数据传输。因此接收方,还需要处理接受到的数据包,进行解析。

UDP:

面向报文的,既会将数据包既不合并也不拆分,而是一个一个的发送给接收方。

是否可靠:

TCP:

可靠传输协议,因为tcp协议通过建立连接,确认应答,超时重传,滑动窗口等机制,实现可靠传输

UDP:

不可靠传输协议,因为udp协议不建立连接,只管数据包的发送和接收,对于丢包,堵塞等问题,在传输层并不考虑,从而导致不可靠传输

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码商道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值