自学内容网 自学内容网

【计算机网络】UDP协议特点


UDP协调特点


1 socket阻塞和非阻塞


阻塞

老王烧水 把水壶放在炉子上 在旁边等着直到水开

优点 事情发送第一时间知道 等待时候进程挂起状态 不占cpu

非阻塞

老王烧水 把水壶放在炉子上 去看电视 每隔一段时间回来看一眼 CPU占用率高

sock默认是阻塞的 接收和发送都是阻塞的

sock设置阻塞


u_long iMode=1;
ioctlsocket(sock,FIONBIO,&iMode);

非阻塞 CPU占用率高 不推荐使用  


2 发送和接收缓冲区


缓冲区

创建socket时候 操作系统时候会根据socket分配一个接收缓冲区和发送缓冲区 都是64kb

windows操作系统给每个进程分配4g内存(0-2G 内核空间 2-4G 用户空间)

1 虚拟分配 应用程序实际没有4g空间使用 

2 内存分配所见地址是虚假的

操作系统根据端口号找到sock每个sock包含两个缓冲区(接收缓冲区,发送缓冲区)

利用recvfrom函数把缓冲区数据拷贝到自己变量中

发送缓冲区

发送缓冲区大小64KB

阻塞发送:

发送缓冲区不够大 等着 等足够大再发送

非阻塞发送 :

发送缓冲区不够大 还剩多大拷贝多大进去 剩余的给程序处理

sendto返回值int 如果反回值小于发送大小则再发送一次,防止数据丢失

足够大时 阻塞和非阻塞都直接拷贝数据向缓冲区

接收缓冲区

接收缓冲区大小64KB

当数据到达操作系统时候 ,操作系统会根据目的端口号找到之前绑定socket 把数据写入socket对应的缓冲区

当程序调用recvfrom函数时候就是从对应的缓存区接收数据到自己空间


3 UDP协议特点


1 面向非连接,创建socket可以接收任何人发来的数据

2 通讯方式 数据报文的通信方式 不可以拆分(接收也不)

3 传输效率高(和tcp相比)

4 会丢包出现乱序 但是没有校验和检查 没有解决方法

由于网络复杂产生的UDP对没有任何措施 不负责不在乎是否收到


原文地址:https://blog.csdn.net/2301_79461609/article/details/143697396

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!