计算机网络——网络层协议

来源:互联网 发布:go语言编程 视频 编辑:程序博客网 时间:2024/06/05 05:56

IP:网际协议

IP是TCP/IP协议中最为核心的协议,所有TCP、UPD、ICMP和IGMP数据都是以IP数据报格式传输。
IP协议提供不可靠、无连接的数据报传输服务。
不可靠(unreliable):的意思是它不保证IP数据报能成功的到达目的地。IP仅提供最好的传输服务。
无连接:是指IP并不维护任何关于后续数据报的状态信息,每个数据报的处理是相互独立的。

IP首部

4个字节的32位bit值以下面的次序传输:首先是0~7bit,其次是8~15bit,然后16~23bit,最后是24~31bit。这种传输次序称作big endian字节序。由于TCP/IP首部中所有二进制整数在网络中传输时都要以这种次序,因此它又称作网络字节序。

以其他形式存储二进制整数的机器,如little endian格式,则必须在传输数据之前把首部转换成网络字节序。

对首部各个位的解释:

4位版本:目前的协议版本号为4,IPv4。

4位首部长度:是指首部占32bit字的数目,包括任何选项,它是一个4bit字段,因此首部最长为60字节。

16位总长度字段:是指整个IP数据报的长度,以字节为单位,利用首部长度和字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。该字段长16比特,所以IP数据报最长可达到(202152)12=65535字节。尽管可以传送一个长达65535字节的IP数据报,但是大多数的链路层都会对它进行分片,而且,主机也要求不能接收超过576字节的数据报。

16位标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会增加1。

TTL(time-to-live)生存时间字段:设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或64)。一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。

首部检验和字段是根据IP首部计算的检验和码,它不对首部后面的数据进行计算。

如何计算一份数据报的IP检验和:

首先把检验和字段置为0。然后对首部中每个16bit进行二进制反码求和,结果存在检验和字段中。当收到一份IP数据报后,同样对首部中的每个16bit进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。如果结果不是全1(即检验和错误),那么IP久丢弃收到的数据报。但是不生成差错报文,由上层去发现丢失的数据报并进行重传。

IP路由选择

如果目的主机与源主机直接相连或都在一个局域网络上,那么IP数据报就直接送到目的主机上。否则,主机把数据报发往一默认的路由器上,由路由器来转发该数据报。
IP路由表主要完成以下这些功能:

  1. 搜索路由表,寻找能与目的IP地址完全匹配的数目(网络号和主机号都要匹配)。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口。

  2. 搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口,目的网络上所有主机都可以通过这个表目来处置。

  3. 搜索路由表,寻找标为默认(default)的表目,如果找到,则把报文发送给该表目指定的下一站路由器。

如果上述步骤都没有成功,那么该数据报就不能被传送。一般会想生成数据报的应用程序返回一个“主机不可达”或“网络不可达”的错误。

子网寻址

不单单把主机看成由单纯的一个网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主机号。
这样做的原因是因为A类和B类地址为主机号分配了太多的空间,可分别容纳的主机数为22422162。事实上,在一个网络中人们并不安排这么多的主机,由于全0或全1的主机号都是无效的,因此需要减2。

子网掩码

除了IP地址以外,主机还需要知道有多少比特用于子网号及多少比特用于主机号。这是通过子网掩码来确定的。这个掩码是一个32bit的值,其中值为1的比特留给网络号和子网号,为0的比特留给主机号。

ARP:地址解析协议

RARP:逆向地址解析协议

ICMP:Internet控制报文协议

ICMP是IP层的一个组成部分,它传递差错报文以及其他需要注意的信息。
ICMP报文是在IP数据报内部被传输的,如图,
ICMP报文格式如图6-2所示。所有报文的前4个字节都是一样的,但是剩下的其他字节则互不相同。
类型字段可以有15个不同的值,以描述特定类型的ICMP报文。某些ICMP报文还使用代码字段的值来进一步描述不同的条件。
各种类型的ICMP报文如图6-3所示,不同类型由报文中的类型字段和代码字段共同决定。
图中,最后两列表明ICMP报文是一份查询报文还是一份差错报文。

0 0
原创粉丝点击