TCP/IP详解读书笔记二 UDP

来源:互联网 发布:c语言max函数头文件 编辑:程序博客网 时间:2024/06/04 19:00

       本来应该接着说一下IP 路由方面的内容,但是书看完都快半年了。。。最近才开始接着想写。IP路由方面已经快没有印象了。。。工作中如果不接触,真的很容易忘记。。。

     如果非要说一下路由,俺只能从“印象”中描述一下,路由器依赖路由表来指导IP报 走向,路由表可以人工添加,也可以是机器自已“学习”,路由器之间可以交换信息。这方面知       识个人没有实际经验,感受实在不强。只是做过个人机器上的路由器可以通过 命令来增删,从来决定向目标IP的IP包流外。

      直接来说一下UDP吧,程序员还是经常用得到:)


   一、简介

     UDP 用户数据报协议,它提供一个不可靠的通信方式。 

     为什么说它“不可靠”是因为 UDP只管发送,不管收,简单地说,当这个报文 从网卡发去后,UDP协议就完成任务了, 不用考虑其它的因素。

     那么“不可靠”的问题怎么解决呢? 其实做一个可靠的程序,一般来说都会 在程序中再保证了。

    打个比方:

    A和 B发短信。 A短信“B君,你好啊。”发出后,A也不知道B有没有收到短信,这样就是“不可靠”了

    

   换个情况

   A和 B发短信。 A短信“B君,你好啊。”发出后,再从B的那一端收到一个“我B君收到了你A君的短信:B君,好好啊。”。 这样就能够“可靠”点了。

  再优化一下:

  A和 B发短信。 A短信“B君,你好啊。”发出后,等了30秒还没有从B的那一端收到一个类似的确认“我B君收到了你A君的短信:B君,好好啊。”。

  于是A这边再重新发送一次,再发一次后,收到了B的回复。 这样又再“可靠”一点。 

   

  我们把A和B之间信息传输当成UDP协议,把“收到短信后发送一个确认”,“没有收到确认信息,再重发一次短信” 这种机制当做UDP上层协议。

  二、IP分片

        在一个以太网上,数据帧数据最大长度1500bytes,其中 IP首部20bytes,UDP首部8bytes,所以UDP的数据长度1472。当数据超过1472bytes,IP层就会发生分片。   

       如果你的程序只直接操作网卡发送IP和ethernet报,那么你需要在实现 应用时,关注这个问题。

       这个时候你需要熟悉一下IP是如何分片的。如果你是jpcap的使用者,某个分片的的标记位,jpcap实现错误。在不分片的时候不会有问题,发生分片时,问题就出来了。

    

三、最大UDP数据报长度

      理论数值是65507bytes,因为IP数据报的最大长度是65535,   这是由IP首部16bit总长度所限制的。实现应用时要关注这点。


   

  

     


    

  


原创粉丝点击