0%

计网 - 网络层

对于不同的广播域,要通信靠全球广播是不可行的,因此引入了网络层。

一个局域网称为一个广播域,在一个广播域中要进行通信,只需要向所有计算机发送请求,目标计算机在同一广播域中,收到请求后,响应即可。

不同的局域网就是不同的广播域,跨广播域通信,理论上可以向所有广播域发送请求,等待目标计算机响应即可,但是全球计算机数量过于庞大,一台计算机能接收到全世界计算机发送的包,纯靠广播容易产生网络风暴以及低效。

引入一套新的地址来区分不同的广播域、子网,这套地址称为:网络地址

网络层引入了IP、路由,跨广播域通信只能通过路由转发。

给计算机提供IP地址,经过路由器的转发,寻找到目标广播域,由目标广播域内部再进行广播,找到目标计算机即可。

跨广播域

简单的说,网络层 就是在 数据链路层 的基础上进一步管理网络中的数据通信。

广播的方式转为跳跃若干个中间节点的方式来完成数据通信。

跨广播域通信只能通过 路由转发

网络层包含了:IP、ARP、RARP、ICMP、IGMP、路由选择、拥塞控制。

IP协议,定义网络地址的协议。

通过IP地址,为网络上的计算机提供一个逻辑地址及编号。

IP协议,分为:IPv4、IPv6。

IPv4,由32位的二进制数组成,用点分隔,因为可读性差,通常写成4个十进制数。

范围: 0.0.0.0 - 255.255.255.255

通常,家庭里拨号上网,ISP就会给分配一个IP,每次拨号获得的IP都可能是不一致的。

网络上的其它计算机要通信可以通过分配到的IP找到家庭里的计算机。

IP地址 = 网络地址 + 主机地址

通过 子网掩码,可以很方便的将IP地址划分为网络部分主机部分

比如:

  • IP地址 172.16.10.1
  • 子网掩码 255.255.255.0

分别将二者转为二进制,再做一个与运算,得到 172.16.10.0,这部分就是网络部分,而主机部分则可以取值为 0.0.0.1 - 0.0.0.254,主机部分不能全为0,也不能全为1。

2个IP地址,通过与子网掩码做一个与运算,就可以计算出这两个IP是否在同一个子网中。不同子网中的2个IP地址是无法直接通信的,则需要通过 网关路由器来间接通信。

通过 tracert 或者 tracerouter 命令可以查看到IP在路由过程中跳跃的路径。

百度tracert

IP数据包作为数据链路层帧的数据部分。

IP数据包分为:头部和数据部分。

头部:大小在20到60字节之间。

数据部分:最长为65515字节。

超过下层数据链路帧限制的 MTU 1500字节的话,将需要分片传输。

数据包

网络层IP数据包的结构如下:

数据包

IP数据包抓包如下:

数据包

由于IP协议,无连接,不可靠,引入了ICMP。

发送IP数据包的时候,即使是丢包了,那么对于IP协议来说也是未知的,因此,通过ICMP(Internet控制报文协议)可以得知网络通不通、路由是否可达、是否超时等信息。

ICMP是一种无连接的面向无连接的控制报文协议,用来传输出错控制报文信息。

常用的就是ping命令。

正常情况下的ping如下
ping

异常的ping如下
ping

wireshark抓包情况如下
ping

正常情况下,每一个request都会收到一个reply,否则会收到no response found之类的响应。