1、IP协议的包头
IP协议、ICMP协议、ARP协议都是internet层的协议,但IP协议和ARP协议是平级的关系,ICMP协议在IP协议的上一层。
生存时间:占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值。通过TTL可以知道访问某个网络经过的路由器的数量。
windowsTTL为128,LINUX的TTL为64,每经过一个路由器TTL会减少一个。
[root@centos6 cd]#ping 172.18.252.32 ---可以看到拼windows机器ttl是128,拼之前要打开windows防火墙
PING 172.18.252.32 (172.18.252.32) 56(84) bytes of data.
64 bytes from 172.18.252.32: icmp_seq=1 ttl=128 time=0.393 ms
64 bytes from 172.18.252.32: icmp_seq=2 ttl=128 time=0.187 ms
64 bytes from 172.18.252.32: icmp_seq=3 ttl=128 time=0.320 ms
64 bytes from 172.18.252.32: icmp_seq=4 ttl=128 time=0.195 ms
^C
--- 172.18.252.32 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3913ms
rtt min/avg/max/mdev = 0.187/0.273/0.393/0.089 ms
[root@centos6 cd]#ping 192.168.25.189 ---拼linux机器为64
PING 192.168.25.189 (192.168.25.189) 56(84) bytes of data.
64 bytes from 192.168.25.189: icmp_seq=1 ttl=64 time=0.038 ms
64 bytes from 192.168.25.189: icmp_seq=2 ttl=64 time=0.018 ms
64 bytes from 192.168.25.189: icmp_seq=3 ttl=64 time=0.019 ms
^C
--- 192.168.25.189 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2051ms
rtt min/avg/max/mdev = 0.018/0.025/0.038/0.009 ms
[root@centos6 cd]#cat /proc/sys/net/ipv4/ip_default_ttl ---64是由这个文件设定的
64
[root@centos6 cd]#echo 128 >/proc/sys/net/ipv4/ip_default_ttl
[root@centos6 cd]#cat /proc/sys/net/ipv4/ip_default_ttl
128
[root@centos6 cd]#ping 192.168.25.189 ---更改配置文件后可以冒充windows设备
PING 192.168.25.189 (192.168.25.189) 56(84) bytes of data.
64 bytes from 192.168.25.189: icmp_seq=1 ttl=128 time=0.017 ms
64 bytes from 192.168.25.189: icmp_seq=2 ttl=128 time=0.019 ms
64 bytes from 192.168.25.189: icmp_seq=3 ttl=128 time=0.019 ms
^C
--- 192.168.25.189 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2095ms
rtt min/avg/max/mdev = 0.017/0.018/0.019/0.003 ms
2、IP地址
IP地址由两部分组成:
•网络ID:标识网络,每个网段分配一个网络ID,相当于电话号码的区号,标识你在哪个网段里。
•主机ID:标识单个主机,由组织分配给各设备,相当于电话号码。
- IP地址格式:点分十进制记法
其中每八位二进制表示的十进制可以这样记忆
00000001 1 2^0
00000010 2 2^1
00000100 4 2^2
00001000 8 2^3
00010000 16 2^4
00100000 32 2^5
01000000 64 2^6
10000000 128 2^7
如果你想把一个十进制的211转换为二进制,需要这样计算:先算一下211由上面哪些十进制相加得到,可以算出由128+64+16+2+1得到,所以转化为二进制时相应的位为1
11010011
如果给定一个二进制转化为十进制时只需要将为1的位按照上面的对应关系相加就可以。
- IP地址的分类
D类以后得IP地址都是保留下来留给实验室使用的,所以IP地址的第一十进制数为1-223之间的数
计算公式:
①计算网络中主机最大数量:2^主机ID位-2=2^(32-网络ID位数)-2
②网络数=2^可变网络ID位
根据计算可以得出:
A类地址网络数为28=256,主机最大数量为224-2=16777214
B类地址网络数为214=16384,主机最大数量为216-2=65535
C类地址网络数为221=2097152,主机最大数量为28-2=254
- 公有IP和私有IP
- CIDR表示法
CIDR:无类域间路由,这种表示方法,不是把IP地址分成A、B、C等类别来定义网络ID位和主机IP位,而是通过子网掩码来划分网络ID位和主机ID位,定义规定网络ID位的子网掩码为1,主机ID位的子网掩码为0
例如可以这样来表示IP地址:172.16.100.200/19,表示此IP地址的前19位为网络ID。
子网掩码:由32位二进制组成,和IP地址位数一样,分成四组,每组8个位,通过IP地址和子网掩码相与可以得出网络ID,具体为做与运算,子网掩码为1网络ID位保留原值,子网掩码为0网络ID位为0,可以通过下面的对应关系将子网掩码的二进制和十进制进行转换。
10000000 128
11000000 192
11100000 224
11110000 240
11111000 248
11111100 252
11111110 254
11111111 255
举例
172.16.100.200 IP地址
255.255.224.0 子网掩码
根据以上得出:
①CIDR表示法
根据子网掩码中二进制和十进制的对应关系,224是三个1,表示前19位为1,所以网络ID为前19位
172.16.100.200/19
②网络ID
IP地址和子网掩码相与,1保留原值,0值为0
如何计算网络ID,首先要把100的十进制转化为二进制01100100,而224是11100000,所以224和100与的结果为十进制的96
网络ID为:172.16.96.0/19
③网络主机数有多少
2^13-2=8190
总结:两个设备网络ID相同,说明他们在同一个网络中,A和B通讯时先判断是否在同一个网络中,如果在同一个网络中就ARP发广播找到对方的MAC地址,如果不在同一个网络中就ARP广播找网关的MAC地址,通过网关再找到对方的MAC地址。
3、划分子网和超网
- 划分子网
定义:划分子网就是将一个大网络划分成多个小网络,大网络的主机数多,小网络的主机数少,划分子网就是网络ID向主机ID借位,使主机ID位减少,主机数减少。
公式:划分子网的数量=2^网络ID向主机ID借的位数
划分子网后损失的IP数:(划分子网数量-1)*2
借一位可以划分两个子网,借两位可以划分4个子网,借三位可以划分8个子网
比如160.200.0.0/16划分16个子网后
①划分子网的netmask
因划分了16和子网,相当于网络ID向主机ID借了4位,原来网络ID为16位,现在为20位
所以子网掩码为160.200.240.0/20
②每个子网的主机数
2^12-2=4094
③最小、最大子网的网络ID
160.200.0000 0000.0 借的位最小为4个0
160.200.1111 0000.0 借的位最大为4个1
所以最小网络ID为160.200.0.0/20
最大网络ID为160.200.240.0/20
④最大子网的IP范围
最大子网的网络ID为
160.200.1111 0000.00000001 -160.200.1111 1111.11111110
范围为:160.200.240.1/20-160.200.255.254/20
- 划分超网
将多个小网络合并成一个大网络,使主机ID数增多,网络ID数减少,也就是主机ID向网络ID借位。
4、跨网络通信
跨网络通信:路由
路由分类:
主机路由:目标地址是特定的某个主机的IP,只能到达指定的IP的主机。
网络路由:目标地址为某个网段的网络ID
默认路由:目标地址为0.0.0.0,可以到达所有的任意一个外网
优先级:精度越高,优先级越高
路由表的组成如下
[root@centos6 cd]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.25.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
0.0.0.0 172.18.0.1 0.0.0.0 UG 0 0 0 eth1
路由表里面有很多地图,到达各个网络,只负责去,不负责回,回来由对方的路由器里的路由表提供。
接口:到达目标网络本设备的出口。
网关:当目标网络和当前路由器直接连接时,网关的IP=接口的IP,实际上如果计算机和路由器直接连接,中间没有别的路由器,路由器会自动生成到达这个计算机的路由表;当目标网络和当前路由器不直接连接时,网关的IP=下一个路由器的邻近的接口的IP。
5、动态主机配置协议DHCP
网络中的DHCP服务器用来给网络中自动获取IP地址的主机分配IP地址。
6、centos6中网卡名称修改
[root@centos6 ~]#vim /etc/udev/rules.d/70-persistent-net.rules ---网络接口识别并命名相关的udev配置文件
1 # This file was automatically generated by the /lib/udev/write_net_rules
2 # program, run by the persistent-net-generator.rules rules file.
3 #
4 # You can modify it, as long as you keep each rule on a single
5 # line, and change only the value of the NAME= key.
6
7 # PCI device 0x8086:0x100f (e1000)
8 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:a1:87:ef", ATTR
{type}=="1", KERNEL=="eth*", NAME="eth1"
9
10 # PCI device 0x8086:0x100f (e1000)
11 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:a1:87:e5", ATTR
{type}=="1", KERNEL=="eth*", NAME="haha" ---将eth0网卡改名为haha
[root@centos6 ~]#ifconfig ---此时看到还没有生效
eth0 Link encap:Ethernet HWaddr 00:0C:29:A1:87:E5
inet addr:192.168.25.1 Bcast:192.168.25.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fea1:87e5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3 errors:0 dropped:0 overruns:0 frame:0
TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:462 (462.0 b) TX bytes:2256 (2.2 KiB)
[root@centos6 ~]#ethtool -i eth2 ---查看网卡的驱动模块
driver: e1000 ---驱动模块为e1000
version: 7.3.21-k8-NAPI
firmware-version:
bus-info: 0000:02:01.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
[root@centos6 ~]#ethtool -i eth1 ---发现两个网卡的驱动模块是一样的
driver: e1000
version: 7.3.21-k8-NAPI
firmware-version:
bus-info: 0000:02:02.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
[root@centos6 ~]#rmmod e1000 ---卸载驱动模块后两个网卡都卸载了
发现已经没有网卡
发现网卡名已经修改为haha
7、ifconfig命令更改IP地址
-启用禁用网卡
[root@centos6 ~]#ifconfig eth0 down ---禁用网卡eth0
[root@centos6 ~]#ifconfig ---可以看到网卡被禁用
eth1 Link encap:Ethernet HWaddr 00:0C:29:A1:87:EF
inet addr:172.18.254.178 Bcast:172.18.255.255 Mask:255.255.0.0
inet6 addr: fe80::20c:29ff:fea1:87ef/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11333 errors:0 dropped:0 overruns:0 frame:0
TX packets:143 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:864908 (844.6 KiB) TX bytes:20674 (20.1 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@centos6 ~]#ifconfig -a ---可以见到所有网卡,包括禁用的网卡
eth0 Link encap:Ethernet HWaddr 00:0C:29:A1:87:E5
inet addr:192.168.25.189 Bcast:192.168.25.255 Mask:255.255.255.0
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:596 errors:0 dropped:0 overruns:0 frame:0
TX packets:379 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:55959 (54.6 KiB) TX bytes:53371 (52.1 KiB)
eth1 Link encap:Ethernet HWaddr 00:0C:29:A1:87:EF
inet addr:172.18.254.178 Bcast:172.18.255.255 Mask:255.255.0.0
inet6 addr: fe80::20c:29ff:fea1:87ef/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11762 errors:0 dropped:0 overruns:0 frame:0
TX packets:192 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:895384 (874.3 KiB) TX bytes:28502 (27.8 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@centos6 ~]#ifconfig eth0 up ---启用网卡
[root@centos6 ~]#ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:A1:87:E5
inet addr:192.168.25.189 Bcast:192.168.25.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fea1:87e5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:596 errors:0 dropped:0 overruns:0 frame:0
TX packets:378 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:55959 (54.6 KiB) TX bytes:53281 (52.0 KiB)
eth1 Link encap:Ethernet HWaddr 00:0C:29:A1:87:EF
inet addr:172.18.254.178 Bcast:172.18.255.255 Mask:255.255.0.0
inet6 addr: fe80::20c:29ff:fea1:87ef/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11416 errors:0 dropped:0 overruns:0 frame:0
TX packets:165 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:871375 (850.9 KiB) TX bytes:24156 (23.5 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
ifconfig [-]promisc启用混杂模式:就是将网卡设置为混杂模式,即使这个信息不是发给我的,我也会收到,一般用于监听。
- 修改IP地址
[root@centos6 ~]#ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:A1:87:E5
inet addr:192.168.25.189 Bcast:192.168.25.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fea1:87e5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:596 errors:0 dropped:0 overruns:0 frame:0
TX packets:381 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:55959 (54.6 KiB) TX bytes:53539 (52.2 KiB)
eth1 Link encap:Ethernet HWaddr 00:0C:29:A1:87:EF
inet addr:172.18.254.178 Bcast:172.18.255.255 Mask:255.255.0.0
inet6 addr: fe80::20c:29ff:fea1:87ef/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12912 errors:0 dropped:0 overruns:0 frame:0
TX packets:217 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:967581 (944.9 KiB) TX bytes:32016 (31.2 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@centos6 ~]#ifconfig eth0 192.168.25.1/24 ---修改eth0网卡的IP地址
[root@centos6 ~]#ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:A1:87:E5
inet addr:192.168.25.1 Bcast:192.168.25.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fea1:87e5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:599 errors:0 dropped:0 overruns:0 frame:0
TX packets:382 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:56235 (54.9 KiB) TX bytes:53629 (52.3 KiB)
eth1 Link encap:Ethernet HWaddr 00:0C:29:A1:87:EF
inet addr:172.18.254.178 Bcast:172.18.255.255 Mask:255.255.0.0
inet6 addr: fe80::20c:29ff:fea1:87ef/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13655 errors:0 dropped:0 overruns:0 frame:0
TX packets:275 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1017265 (993.4 KiB) TX bytes:39978 (39.0 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@centos6 ~]#ping -I eth0 172.18.254.178 --- -I选项可以指定网卡,因为eth0网卡的IP不是172.18.254.178,所以拼不通
PING 172.18.254.178 (172.18.254.178) from 192.168.25.1 eth0: 56(84) bytes of data.
From 192.168.25.1 icmp_seq=1 Destination Host Unreachable
From 192.168.25.1 icmp_seq=2 Destination Host Unreachable
From 192.168.25.1 icmp_seq=3 Destination Host Unreachable
^C
--- 172.18.254.178 ping statistics ---
6 packets transmitted, 0 received, +3 errors, 100% packet loss, time 5084ms
pipe 3
总结:上述方法更改IP地址是临时生效的,因为没有写到配置文件里面,所以开机重启后就没有了。
8、route 命令
[root@centos6 ~]#route add default gw 172.18.0.1 ---添加默认路由
[root@centos6 ~]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.25.0 0.0.0.0 255.255.255.0 U 1 0 0 eth2
172.18.0.0 0.0.0.0 255.255.0.0 U 1 0 0 haha_
172.17.0.0 172.18.0.1 255.255.0.0 UG 0 0 0 haha_
0.0.0.0 172.18.0.1 0.0.0.0 UG 0 0 0 haha_
0.0.0.0 192.168.25.1 0.0.0.0 UG 0 0 0 eth2
[root@centos6 ~]#route del default gw 172.18.0.1 ---删除默认路由
[root@centos6 ~]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.25.0 0.0.0.0 255.255.255.0 U 1 0 0 eth2
172.18.0.0 0.0.0.0 255.255.0.0 U 1 0 0 haha_
172.17.0.0 172.18.0.1 255.255.0.0 UG 0 0 0 haha_
0.0.0.0 192.168.25.1 0.0.0.0 UG 0 0 0 eth2
[root@centos6 ~]#route add -net 172.17.0.0/16 gw 172.18.0.1 ---添加网络路由
[root@centos6 ~]#ping 172.17.0.1
PING 172.17.0.1 (172.17.0.1) 56(84) bytes of data.
64 bytes from 172.17.0.1: icmp_seq=1 ttl=64 time=0.651 ms
64 bytes from 172.17.0.1: icmp_seq=2 ttl=64 time=0.591 ms
64 bytes from 172.17.0.1: icmp_seq=3 ttl=64 time=1.68 ms
^C
--- 172.17.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2791ms
rtt min/avg/max/mdev = 0.591/0.975/1.685/0.503 ms
[root@centos6 ~]#route add -host 172.17.0.100 gw 172.18.0.1 ---添加主机路由
[root@centos6 ~]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.17.0.100 172.18.0.1 255.255.255.255 UGH 0 0 0 eth1
192.168.25.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
0.0.0.0 172.18.0.1 0.0.0.0 UG 0 0 0 eth1
[root@centos6 ~]#route del -host 172.17.0.100 gw 172.18.0.1
[root@centos6 ~]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.25.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
0.0.0.0 172.18.0.1 0.0.0.0 UG 0 0 0 eth1
总结:网关必须和某一个网卡的IP地址在同一个网段。通过网关才能访问别的网段。