TCP/IP的Internet层

  • TCP/IP的Internet层已关闭评论
  • 212 次浏览
  • A+
所属分类:linux技术
摘要

  Internet Control Message Protocol,用于探测网络中的状态,ping命令使用的就是icmp协议(向网络中发送icmp协议数据包,根据网络的状态返回不同的提示信息),不但能检测网络的状态,还能检测网络的速度。


Internet层

TCP/IP的Internet层

Internet层相关协议

ICMP协议:

  Internet Control Message Protocol,用于探测网络中的状态,ping命令使用的就是icmp协议(向网络中发送icmp协议数据包,根据网络的状态返回不同的提示信息),不但能检测网络的状态,还能检测网络的速度。
TCP/IP的Internet层

范例: 利用icmp协议判断网络状态

[root@centos7 ~]#ping 10.0.0.8 PING 10.0.0.8 (10.0.0.8) 56(84) bytes of data. 64 bytes from 10.0.0.8: icmp_seq=1 ttl=64 time=0.307 ms 64 bytes from 10.0.0.8: icmp_seq=2 ttl=64 time=0.344 ms 64 bytes from 10.0.0.8: icmp_seq=3 ttl=64 time=0.335 ms 64 bytes from 10.0.0.8: icmp_seq=4 ttl=64 time=0.441 ms  [root@centos7 ~]#ping 10.0.0.81 PING 10.0.0.81 (10.0.0.81) 56(84) bytes of data. From 10.0.0.7 icmp_seq=1 Destination Host Unreachable From 10.0.0.7 icmp_seq=2 Destination Host Unreachable  [root@centos7 ~]#ping 10.0.0.8  #端口不可达 PING 10.0.0.8 (10.0.0.8) 56(84) bytes of data. From 10.0.0.8 icmp_seq=1 Destination Port Unreachable From 10.0.0.8 icmp_seq=2 Destination Port Unreachable  [root@centos8 ~]#ping www.redhat.org #dns解析可能除了问题 ping: www.magedu.org: Name or service not known 

ping命令:

选项:

-s:指定数据包的大小(默认为64byte),最大为62207 -f:实现网络的攻击(默认一秒发送一个icmp数据包) flood:泛红,拼命向对方发送icmp数据包 -c:指定ping的次数(指定发送多少个icmp数据包) 

ARP:

Address Resolution Protocol:地址解析协议。通过ip地址把对方的mac地址找到。
过程:想网络中发送一个广播,广播中的信息包含想进行通信的ip地址,接收返回消息以后确定目标的mac地址。然后将该IP地址和物理地址缓存到计算机一段时间。

linux查看曾今通讯过的ip和mac的对应关系(arp缓存):

arp -n 

arp这种机制没有确认的过程,可能会收到中间人攻击。

同网段arp和跨网段arp

1.先判断两者是否在同一网络,是就直接广播
2.A利用arp获取和它直连的路由器那个接口的mac地址
3.把数据包交给路由器,然后路由器利用和B相连的那个接口发送arp请求获取B的mac
4.最后实现A把数据包交给了B。
有几个网段就做几次arp广播

TCP/IP的Internet层

RARP协议:

  反向地址解析 mac解析成IP(比如网吧的无盘电脑固定ip,电脑启动以后会向网络发请求(发自己的mac地址),通过服务器mac和ip的映射表来分配ip地址)

internet 协议(IP协议--internet protocol)

Internet 协议特征

IP协议位于

IP PDU 报头

TCP/IP的Internet层

IP协议的报文有5行是固定的,一行32位(4个字节),固定的一共20个字节。

第一行:

版本号(ipv4、ipv6),ipv4是32位,一共有43亿个地址
首部长度:
区分服务:
总长度:数据包总长度

第二行:

标识:数据包是来自哪一个大包
标志:决定片偏移是一个大包分出来的包还是本身就是一个独立的包
片偏移:是来自于大包的第几个小包

第三行:

生存时间:占8位,记为TTL:Time-To-Live(生存时间值),以经过的路由器数量为单位,每经过一个路由器,TTL值减1,当TTL值减到0时,路由器就会将这个包丢弃,这样就可以防止包在网路上无休止的传播发送。

TCP/IP的Internet层
链接:https://blog.csdn.net/whatFUK/article/details/113714833

协议:上层协议的类型(tcp、udp等)
首部校验和:

第四行:

源地址:

第五行:

目标地址:

范例:探测网络中地址是否存在冲突--arping工具

#查看指定的ip地址都被那些设备用了 arping ip地址 #网络中是否有地址冲突 首先这个地址得存在  

ip地址组成和分类

ipv6在互联网上使用比较多,局域网仍然使用的是ipv4,因为ipv6不方便管理。

IPv4

IPv4地址:

是一个32位的二进制数字,可唯一标识IP网络中的每台设备 ,网络中通信的设备都需要事先配置一个ip地址(唯一)

IP地址作用:

mac地址世界唯一,ip地址在每一个局域网中唯一。有了mac地址还配置ip地址的原因,ip地址是一个可以修改的地址,由网络位和主机位组成。所以能描述设备在哪一个网络里面。

IP地址由两部分组成:

网络 ID:描述在哪一个网络(网段)里
主机 ID:标识网络里唯一设备

IPv4地址格式:点分十进制记法

每8位二进制数化为一组,方便阅读和管理。
范围: 00000000 --- 11111111 (0---255)

IP地址分类(现在已经不常用了)

通过地址的划分方式来确认网络id和主机id

