网络协议详解 :UDP

目录

网络存在的问题

网络传送的不可靠

网络不安全

传输层的UDP

UDP工作机制

应用层观察UDP的特点

缺点

优点

UDP Header结构

 checksum(校验和)

UDP接收缓冲区 

缓冲区概念

 接收缓冲区

 UDP发送成功现象

UDP传输总结

1.发送

 2.接收


网络存在的问题

在网络中的变数很多,因为要经过的传播路由太多,最后得到的数据也不一定能完整。

网络传送的不可靠

1.发送了数据,对方不一定能收到

2.不能严格按照发送的顺序被对方接收

网络不安全

1.我们发送的数据很有可能在途径路由时被查看,修改,窃听等等

2.可能会有人伪造我们发送的数据直接给别人

那么关于以上两点,就需要交给网络层以上解决

传输层的UDP

全名 User Datagram Protocol : 用户报文协议

UDP就是一个非常简单的传输层协议,只能完成传输层最基本的职责。

说UDP不可靠,真是因为他什么操作也没有,起不到保护作用。

UDP工作机制

我觉得老师的图非常好,所以我只在概念上做几点说明

先上图

网络协议详解 :UDP_第1张图片

 UDP的报头(header),可以理解成就是快递单上的地址,一会儿再详细说明。

payload也就是数据内容,由应用层提供再由传输层打包

那么UDP的职责就是将应用层的payload打包,贴上标签,然后就往网络层发送,

至于到没到接收者手里,发送者无从知晓

应用层观察UDP的特点

缺点

不可靠,在上述的红字有所体现。

优点

无连接:不会一直占用服务器

面向数据报文:不会拆开数据包来看,不会因此破坏数据顺序结构和完整性

成本低:就是便宜

UDP Header结构

UDP的header放了双方的IP和端口,长度8个字节

图中为整个报文结构,UDP长度就是报文长度

payload就是除去header剩下的报文长度

网络协议详解 :UDP_第2张图片

 checksum(校验和)

就像是验证完整性这么的一个东西,比如你steam下载完解压的时候你要验证文件对不对,网络发文件也要用。

多用于远距离通信,保证数据完整性和准确性。

当我发送的时候,我会把原始数据的checksum放在header中,等接收方一收到,会再计算出一个checksum,两个校验对比,不一样,那就证明数据被损坏或者修改过来。

UDP接收缓冲区 

缓冲区概念

从应用层到数据链路层中,保存数据的区域都可以称为缓冲区,概念比较抽象

网络协议详解 :UDP_第3张图片

 接收缓冲区

UDP没有发送缓冲区,只有接收缓冲区。

我们理解为,接收方的UDP接收到数据后,不需要立刻被应用层拿走,放在接收缓冲区默默等待即可,但如果应用层在接收缓冲区没有东西的时候去拿数据,又没有超时机制的话,就会死等了。

 UDP发送成功现象

一句话,UDP只要把数据放到网上那就是发送成功了,收没收到跟我没关系

UDP传输总结

1.发送

1.从应用层先收到payload数据,相当于把应用层的内存数据拷贝到自己的内核内存区域

2.准备header部分:

1).源端口(socket里就有,也不用自己写)

2).目标端口

3).UDP长度

4).checksum

3.header+payload 就相当于 datagram

4.直接把打包好的datagram交给网络层发送

5.只要网络层发送成功(数据已经到达网卡)

6.通知应用层发送成功

如果接收方能收到,一定是原封不动完好无损的数据,这就是面向数据报文的好处

 2.接收

1.将从网络层收到的包裹放到内核缓冲区

2.通过header定长,把包裹分解为header部分和payload部分 - 解包

3.读取header部分,包括端口,ip信息,checksum(校验和),长度等

4.长度不对直接扔,谁也不需要告诉

5.checksum(校验和)不对直接扔

6.把payload放到接收缓冲区

7.通知应用层数据到了

8.应用层来取

9.应用层一直不来,信息照样可以扔

你可能感兴趣的:(web,网络协议,网络,udp)