当前位置:  技术问答>linux和unix

soket消息边界处理细节

    来源: 互联网  发布时间:2016-05-04

    本文导语:  http或者udp具体怎么处理soket消息边界,简单的分析下代码就好,把道理讲清楚就行 | 1.IP分片技术:当传输层要求传输大于MTU时,就会引起IP分片,分片后在目标端重组,对于发送与目标端的传输...

http或者udp具体怎么处理soket消息边界,简单的分析下代码就好,把道理讲清楚就行

|
1.IP分片技术:当传输层要求传输大于MTU时,就会引起IP分片,分片后在目标端重组,对于发送与目标端的传输层来说是透明的,一般情况下不用关心,但要明白一点,在局域网内MTU是1500,在广域网上一般为576字节,这是链路层的数据长度,在传输层时这个数据长度要小一些,另一方面,由于UDP是不可靠的传输协议,当中途的IP层分片后出现数据丢失的话,很有可能会导致丢弃整个UDP包,从而导致UDP数据包不可到达,最后还需要注意的是不同的网络协议的MTU值是不一样的,而路由器会因此执行IP分片,也就是说IP分片不仅会在操作系统的IP协议栈上执行,还有可能在路由器上执行

2.TCP流的消息边界:TCP流是没有消息边界的,就如同流水一样,源源不断,假定一端发送200个字节,另一端只接收100字节,那么还有100字节留在协议栈上以供你下次读取

3.UDP的消息边界:UDP有消息边界,但却依赖于不同的TCP/IP协议实现,比如一端发送200字节,另一端第一次只收100字节,那么第二次是否还能收到100字节,却依赖于不同的TCP/IP协议实现(有些协议栈会直接丢弃后100个字节),需要注意的一点是,发送端发送一个大小为8192字节的UDP包,接收端要么就收不到,要么就一定会收到8192字节(前提条件是这个长度要小于你接收端的UDP缓存大小),但应用层用不同的读取方式的执行结果,却依然于不同的TCP/IP协议实现

4.HTTP的消息边界:这个上面很多人都解释清楚了,由应用层自己断句自己分析

5.UDP的最大允许一次发送长度:有些协议栈实现是65535,有些是它的一半

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • oracle iis7站长之家
  • recv soket gif
  • java soket程序在Redhat Linux 5上运行汉字乱码.急................


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3