本帖最后由 VisualEleven 于 2010-12-07 16:53:06 编辑

解决方案 »

  1.   

    1.也有可能丢片,所以需要自己接收后校验
    2.网络分片,取决于下层,UDP收到后,下层会帮你拼接好
      

  2.   

    1 不会,数据包都会做校验的,只要有一点不正确就会丢弃。
    2 UDP不会。UDP就是发多大的包就收多大的包,只要有一点不正确就会丢弃。TCP才会出现拆包与拼包。
      

  3.   

    1、不会出现你想的 半个包的情况
    2、TCP会 UDP不会
    参考http://hi.baidu.com/chongerfeia/blog/item/b1e572f631dd7e28bd310965.html
      

  4.   

    在互联网的复杂环境中,UDP单个数据包多长比较合理?1024?512?还是1024*4
      

  5.   


    楼主看这个帖子http://topic.csdn.net/t/20021125/16/1203810.html
      

  6.   

    还有这个http://topic.csdn.net/t/20041227/15/3679599.html
      

  7.   

    都是大家转大家的
    应用 soc
    传输 tcp / udp
    网络 ip消息从上到下从下到上~你是在应用层,组包这种事不是你考虑的,如果是考虑到了效率上可能要考虑那1500字节的问题~
      

  8.   

    1. 不会有收到半个包的情况,只要不正确就丢弃了
    2. UDP不会拆包
      

  9.   

    2.2.UDP检验和
    这是一个可选的选项,并不是所有的系统都对UDP数据包加以检验和数据(相对TCP协议的必须来说),但是RFC中标准要求,发送端应该计算检验和。UDP检验和覆盖UDP协议头和数据,这和IP的检验和是不同的,IP协议的检验和只是覆盖IP数据头,并不覆盖所有的数据。UDP和TCP都包含一个伪首部,这是为了计算检验和而摄制的。伪首部甚至还包含IP地址这样的IP协议里面都有的信息,目的是让UDP两次检查数据是否已经正确到达目的地。如果发送端没有打开检验和选项,而接收端计算检验和有差错,那么UDP数据将会被悄悄的丢掉(不保证送达),而不产生任何差错报文。2.3.UDP长度
    UDP可以很长很长,可以有65535字节那么长。但是一般网络在传送的时候,一次一般传送不了那么长的协议(涉及到MTU的问题),就只好对数据分片,当然,这些是对UDP等上级协议透明的,UDP不需要关心IP协议层对数据如何分片,下一个章节将会稍微讨论一些分片的策略。3.IP分片
    IP在从上层接到数据以后,要根据IP地址来判断从那个接口发送数据(通过选路),并进行MTU的查询,如果数据大小超过MTU就进行数据分片。数据的分片是对上层和下层透明,而数据也只是到达目的地还会被重新组装,不过不用担心,IP层提供了足够的信息进行数据的再组装。在IP头里面,16bit识别号唯一记录了一个IP包的ID,具有同一个ID的IP片将会被重新组装;而13位片偏移则记录了某IP片相对整个包的位置;而这两个表示中间的3bit标志则标示着该分片后面是否还有新的分片。这三个标示就组成了IP分片的所有信息,接受方就可以利用这些信息对IP数据进行重新组织