Chinaunix首页 | 论坛 | 博客
  • 博客访问: 612628
  • 博文数量: 30
  • 博客积分: 125
  • 博客等级: 民兵
  • 技术积分: 1871
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-03 11:29
文章分类

全部博文(30)

文章存档

2014年(9)

2013年(21)

分类: LINUX

2013-04-08 21:18:49

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尽可能投递,所有的包同等对待,包的顺序等无法保证。

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

gfree_wind2013-04-09 12:45:14

每个层次有每个层次的功能,之所以分层,就为了集中精力干好某件事情。