计算机网络教程 之 网络层 (1) 基础知识

612 阅读8分钟

目录

网络层任务

网络层向上只提供简单灵活的,无连接的,尽最大努力交付的数据报服务

网络层是否要提供像电信网那样,提前分配出一切传送资源的模式,让网路层提供可靠的交付,这在设计时是一个很大的争论,是由端系统负责还是网络负责。类似电话传输,先分配出传送的资源,并且不用告诉目的地址,就可以连续的无差错的到达终点。但是网络层没有这么设计,因为电话的端系统很简单,但是电脑的功能却很强大,又很强的差错处理能力。所以网络层不提供传送质量的保证。这样做的好处有很多,这样使路由器的设计很简单,网络造价的成本大大降低了,功能少了更加灵活了。

使用IP地址,这种面向抽象的方式实现了虚拟互联网络

全球的硬件地址也是唯一的,为什么不使用硬件地址当作地址,而要使用另外的IP地址呢,这也是一种二次封装,因为硬件地址虽然是唯一的,但是有很多种类,如果使用的话,就要做很多转换工作,也不好扩展。但是使用虚拟的IP地址,就可以不用管这些差异了,全球所有的地址都依赖这套地址。可以屏蔽掉各种物理网络的差异。

传输格式

IP数据报,也叫分组

主要协议

  • ARP 地址解析协议
  • IP 网际协议
  • ICMP 网际控制协议
  • IGMP 网际组管理协议

IP地址

分类的IP地址

每个IP地址占32位(IPV4),由两部分组成,网络号+主机号,网络号标记连接的网络,而主机好标记这个网络下的各个主机。根据主机的多少,又分为5类地址,ABCDE,他们的网络号分别占8,16,24位,D类地址是多播地址,E为保留地址。可以看出A类地址的网络主机是最多的,有16777214个之多。为什么要这么分配,是因为网络的差异很大,有的小单位只需要很少的一部分IP的地址,所以申请一个C类地址就够了,而有的很大的单位,需要很多就可以酌情申请合适的地址类型了。拿到这个网络号时,它所属的主机号,这个单位就自己分配了。也可以看作是一个地址快。这样地址管理中心只需要分配网络号即可,而且路由器的转发,就可以只判断网络号。因为同一局域网下的主机或者路由器的主机号必须是一样的。

特殊不分配的地址

  1. 全0的地址,表示这个,即本网络,全1表示所有的,表示这个网络号上的所有主机。
  2. 网络号为127(0111111)的作为环回地址,本主机的进程间通信使用。发送这个地址,本主机的协议软件会处理。

数据报格式

一个IP数据报,由首部和数据两部分组成,首部的前一部分是固定长度20字节,是必须有的,后一部分是可选部分,长度可变。
IP数据报首部固定数据类型:
1. 版本:4位,IPC4 IPV6等
2. 首部长度:4位,由于不是长度不是固定的,所以需要一个值记录它。最大60字节,当首部长度不是4字节的整数倍时,需要字节填充,因为IP数据部分永远在4字节的整数倍看是。
3. 数据报总长度:16,由于在数据链路层规定了数据帧数据字段的最大长度,称作最大传送单元MTU,当一个IP数据报超过这个长度时,就要做分片处理。短的话,路由器的转发效率高。
4. 标识:不是序号,因为IP时无连接的,没有序号。当分片时,相同的是一组。
5. 片偏移:分片的序号
6. 生存时间:指在路由器的跳数, 为了避免兜圈子,浪费资源。
7. 协议:传送数据的类型
8. 首部检验和:为了判断首部的数据是否传输错误,只检查首部的数据正确与否,不对直接扔掉。
9. 源地址/目的地址:各占32位

IP数据报可变部分: 为了给IP增加一些新的功能,有的支持排错,测量和安全措施等。

IP地址和硬件地址的关系

传输过程中,网络层之上使用的都是IP地址,而下面使用的是硬件地址,为什要使用IP地址上面说明了,但是为什么要使用硬件地址呢。因为在数据链路成和物理层必须使用硬件地址进行传送。在链路层传送的MAC帧的地址就已经是硬件地址了。 这就涉及到了两者之间的转化,就要使用ARP协议了。

ARP协议

路由解析协议就是通过IP地址来找硬件地址的。他是怎么工作的呢。 每一台主机上都有一个ARP的IP地址和硬件地址的映射表,里面有这个局域网的映射关系,里面的信息都是主机知道的一些地址,那么这些地址怎么来的呢。 当主机A向B发送数据时,先看ARP映射表里有没有目的IP地址对应的硬件地址,如果有,那么直接写入MAC帧,发送即可。如果没有,就需要运行一下ARP,找到这个硬件地址。

  1. 先在网上广播发送一个ARP请求,内容包括本机的IP地址和硬件地址,和目的IP地址
  2. 本局域网上的所有主机都会收到这个请求,如果一台主机B发现请求里的目的IP地址和自己的一样,就发送一个回应。把自己的MAC硬件地址发送到源主机 (发送请求是广播,而发送回应是单播),A和B主机都回在自己的映射中存储各自的映射,以备下次使用。
    同时ARP还会设置一个生存时间,过了这个时间就要删除这个条目,以便再次发送请求更新地址。
    ARP是解决局域网上IP地址和硬件地址转换的问题的。不在一个局域网上也不需要知道对方的硬件地址,因为不在一个网络号下,都会找路由器进行转发,路由器连接两个局域网,只到找到目的IP地址网路号,才会直接交付主机,期间都是找下一跳的路由器的。只是切换了路由器下不同的局域网。

ICMP协议

主要是让主机和路由器报告差错信息和提供异常情况的报告。 它的数据放到IP数据报的数据部分发送出去。有3个字段是统一的,分别是类型、代码、和检验和。

类型:

  • 差错报告报文

    包括终点不可达,时间超时,参数问题,改变路由等问题。当发生这些问题时,回向源点发送参数问题报文。不发送差错报文的情况:对差错报文,不再发送差错报文/对第一个分片后的数据不发送差错报文/多播不发送/特殊地址不发送。
  • 询问报文

    包括会送请求和时间戳请求等。

应用举例:

  • PING:测试两台主机的连通性,它直接使用了网络层的ICMP,而没有使用TC/UDP等。原理是发送ICMP的回送请求报文,如果可以收到,就会回传回答报文。
  • tranceroute:跟踪一个分组到原点的路径,原理时发送一连串无法交付的UDP用户数据报,第一个的生存时间设置成1,当到达第一个路由器时,达到了生存时间,这时候就会发送一个ICMP的时间超时差错报告报文。接着发送2,3,4,5数据报。接可以知道这条路径是什么了。