概述

网络层将不同的网段中的节点连接起来,实现点对点的通信。数据链路层只是将同一网段中的节点连接在一起。网络层负责将数据链路层中形成的网段拼接起来,使不同网段中不相邻节点彼此通信。

IP协议

网际协议,属于OSI参考模型从下往上的第三层,网络层。这一层主要由IP和ICMP两个协议组成,主要作用就是在复杂的网络环境中将数据包发给最终的目标地址。 c4f9bd76fc5a37fc157e61c958236eef

  • 主机 配有IP地址,但不进行路由控制的设备叫作主机。
  • 路由器 配有IP地址,又进行路由控制的设备叫作路由器。
  • 节点 主机和路由器的统称。

    IP地址

  • 用于标识计算机网络中的主机和路由器,MAC地址是用于标识同一数据链路中不同计算机。TCP/IP通信中所有主机或路由器必须设定IP地址。

  • 不同的数据链路用同一种形式的IP地址,如以太网,无线局域网的IP都一样。

  • IPv4地址由32位正整数表示,每8位为1组,分成4组,每组以.隔开,再将每组二进制数转换成十进制数

  • 每一台主机上的每一块网卡(NIC)都要设置IP地址。通常一块NIC只设置一个IP地址,也可以设置成多个。一台路由器配置多个网卡,可以设置多个IP地址。 706a7dd0636b209ef9b7b300d53e9665

  • 由网络地址和主机地址组成,保证唯一性。网络地址保证每个网段地址不重复,同一个网段内的主机不重复。

  • 192.168.1.1 /24 /24表示从第1位开始到多少位数据网络地址,192.168.1之前的都是IP的网络地址。路由器是通过IP地址的网络地址进行转发的。

    IP地址分类

    根据IP地址中从第1位到第4位的比特列对其网络地址和主机地址区分。 024bbf634a89e1d689c53a1648a087d6 在分配主机地址时,不可以全部是0或者全部是1,全部是0表示对应的网络地址或IP地址不可获知的情况下使用。全部是1的主机地址通常作为广播地址。所以,可用主机地址数为2^n-2

子网与子网掩码
  • 架构B类IP网络时,理论上一个链路内允许6万多台计算机连接,实际操作中不会在同一个链路上连接这么多的机器。造成A类和B类IP地址的浪费。
  • 将A,B,C分类中的主机地址部分用作子网地址,将原网络分成多个物理网络的一种机制。
  • 引入子网后,一个IP地址包括,IP地址本身和表示网络部分的子网掩码。子网掩码中的1代表网段地址,0代表主机地址。 60205fd24cbdd4d40cae64b6e4121982
  • 节省IP地址,便于管理。使用子网掩码划分子网后,子网内可以通信,跨子网不能通信,子网间通过路由器通信。
  • 网络地址指主机部分的IP地址位都是0的IP地址,代表了网络本身。如192.168.1.1的子网掩码255.255.255.0,则192.168.1.0就是网络地址。
2种广播
  • 本地广播 在当前网络中的广播叫作本地广播。 1f32498d408ec054e6bb7b62f79daa0c
  • 直接广播 在不同网络之间的广播叫作直接广播。 b636c8b165dd2d01400b33cdb1e7cc51

路由控制

路由器和L3交换机是根据网络层L3中的IP地址信息转发数据包的,通过路由表对数据包的转发目的地进行切换的过程叫作路由选择。 网络层IP数据包转发流程 a418ea510c29f63123874cc040a2c380

  • 默认路由一般标记为0.0.0.0/0 或default。
  • 环回地址是在同一台计算机上的程序之间进行网络通信使用的默认地址。计算机使用127.0.0.1或localhost作为环回地址,数据包不会流向网络。
  • 最后一步是用ARP去查询节点B的MAC地址,然后将数据包发送给节点B
  • TODO 静态路由,动态路由,路由协议

    MAC地址和IP地址共同协作

    82cba936c424d9814cec578afe78734b

    IP报文分割

  • IP报头 8a9fd4a5b481f6fba9a0204ec3c2edec 56cc609b85e667860e2836b37743ac65 614af5d96987d310b5242e21f895ea46

  • 数据链路层不同,MTU则不同 48cc61d63711b1f231b881083b479335

  • IP报文分片与重组 以太网默认MTU是1500字节,如果传输大于1500字节的数据,不能通过一个帧发送,路由器会将此IP数据报分片发送。数据报重组只能在目标主机上进行。 0beaf1c9412a272ffd364aa770ebd315

