zoukankan      html  css  js  c++  java
  • 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函数

  • 相关阅读:
    后台取得非服务器控件的一种方法(Request.Form.GetKey(i))
    扩展jQuery键盘事件的几个基本方法(练习jQuery插件扩展)
    Javascript得到CheckBoxList的Value
    sql server的count(小技巧)
    oracle数据库约束条件删除、取消、启用
    iis7.0修改网站端口
    session模式和web园
    理解Session State模式+ASP.NET SESSION丢失FAQ (转)
    Gridview中生成的属性rules="all",在Firefox出现内线框解决办法
    一个类windows系统的效果图
  • 原文地址:https://www.cnblogs.com/c-slmax/p/5258484.html
Copyright © 2011-2022 走看看