linux学习之路2011.8.25

MTU (最大传输单元) 大小由硬件规定 ,当数据包比MTU大时IPv4和6都会止执行分片,达到目的地前不会被重组。


 


当调用write时,应用程序缓冲区中的数据将会被copy到套接口缓冲区中,当
write的字节数>socket发送缓冲区时
对于阻塞I/O: 将会阻塞write系统调用直到数据完全copy到套接口发送缓冲区,在这种情况下一般只考虑是否有错误发生,不需要考虑写入了多少
对于非阻塞I/O: 在设定的发送时间范围内能发多少发多少,返回发送成功的字节数. 但是得注意返回错误的特定情况.
在实际应用中,情况如下:
一般是用setsockopt函数设置发送阻塞的时间,然后调用send()发送数据,当超出这个时间,send函数会返回已发送的数据大小, 但是请注意此时缓存中可能还有些数据没有发送到网络上.
那么当在应用层再一次调用send函数时,就会报告经典的错误:
Resource temporarily unavailable
那么如果是阻塞情况,send函数会一直等到所有应用层的数据全部发送完毕再返回.




UDP是不可靠连接,所以他的缓冲区不必保存应用进程的数据拷贝,因此基本只是起一个限制数据包大小的作用,若超过了则返回mesgsize错误



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值