• linux第9天 UDP


    今天学了一点UDP知识,还是IP协议.都不是重点,重点是socket服务器框架

    不过还是把今天学的东西,先罗列出来,将来复习的时候方便

    q  UDP报文可能会丢失、重复

    q  UDP报文可能会乱序

    q  UDP缺乏流量控制

    udp缓冲区写满以后,没有流量控制机制,会覆盖缓冲区。

    q  UDP协议数据报文截断

    如果接收到的数据报,大于缓冲区;报文可以被截断;后面的部分会丢失

    q  recvfrom返回0,不代表连接关闭,因为udp是无连接的。

    sendto可以发送数据0包。。。只含有udp头部。

    q  ICMP异步错误

    观察现象:关闭udp服务端,若启动udp客户端,从键盘接受数据后,再发送数据。udp客户端阻塞在sendto位置;

    //说明1udp发送报文的时,只把数据copy到发送缓冲区。在服务器没有起来的情况下,可以发送成功。

    说明2:所谓ICMP异步错误是指:发送的报文的时候,没有错误,接受报文recvfrom的时候,回收到ICMP应答

    说明3:异步的错误,是无法返回未连接的套接字。udp也可以调用connect

    q  UDP connect

    说明1//udp调用connet,并没有三次握手,只是维护了一个状态信息(和对等方的)。。。

    说明2//一但调用connect,就可以使用send函数

     

     

     

    结论:客户端调用connet和不调connet的区别。

    1)  udp也可以调用connet

    2)udp客户端调用了connect以后,不会阻塞在recvfrom函数这里。

    3)一但调用connect,就可以使用send函数

    4)  UDP协议数据报文截断

     

    如果接收到的数据报,大于缓冲区;报文可以被截断;后面的部分会丢失

     

     

    实验1

    //数据报方式。。。。不是字节流

             //如果接受数据时,指定的缓冲区的大小,较小;

             //剩余部分将要截断,扔掉

    实验2

     

    sendto可以发送0包,只含头部。

    UDP注意点

    q  UDP报文可能会丢失、重复

    q  UDP报文可能会乱序

    q  UDP缺乏流量控制

    udp缓冲区写满以后,没有流量控制机制,会覆盖缓冲区。

    q  UDP协议数据报文截断

    如果接收到的数据报,大于缓冲区;报文可以被截断;后面的部分会丢失

    q  recvfrom返回0,不代表连接关闭,因为udp是无连接的。

    sendto可以发送数据0包。。。只含有udp头部。

    q  ICMP异步错误

    观察现象:关闭udp服务端,若启动udp客户端,从键盘接受数据后,再发送数据。udp客户端阻塞在sendto位置;

    //说明1udp发送报文的时,只把数据copy到发送缓冲区。在服务器没有起来的情况下,可以发送成功。

    说明2:所谓ICMP异步错误是指:发送的报文的时候,没有错误,接受报文recvfrom的时候,回收到ICMP应答

    说明3:异步的错误,是无法返回未连接的套接字。udp也可以调用connect

    q  UDP connect

    说明1//udp调用connet,并没有三次握手,只是维护了一个状态信息(和对等方的)。。。

    说明2//一但调用connect,就可以使用send函数

  • 相关阅读:
    Redis与Redis 伪集群环境的搭建
    github的基本使用
    使用七牛云存储图片或文件并回显
    阿里云搭建wordpress博客教程
    判断是否同一天 同一月
    Python学习笔记之 并发编程
    Python学习笔记之 日志模块logging使用详解
    Python学习笔记之 网络编程(socket套接字编程)
    Python实现TCP文件传输
    实例:Python实现聊天室
  • 原文地址:https://www.cnblogs.com/c-slmax/p/5258484.html
Copyright © 2020-2023  润新知