• 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函数

  • 相关阅读:
    我的git笔记
    我的 Sublime Text 2 笔记
    在Windows系统配置Jekyll
    纯CSS3打造七巧板
    JavaScript原型之路
    基于Grunt构建一个JavaScript库
    How React Works (一)首次渲染
    hadoop2.4 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    pyinstaller打包python源程序访问hive
    hadoop balance均衡datanode存储不起作用问题分析
  • 原文地址:https://www.cnblogs.com/c-slmax/p/5258484.html
Copyright © 2020-2023  润新知