memoryboxes blog

Been here so long got to calling it home.

用TCP/IP进行网际互连 (笔记)

| Comments

还是要补习基础知识啊。

譬如TCP的状态机转换,我每次都得花很长很长的时间才能反应过来什么时候会进入TIME_WAIT,CLOSE_WAIT….

譬如一个pcap包,看了很长很长时间才发现是个规避糊涂窗口的Nagle算法…

譬如这本书,每次扫一遍好像都能知道怎么回事,过了段时间就又雾里看花了….

这次通读一遍,又发现一些有意思的东西,记一下:

底层网络技术回顾

  • 最初的电话系统是面向连接的电路交换,后期(就是现在)的IP网络是基于分组交换的

    讲起来很简单,实际上为了实现分组交换网上的通信质量达到电路直接交换的效果,还是要付出很大努力,才能克服时延、抖动、通信质量等多个问题

  • 以太网容量

    当前以太网不是为一对计算机之间提供可能的最高吞吐率而优化的,而是为更多网点介入和更多通信总量优化的。当前10G以太网的帧长度和格式还是保持10M网的标准,从这方面看,10G以太网在物理层的协议上还是有优化余地的。

  • POE可以提供48V,不超过15.4W的功率消耗,这个数字还是挺可观的

  • 关于以太网的一些特点

    CSMA/CD 是很简单但有效的手段,值得后来的分布式系统借鉴

    以太网在物理层上只是”尽最大努力交付(best effort delivery)“,但如果碰到问题,错误不会得到通知,数据包会丢弃

    frame帧大小 64B~1518B

    线缆的集合造就集线器,集线器升级为连接任意多的以太网就变成网桥,网桥提供自适应的帧转发,这样任意多的以太网就集合为一个物理网络,他们也遵循CSMA/CD。网桥提供更完善的隔离和配置方案就变成了交换机。

    以太网的地址(MAC)是要向IEEE买的

    以太网基础上升级为WIFI就有了两个很重要的技能:

    * 可作为接入点基站
    * 可作为接入点连接(点对点),也就是WI-MAX
    

网际互联的模型

  • 路由器的工作,某种情况下和DHT很相似,不过实现的约束更多一些

  • 定向广播地址,主机号都为1

  • 受限广播地址,255.255.255.255 (本地子网广播)

  • 0.0.0.0有时候也用于广播,这是早期BSD实现的一个bug。后来有些软件为了兼容,也这么实现了。

  • 0.0.0.0 表示无路由目标,有些应用把绑定这个的设置,认为是绑定全部本地IP。类似于一些设置中,设为0就相当于该项设置无限制。

  • 127.0.0.1 是本地环回地址, 专供自己访问自己, 速度大( 不用经过整个协议栈 )

  • 地址管理早期是由IANA 管理的,早期的IANA地址维护者仅仅是一个人,Jon Postel,这位传奇人物在1998年过世,后来IANA成长为更完善的组织,ICANN是也,目前由ICANN管理地址相关分配工作。

  • IBM的地址段是9.0.0.0,AT&T的地址段是12.0.0.0

ARP

  • 没什么好讲的了,这个是最熟悉的

无连接网络

* 错误会被丢弃!!!

* IP报文已经包含了源-目的地址

* 分片控制

* 优先级

* 校验和

* 路由信息和时间戳

ICMP

  • 最好和Ping结合起来学习

最后,读这本书后面的应用层也很好玩,能延伸想象很多东西,比如现在Linux下虚拟网卡的实现,Vmware如何虚拟物理网卡的,还有早期浩方上如果实现虚拟局域网的,很多原来看起来Magic的东西,其实原理很简单,平时多想想会很有趣。

从TCP/IP的设计来看,我们的网络应用还是停留在很”初级”的阶段,还没有完全发挥出他的潜力。未来肯定还会出现像P2P软件这样神奇的颠覆者,TCP/IP所承载的流量也会一次次变化,如果把TCP/IP比作海的话,不知道下一位弄潮儿是谁。

Comments