一直想整理关于计算机网络相关的资料,虽然网上有很多详细的讲解,但是总是看过就忘了,所以为了治我这毛病,我还是将看过的一些文字装换成自己的想法和一些图片吧。主要还是以我之前了解不深的东西为主。
1 IP的基本定义
大概了解过IP的话,都知道Internet protocol 网际协议,位于网络层,提供一种不可靠、无连接的数据报传送服务。
但是为什么是不可靠的?什么是无连接的?
所谓的不可靠也就是不能保证数据报能成功到达目的地。IP提供最好的传输传输服务,但是发送某种错误的时候,如:
如某个路由器暂时用完了缓冲区,IP会直接进行数据报的丢弃,并发送ICMP消息给信源端。
无连接(connectionless)这个术语的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收。
在这个部分的话,我首先有疑问的是路由器,路由器到底是什么工作的?
普通的电脑也能变成路由器,只要具有分组转发的功能。而IP路由表会在下文中介绍。
2 IP首部
把IP首部以及相应的解释都放在上图,其实也能很直观的了解一些重要的部分,但是还需要注意两点:
1 TTL设置了数据报可以经过的最多路由器数,最开始也说了IP提供的是不可靠的服务,而TTL也能直观的说明原因。
2 首部检验和字段的规则:为了计算一份数据报的IP检验和,首先把检验和字段置为0。然后,对首部中每个16 bit进行二进制反码求和(整个首部看成是由一串16 bit的字组成),结果存在检验和字段中。当收到一份IP数据报后,同样对首部中每个16 bit进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。如果结果不是全1(即检验和错误),那么IP就丢弃收到的数据报。但是不生成差错报文,由上层去发现丢失的数据报并进行重传。
3 IP路由选择
最开始的时候大概的讲解了以下路由器的基本原则,但是看过可能会有以下的几个问题:
1 路由器一定是专业的计算机吗?普通用户电脑可以当成是路由器吗?
路由器最主要的任务是分组转发,也就是根据路由算法从一个接口转发到另一个接口。而IP层可以配置成主机的功能,也能配置成路由器的功能,
2 路由表是什么?
IP层在内存中有一个路由表。当收到一份数据报并进行发送时,都要对该表进行搜索一次。当数据报来自某个网络接口时,IP首先检查目的IP地址是否为本机的IP地址之一或者IP广播地址。如果确实是这样,数据报就被送到由IP首部协议字段所指定的协议模块进行处理。
IP路由选择主要完成以下的功能:
1 搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号和主机号都要匹配)。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。
2 搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。目的网络上的所有主机都可以通过这个表目来处置。例如,一个以太网上的所有主机都是通过这种表目进行寻径的。这种搜索网络的匹配方法必须考虑可能的子网掩码。关于这一点我们在下一节中进行讨论。
3 搜索路由表,寻找标为“默认(default)”的表目。如果找到,则把报文发送给该表目指定的下一站路由器。如果上面这些步骤都没有成功,那么该数据报就不能被传送。
这篇关于IP协议的读书笔记写的时候还是很基本的,会将计算机网络研究一边之后,再深入的改进。