A类:(以1-126开头的)

  • 网络id:(约定了总共的32位中,最高位为0 )0 0000000 - 0 1111111.X.Y.Z : 0-127.X.Y.Z (0开头的地址表示位置地址,127开头的地址表示设备本身),所以要去除0和127开头的

  • 主机id:剩下的24位

  • 默认子网掩码:255.0.0.0

  • 网络数:126=2^7(可变是的网络ID位数)-2

  • 主机数:2^24-2=16777214(要去除全0和全1的情况)

B类:

  • 网络id:前16位(约定最高的两位不改变)10 000000 - 10 111111.X.Y.Z:128-191.X.Y.Z

  • 主机id:剩下的16位

  • 默认子网掩码:255.255.0.0

  • 网络数:2^14=16384

  • 每个网络中的主机数:2^16-2=65534

C类:

  • 网络id:前24位(约定前面的三位不改变)110 0 0000 - 110 1 1111.X.Y.Z: 192-223.X.Y.Z

  • 主机id:剩下的8位

  • 默认子网掩码:255.0.0.0

  • 网络数:2^21=2097152

  • 每个网络中的主机数:2^8-2=254

D类:

表示多播地址,1110 0000 - 1110 1111.X.Y.Z: 224-239.X.Y.Z(不是给计算机分配的)

判断ip地址属于哪一类,只看ip地址的第一个十进制数就行了。

传统ip地址分类缺陷

每一类之间的网络位和主机位的变化幅度太大

公共和私有IP地址

私有IP地址:不直接用于互联网,通常在局域网中使用

TCP/IP的Internet层
这几个地址在互联网上是不会出现的都是在局域网上使用

公共IP地址:互联网上设备拥有的唯一地址

TCP/IP的Internet层
公有地址世界唯一。

特殊地址

0.0.0.0 0.0.0.0不是一个真正意义上的IP地址。它表示所有不清楚的主机和目的网络(表示的是未知地址)  255.255.255.255(每一位都是1) 限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机  127.0.0.1~127.255.255.254 本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为“127.0.0.1”的 数据包  224.0.0.0到239.255.255.255 组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。224.0.0.5指OSPF 路由器,地址 多用于一些特定的程序以及多媒体程序  169.254.x.x(windows配置了自动获取ip,但是网络中不存在dhcp服务器) 如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为主 机分配这样地址 

CIDR:无类域间路由

不将ip地址进行分类,通过子网掩码这个技术来区分网络位和主机位。

子网掩码:netmask

是一个32位的二进制数,和ip成对使用。ip的网络位有几位,则netmask的对应位就为1。反之对应的主机位为0。
子网掩码也就决定了网络中的主机数:

通过子网掩码判断网络位和主机位的位数:

1的位数有几位则网络位就是几。剩下的就是主机位。

子网掩码表示方法

方法一:点分十进制
方法二:CIDR表示法:IP地址/网络位 例如:IP/12

老命令ifconfig使用的就是点分十进制,新命令ip使用的就是CIDR表示法 

范例:通过ip地址确定ip范围

#203.101.123.163/28的ip范围: 前24位不变,把163拆成二进制,前四位是网络位,后面的是主机位。 163=128+32+3=1010  0011  最小:203.101.123.1010 0001(最小不能为0,从1开始) 最大:203.101.123.1010 1110(不能全为1)  范围:203.101.123.161--- 203.101.123.174 

范例:ip地址网络位的计算

#203.101.123.163  nemask:255.255.255.240 网段:203.101.123.10100011  ----240(11110000)                   11110000 网络位:203.101.123.10100000 ---203.101.123.160  #网络位的作用:判断设备否处于同一网络里面  

判断对方主机是否在同一个网段:

用自已的子网掩码分别和自已的IP及对方的IP相与,比较结果,相同则同一网络,不同则不同网段

范例:判断是不是在一个网络里面

A:10.0.0.1/16 B:10.0.2.2/24  A访问B的时候,两者在一个网络里面,B访问A不在一个网络里面。  #A设备访问B设备的时候,会先用自己的ip和子网掩码相与得到网络位,然后用自己的子网掩码和对方的IP地址相与。与出来的结果一样,所以就在同一个网段里面。 #反之B访问A,就认为不在一个网段里面。  #因为A到B和B到A的网络位不一样,所以不在同一个网段。不同网段之间的设备通信需要使用到网关(网关要和他们两再同一个网段)。 

公式

主机数计算:2^主机id数 - 2

网络数计算:2^网络位数

网络位计算:ip地址和netmask相与

划分子网

  将一个大的网络(主机数多)划分成多个小的网络(主机数少),主机ID位数变少,网络ID位数变多。
网络位向主机位借位数。借n位,就划分2^n个子网。

合并超网:

将多个小网络合并成一个大网,主机ID位向网络ID位借位,然后剩下的网络位大家都一样。(挑最多的共同点作为新的网络id)
方法:挑选多个ip地址共同的位作为网络id位。

范例:

#8个C类网段 220.78.168.0/24 220.78.169.0/24 220.78.170.0/24 220.78.171.0/24 220.78.172.0/24 220.78.173.0/24 220.78.174.0/24 220.78.175.0/24  220.78.10101 000.0   220.78.168.0/24 220.78.10101 001.0   220.78.169.0/24 220.78.10101 010.0   220.78.170.0/24 ...... 220.78.10101 110.0   220.78.174.0/24 220.78.10101 111.0   220.78.175.0/24  #合并成一个大网 220.78.168.0/21