关于传输层中的UDP协议解析

首先在传输层中有两个重要协议,一个是TCP协议,另一个是UDP协议,两者有较大的区别,我们先来讲比较简单的UDP协议,UDP协议的特点有四个:1.无连接 2.不可靠传输 3.面向数据包 4.全双工。

无连接:

有连接和无连接的区别,我们举一个简单的例子,有连接就是打电话,无连接就是发微信,无脑给别人发微信,什么都不管,发出去的消息丢了也不去管。有连接就是你拨通电话,等对方通了电话,你才给对方发消息。这就是两者的区别。

不可靠传输:

可靠传输和不可靠传输,指的是你是否确定对方收到了你发的数据,就像你在打电话,如果对面对于你讲的话有了回应,就代表对面接收到了你的消息,如果对方迟迟没有答复就是没有收到你的消息,我们要如何保证可靠性,这不是UDP协议中该考虑的,因为UDP协议是一个不可靠传输,所以UDP不管你有没有收到这个数据,无脑传输,这就是不可靠传输。

面向数据报:

面向数据报,就是我们接受到的应用层数据不会进行拆分,而是原封不动的进行传输,所以我们客户端收到的数据,直接拿取载荷中的数据即可,面向数据报的优点之一就是不会出现粘包问题,但是UDP的传输数据长度有限,最大只能传输64K的数据。

全双工:

这个特点比较好理解,就是UDP的sokcet既可以读也可以写,我们想象成两根水管,一条用于传输,一条用于读取,互不影响。

UDP的报文结构:

UDP的报文结构比较简单,只由五部分组成:1.源端口 2.目的端口 3.UDP长度 4.校验和 5.数据

 

 源端口和目的端口我们可以想像成快递,从哪个地方发往哪个地方,发送方就是源端口,接收方就是目的端口。

UDP长度代表整个数据报的长度:数据报的长度 = UDP的header + 数据组成。

校验和:校验和是为了保证传输过程中发送方发送的数据和接收方发送的数据据保持一致,如果在校验的过程中发现不一致,就直接抛弃这个数据。发送方的数据为什么会和接收方收到的数据不一致呢,因为地球存在磁场,有几率导致一直现象叫做比特翻转,导致数据变化,这时候我们的数据在传输过程中就会发生一些改变。我们UDP所用的校验和方式是循环冗余校验,如果有兴趣,可以去了解一下。

最后一点,UDP没有发送缓冲区,就是我们应用层想要发送一个请求,UDP立马就发送出去,我们拿寄快递来说明会更加的清楚,假设我们要寄一个快递,你刚拿到快递公司,快递公司立马给你装车发货,速度很快,这也是UDP协议的一个特点,传输的速度很快。虽然没有发送缓冲区,但是UDP有接收缓冲区,就像我收到的快递会放在快递驿站一样,这个接收缓冲区是有大小限制的,如果接收方长时间没取数据,导致缓冲区满了,这时候在发过来的数据UDP会直接丢弃掉,非常的简单粗暴。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值