Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1856304
  • 博文数量: 317
  • 博客积分: 1557
  • 博客等级: 上尉
  • 技术积分: 1208
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-26 23:38
个人简介

如果想出发,就不要等到明天!

文章分类

全部博文(317)

文章存档

2016年(1)

2015年(41)

2014年(152)

2013年(114)

2012年(4)

2011年(1)

2009年(4)

分类: LINUX

2013-07-10 09:50:37

1.从协议设计的角度讲,各层分开设计有利于实现。
2.某些场景需要这些重复功能
    举例来说,TCP和MAC层都有checksum,但是这种设计并非冗余
    1)某些应用不需要经过MAC层,比如TCP本地回环通信
        还有内核态和用户态调用socket通信
        这种情况下,TCP层单独的校验和就派上用场了
    2)如果硬件支持的话
        接收到的数据包skb->ip_summed==CHECKSUM_COMPLETE,只需要校验伪首部和。
        发送数据包时,skb->ip_summed==CHECKSUM_PARTIAL,也只需要计算伪首部校验和
        注:硬件并非直接更改内核,也没有这个可能。只是收到包时,驱动可以根据硬件汇报的状态修改相应字段
3.从另一方面考虑,能不能去掉一层
    例如能不能去掉TCP层?ip层加上checksum、重传等功能,可否代替TCP?
    1)TCP多了拥塞控制,能及时调整发送速率,这部分功能至关重要。
        而IP是尽可能发送
    2)TCP为应用提供可靠服务
        IP尽可能投递,所有的包同等对待,包的顺序等无法保证。

注:上述内容部分来自于论坛讨论及课堂,如有异议,请及时回复
转载请注明出处
阅读(824) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~