diff --git a/network/IP layer.md b/network/IP layer.md index ccc3bd8..aa626b6 100644 --- a/network/IP layer.md +++ b/network/IP layer.md @@ -1,5 +1,25 @@ 网际协议IP知识总结 -=============== +================ + +## 知识脉络 + +网际层的主要工作是实现数据在异构网络之间的传输,即处于两个不同的网络中的主机的通信。对于要发送数据的主机而言,最重要的任务是如何定位它想要与之通信的主机,即`路由选择`的问题。网际层的所有内容几乎都是围绕`路由选择`而展开,具体说来又分为两部分,即网际结构(我自己定义的词语)和路由选择协议。 + +因特网是一个庞大的网络,其中含有亿万计的节点,并且整个网络还处于动态变化当中——随时都有主机接入接出,也随时都有路由器发生故障。在这样的网络中找到数据传输的最短路径,显然是不能通过常规的图算法来做的,这里的基本思想在于`层次化`,把大网络拆分成小网络,然后再对小网络小网络进行拆分,形成一个树形结构。 + +层次化第一条,进行网络的划分。将IP地址拆分成了`网络号: 主机号`,即传统的A, B, C类网络。在同一个网络中的主机,往往在地理位置上也接近,它们拥有相同的网络号,这样在数据传输时,所有数据都是首先传输到该网络,再由该网络的路由器进行分发;在进行路由选择时,所有在一个网络内的主机,使用同一个网络号作为它们的标识,以B类网络为例,一个B类网络中最多的65534台主机使用了同一个路由表项,大大减小了路由表的大小。 + +层次化第二条,构造子网。以A类网络为例,一个A类网络内最多拥有`2^24 - 2`台主机,数据分发到该网络后,定位合适的主机也是一个复杂的问题。因此可以对网络进行进一步的划分,形成网络的树形结构,数据首先传输到层次更高的路由器,再一级一级地向叶节点方向转发。 + +层次化第三条,路由聚合,即构造超网。对于不同的网络,尽管它们的网络号不同,却具有相同的网络号前缀,在进行路由转发时,这些网络都是从同一个端口转发。这样就可以把这些不同的网络,在逻辑上组成一个更大的网络(网络号即是它们的前缀),路由表只需要存储这个更大的网络的转发表项,可以减小路由表的大小。 + +层次化第四条,自治系统与自治区域。将一个区域的许许多多不同的网络,构成一个自治系统,往往是一个国家或者行政区,自治系统具有一些`边界路由器`,负责与其他自治系统的通信——所有传输到该自治系统的数据,都首先传输到`边界路由器`,再由`边界路由器`进行转发。同理,自治系统内部还可以划分自治区域,进一步实现层次化。 + +层次化第五条,本地地址与全球地址。由于IP地址的消耗,无法做到每台主机都拥有一个全球IP地址,实际上,一般的主机上网,都是使用本地地址,本地地址必须要转换成全球地址才能进行通信,这个转化过程是通过网络地址转换(NAT, Network Address Translation)来实现的。这样,连接到一个路由器的主机,都获得一个本地地址,然后统一使用路由器的全球地址接入到互联网,在这种情况下,就相当于32位IP地址都成为了网络地址,将IP地址进一步层次化了。还有一个好处就是缓解了IP地址的消耗。 + +上面的内容都是在讨论因特网的网际结构的问题,搭建好了结构,还需要在这样的结构上实现一定的路由选择算法。这样涉及到的算法有`路由信息协议`(RIP, Routing Information Protocal),`开放最短路径优先`(OSPF, Open Shortest Path First),还有外部网关协议`边界网关协议`(BGP, Border Gate Protocal),内容都比较简单,就不再赘述了。 + +此外,IP层还涉及到一些概念,一些细节,在这里没有涉及。包括IP数据报的头部结构,ICMP以及它的两个典型应用场合(ping, traceroute)还有IP组播以及虚拟专用网络(VPN)等概念。 ## 网际层提供的功能 diff --git a/network/Transport Layer.md b/network/Transport Layer.md index 69b8cfd..7f6e66c 100644 --- a/network/Transport Layer.md +++ b/network/Transport Layer.md @@ -1,6 +1,10 @@ 传输层协议知识总结 ================ +## 知识脉络 + +感觉TCP内容很多都非常细节,我的知识不是很成体系,就不写了。王道上面对重要的知识点都有简练的总结,而我下面的总结,则从设计思想的角度探讨某个协议的历史与逻辑根源。 + ## 传输层提供的功能 ### 进程之间的通信