IPv6

IP version 6 为了根本解决IPv4地址耗尽的问题而被标准化的网际协议。IPv4的地址长度为4个8位字节,IPv6的地址长度是原来的4倍,一般写成8个16位字节。 * 组成举例 以每16比特为一组,每组用冒号隔开。 dbbae7f6034768733187da3124a10389 * 分片 IPv6分片处理只在发送端主机上进行,路由器不参与分片,减轻路由器的负荷。

IP协议相关协议

IP旨在让最终目标主机收到数据包,但是这一过程中仅有IP是无法通信的。还需要有能够解析主机名称和MAC地址的功能,以及数据包在发送过程中异常情况处理的功能。IP辅助和扩展规范的协议包括:DNS,ARP,ICMP以及DHCP等协议

DNS

解析域名

ARP

  • 地址解析协议,以目标IP地址为线索,定位下一个应该接收数据分包的网络设备对应的MAC地址,如果目标地址不在同一个链路,则通过ARP查找下一跳路由器的MAC地址。
  • 只使用于IPv4,不能用于IPv6,IPv6用ICMPv6替代ARP。
  • ARP 包格式 552e60e7bc99413aa2058c91af14f8c2 d1481cbdfa2ed355cf44076f83003b71 共28个字节 以太网帧类型表示后面数据类型,ARP类型来说,该字段为0x0806 硬件类型字段表示硬件地址的类型,1表示以太网地址 协议类型字段表示要映射的协议地址类型,0x0800表示IP地址 硬件地址长度表示硬件地址长度,以字节为单位,以太网上IP地址的ARP请求或应答,值为6 协议地址长度表示协议地址长度,以字节为单位,以太网上IP地址的ARP请求或应答,值为4 操作字段,ARP请求为1,ARP应答为2,RARP请求为3,RARP应答为4.
  • 在本地arp缓存表,ip<->mac,不需要每次通信都需要去广播查询目标mac地址。超过一定时间后会清空缓存,win7是10分钟,思科设备是4小时。
  • 通过命令行可以查询局域网机器mac地址,sudo arping -I eth0 192.168.1.1

sudo arp-scan -l 查询整个局域网内所有IP地址对应的MAC地址。

PARP

从MAC地址定位IP地址的一种协议。

ICMP

理论上属于网络层协议,但实现上是作为传输层协议实现的,因为需要封装在IP报文中进行收发。辅助IP的ICMP,IP包头。 * 确认IP包是否成功送达目标地址 * 通知在发送过程中IP包被丢弃的具体原因 * 诊断测试网络是否正常,设置是否有误 15ee318d7d2ee7b6ccd438b9b869c5f8

主要的ICMP消息
  • ICMP目标不可达消息
  • ICMP重定向消息 如果路由器发现发送端主机使用了次优路径发送数据,会返回一个ICMP重定向的消息给发送主机,包括最合适的路由信息和源数据。 7b78c9736bdef722cfe1adaea9b21075
  • ICMP超时消息 IP包中有一个字段TTL(Time To Live 生存周期),它的值每经过一次路由器就会减1,直到为0时该IP包被丢弃,路由器会发送一个ICMP超时消息给发送端主机,并丢弃该包。 f6db1ed37875e2e2e769a419dc8641b3 traceroute 充分利用ICMP超时消息。TODO 后面再了解。
  • ICMP 回送消息 判断所发送的数据包是否已经成功到达对端的一种消息。ping命令就是利用这个消息实现的。 fe2e44971515699598c9d0d81f8c16f9
  • ICMP报文 所有的ICMP报文前4个字节都是一样,剩下的其他字节不同。类型字段可以有15个不同的值,以描述特定类型的ICMP报文。代码字段用来进一步描述不同的条件。 a088f4ced38923dc669ba5009e65c0d8 b7cde522981873934959369f0f8997c1 ping(源于声呐定位操作) 是常用测试另一台主机是否可达的程序,发送一份ICMP回显请求报文给目标主机,并等待返回ICMP回显应答。

    DHCP

    即插即用自动设置IP地址,同一管理IP地址分配。 b64294f38ece9766b2416f5081eb7c85

NAT

在私有地址在连接互联网时使用全局IP地址。 feefbdf9e8f474dbf8155d7afc326e25

IP隧道

网络层的首部后面继续追加网络层首部的通信方法叫作IP隧道。 a5c2b472770e193b50d31e3100ce0b49 60c7180dff9797e5e14bf456207a2923 7aa9e4f3d95d045304d5494950ff1ad4