我就知道用udp时,ip数据报太大需要分片
还有哪些地方需要分呢?

解决方案 »

  1.   

    不需要了。TCP自动分片,udp的话应用层做好分片。
      

  2.   

    对于TCP来说很少发生IP分片的。   
      我传输了2000个字节,发现接收端接收了两次才接收完,这应该属于“TCP分片”   而不是IP分片。是不是这样啊
      

  3.   


    我是这样理解的:
    是不是udp程序 如果应用层发的包数据太大的话 在ip层会自动分段?
    tcp程序 如果应用层发的包数据太大的话 在传输层tcp会自动分段?大家说对不?
      

  4.   

    差不多TCP有最长报文大小MSS,这个MSS在协议实现的时候就是根据MTU实现的。而UDP没有这个玩意,所以在IP层的时候需要分片(根据MTU)。但是因为TCP是可靠地,所以TCP不会丢包。而IP是不可靠地,在加上传输层的UDP不可靠,所以应用层如果数据量太大的话,就会导致丢包。局域网还好,广域网经过路由就有问题了。
      

  5.   

    MSS是可协商项,而且在协商后,该选项内容可以改变,也可以没有。在协商MSS时,一般是建立TCP连接的两端发送【SYN】标志报文时互相通报,然后选取最小MSS作为双方的约定。如果双方都不通报,或有一方不通报,一般选择MSS的默认值536。
      

  6.   

    楼上说的不太对啊
    楼主可用看看这个
    http://hi.baidu.com/broland/blog/item/5d57fef981769d05d9f9fd3e.html
    MTU是物理设备决定的,我们适用TCP和UDP时,若发包大于MTU,网络系统会自动帮我们分好片。在使用UDP时可以自己定义包的大小,比如MTU是1500,一个3000的UDP包最好分为2个1500的包:分少了,只用一个3000的大包,在网络实际传输的时候,也会按MTU值给你分为两片传输,其中一片传输过程中丢失,会造成整个包被丢弃,重传3000数据;分为2个包,哪个包丢失重传哪个包,重传1500数据;分多了,影响传输效率,更多的包意味着更多的包头信息