网络:用2个IP地址描述一个连接

用2个IP地址描述一个连接。这是在阅读了《TCP/IP指南》后的感想,与工业标准不同,需注意区分。

如果一个IP地址有48位,则用96位描述一个连接

对于单播,是每个IP分别描述位置。位置包括:邮局编号+主机编号,采用固定长度。全球有80亿人,按100亿计算,开平方,得10万。每10万人分配一个“邮局”。

对于多播,第一个IP描述发起方,第二个IP仅是一个编号,说明这个连接是该IP发起的第几个多播,一般来说,值为1,第一个。

对于广播,和多播格式相同,只是编号为0。

例:
单播:0.2597.765->0.3254.99873(0表示单播,从2597号邮局的765号主机,向3254号邮局的99873号主机发送的数据包)

多播:1.25987.33765=>1.1(1表示多播,它发起的第1个直播,不同于->,这里用的是=>)

广播:1.25987.33765=>1.0(特殊值0表示广播)

若一个IP宽48位,则1位M,23位网络地址,24位主机地址。1+23+24=48,1+47=48
对多播和广播,也有1比特M,这是冗余设计。M=multi,“多”的意思。M=0单播,M=1多播和广播。

为了防止过度占用网络地址,也为了修改方便,用公式roundup(log2(全局人口/地区人口))算出每个地区(国家)占用多少比特。
例如,中国:
roundup(log2(80/14))=roundup(2.515)=3
美国:
roundup(log2(80/3.33))=roundup(4.586)=5
这些计算结果用于在单播地址的“邮局编号”中使用。再把二进制转化为十进制,这样一来,做两次减法,或进行几次位运算,就能知道邮局编号的归属地。

这里使用的是“邮局编号+主机编号”,书上的说法是“网络地址+主机地址”。

交换机的处理逻辑:
交换机有许多端口,连接着其它交换机或主机。它能记住去哪个IP地址需要从几号端口走,按照标准设计,一个邮局有10万主机,有约10万个邮局。一台交换机不一定要直接和10万台设备相连,但它要记住10万个地址,占用的内存约是:
100K×8B=800KB
不是很大,内存里装得下。
邮局之间也用交换机连接,算法相似。跨邮局的通信,先查看邮局编号是否相同?不同,则先转移到邮局,再在邮局间传递,最后送往目标主机。

多播的原理:
需要把从一个起点,到多个终点,的链路进行压缩。如:
45->36->99
45->36->98->47
这是个一对二的多播,有两条链路,压缩的结果是:节点45把数据传递给36,36要传递给98和99,98还要传递给47,99不用再传递了。
把链路集压缩,再传递给链路上的交换机,交换机只记住和自己相关的那一部分,这是种分布式吗?

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-13 22:04:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-13 22:04:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-13 22:04:02       82 阅读
  4. Python语言-面向对象

    2024-06-13 22:04:02       91 阅读

热门阅读

  1. 【无标题】

    2024-06-13 22:04:02       28 阅读
  2. vue3生命周期

    2024-06-13 22:04:02       25 阅读
  3. Qt | QTextStream 类(文本流)

    2024-06-13 22:04:02       24 阅读
  4. oppo手机精简包名列表

    2024-06-13 22:04:02       26 阅读
  5. SQL Server中的CTE和临时表优化

    2024-06-13 22:04:02       27 阅读
  6. Pipeline流水线组件

    2024-06-13 22:04:02       26 阅读
  7. 配置调整BGP网络的收敛速度方法

    2024-06-13 22:04:02       20 阅读
  8. Scikit Learn中支持单变量特征选择的SVM示例

    2024-06-13 22:04:02       23 阅读
  9. 一文入门机器学习

    2024-06-13 22:04:02       29 阅读
  10. Go AfterFunc 不触发

    2024-06-13 22:04:02       29 阅读
  11. 源码编译构建LAMP

    2024-06-13 22:04:02       26 阅读
  12. 超详细Python教程——迭代器和生成器综合例子

    2024-06-13 22:04:02       99 阅读
  13. C 运算符优先级

    2024-06-13 22:04:02       29 阅读
  14. windows执行定时任务

    2024-06-13 22:04:02       33 阅读
  15. 使用Kube-Bench对Kubernetes进行安全检测

    2024-06-13 22:04:02       41 阅读