1、OSI模型七层结构
应用层 为应用程序进程提供网络服务 提供用户身份验证 表示层 确保接收系统可以读出该数据 格式化数据 构建数据 协商用于应用层的数据传输语法 提供加密 会话层 建立、管理和终止在应用程序之间的会话 传输层 确保数据传输的可靠性 建立、维护和终止虚拟电路 通过错误检测以及恢复 信息流控制来保证可靠性 网络层 路由数据包 选择传递数据的最佳途径 支持逻辑寻址和路径选择 数据链路层 定义如何格式化数据以便进行传输以及如何控制对网络的访问 支持错误检测 物理层 为启动、维护、以及关闭物理链路定义了电器规范、机械规范、过程规范和功能规范
2、网络物理设备
集线器(Hub):多端口中继器 1、不记忆信息包由那个MAC地址转发,哪个MAC地址在Hub的哪个端口 2、共享贷款 3、半双工 Hub和交换机比较 1、集线器属于物理层,网桥属于数据链路层 2、集线器是广播模式,所有端口在一个冲突域,网桥可以通过端口隔离冲突 3、Hub共享带宽 、网桥独立带宽
3、路由器
1、分割广播域 2、选择路由表中 到达目标最好的路径 3、维护和检查路由信息 4、连接广域网 路由: 把一个数据包从一个设备发送到不同的网络设备里的另一个设备上去 路由器只关心网络的状态和决定网络中的最佳路径。 路由的实现依靠路由器中的路由表来完成
4、VLAN
分隔广播域 更安全 灵活管理
5、TCP/IP协议栈
应用层 传输层 网络层 数据链路层 物理层
6、三次握手
第一次握手: 建立连接。客户端发送链接请求报文,将SYN置为1,Sequence Number为X,然后客户端进入SYN_SEND状态,等待服务器确认 第二次握手: 服务器收到SYN报文段,服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgement Number为x+1 (Sequence Number+1)。 同时,自己还需要发送SYN请求信息,将SYN和ACK标志位置为1,Sequence Number为y; 服务器将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态 第三次握手: 客户端收到服务器的SYN+ACK报文段。然后将Acknowledgement Number设置为y+1,向服务器发送ACK报文段, 这个报文段发送完毕后,客户端和服务器都进入ESTABLISHED
7、ARP协议
工作原理: 当源主机需要将一个数据包发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址,如果有,就直接使用MAC 地址;如果没有,主机先将目标主机的IP地址与自己的子网掩码进行“与”操作,以判定目标主机与自己是否位于同一网段内。若在同一 网段内,就像本地网段发起一个ARP请求的广播包,查询目标主机的MAC地址,若目标主机在远程网络上,就通过路由器等设备转发至此远 程网络中广播 ARP欺骗: 第一种:截获网关数据 它通知路由器一系列错误的内网MAC地址,并按照一定的频率不断通知路由器,使真实的地址信息无法保存在路由器中,结果路由 器所有的数据只能发送给错误的MAC地址,造成正常主机无法收到信息 第二种:冒充网关 冒充网关,不停地向网络中发送构造搞得广播ARP帧,让其他主机的ARP高速缓存中保存的网关的IP地址对应的MAC地址是本机的 MAC地址,让被欺骗的主机向本机发送数据 ,本机就可以截获这些数据,如果本机向外转发这些数据。那些被欺骗的主机感觉一切 正常,他们感觉不到数据被截获了,如果本机不转发这些数据,这些被欺骗的主机就无法对外通讯了
8、冲突域和广播域
冲突域: 连接在同一导线上的所有工作站的集合,或者同一物理网段上所有节点的集合,或者以太网上竞争同一宽带的集合。 这个区域可以被认为是共享段。冲突域被看做是第一层的概念,连接冲突域的有Hub或者其他进行简单复制信号的设备 广播域: 接收同一广播消息的节点的集合,在该节点集合中的任何一个节点传输一个广播帧,所有其他能收到这个帧的节点都被认为是该广播帧 的一部分,广播域被认为是数据链路层的概念,第三层的路由器可以划分广播域
9、ip地址分类
A类: 0 0000000 - 0 1111111 1-127 网络数:127 每个网络中的主机数:2^24-2 默认子网掩码:255.0.0.0 私网地址:10.0.0.0-10.255.255.255 B类: 10 000000 - 10 111111 128-191 网络数:2^14 每个网络中的主机数:2^16-2 默认子网掩码:255.255.0.0 私网地址:172.16.0.0-172.31.255.255 C类: 110 000000 - 110 11111 192-223 网络数:2^21 每个网络中的主机数2^8-2 默认子网掩码:255.255.255.0 私网地址:192.168.0.0-192.168.255.255 D类:组播 1110 0000 - 1110 1111 224-239 E类: 240-255
虚拟网卡实现一个网卡多个IP地址
1、复制网卡配置文件ifcfg-eth0为ifcfg-eth0:0和ifcfg-eth0:1
[root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0 [root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth0:1
2、编辑eth0:0和eth0:1的配置文件,简单加入下三行
[root@localhost network-scripts]# cat ifcfg-eth0:0 DEVICE=eth0:0 BOOTPROTO=yes ONBOOT=yes IPADDR=10.1.252.8 PREFIX=16 GATEWAY=10.1.0.1 [root@localhost network-scripts]# cat ifcfg-eth0:1 DEVICE=eth0:1 BOOTPROTO=yes ONBOOT=yes IPADDR=10.1.252.9 PREFIX=16 GATEWAY=10.1.0.1
3、重启网络服务,查看ip信息
[root@localhost network-scripts]# service network restart [root@localhost network-scripts]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:A3:AA:9E inet addr:10.1.252.67 Bcast:10.1.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:fea3:aa9e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:13746 errors:0 dropped:0 overruns:0 frame:0 TX packets:1506 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1549834 (1.4 MiB) TX bytes:278613 (272.0 KiB) eth0:0 Link encap:Ethernet HWaddr 00:0C:29:A3:AA:9E inet addr:10.1.252.8 Bcast:10.1.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 eth0:1 Link encap:Ethernet HWaddr 00:0C:29:A3:AA:9E inet addr:10.1.252.9 Bcast:10.1.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
4、测试ping
[root@localhost ~]# ping 10.1.252.8 PING 10.1.252.8 (10.1.252.8) 56(84) bytes of data. 64 bytes from 10.1.252.8: icmp_seq=1 ttl=64 time=1.77 ms 64 bytes from 10.1.252.8: icmp_seq=2 ttl=64 time=0.226 ms ^C --- 10.1.252.8 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 0.226/1.001/1.776/0.775 ms [root@localhost ~]# ping 10.1.252.9 PING 10.1.252.9 (10.1.252.9) 56(84) bytes of data. 64 bytes from 10.1.252.9: icmp_seq=1 ttl=64 time=0.728 ms 64 bytes from 10.1.252.9: icmp_seq=2 ttl=64 time=2.37 ms
多网卡bond,mode1
1、创建bond配置文件
[root@localhost network-scripts]# cat ifcfg-bond0 DEVICE=bond0 BOOTPROTO=none ONBOOT=yes IPADDR=10.1.252.8 PREFIX=16 GATEWAY=10.1.0.1 BONDING_OPTS="miimon=100 mode=1"
2、修改两个网卡配置文件
[root@localhost network-scripts]# cat ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none SLAVE=yes MASTER=bond0 USERCTL=no [root@localhost network-scripts]# cat ifcfg-eth1 DEVICE=eth1 BOOTPROTO=none ONBOOT=yes SLAVE=yes MASTER=bond0 USERCTL=no
3、重启网络服务
[root@localhost network-scripts]# service network restart
4、ifconfig重启服务
bond0 Link encap:Ethernet HWaddr 00:0C:29:A3:AA:9E inet addr:10.1.252.8 Bcast:10.1.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:fea3:aa9e/64 Scope:Link UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:1817 errors:0 dropped:0 overruns:0 frame:0 TX packets:185 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:163500 (159.6 KiB) TX bytes:21691 (21.1 KiB) eth0 Link encap:Ethernet HWaddr 00:0C:29:A3:AA:9E UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:23527 errors:0 dropped:0 overruns:0 frame:0 TX packets:2243 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2434621 (2.3 MiB) TX bytes:379616 (370.7 KiB) eth1 Link encap:Ethernet HWaddr 00:0C:29:A3:AA:9E UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:26164 errors:0 dropped:0 overruns:0 frame:0 TX packets:147 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:20906962 (19.9 MiB) TX bytes:10174 (9.9 KiB)
5、验证
查看bond状态 [root@localhost network-scripts]# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eth1 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth0 MII Status: down Speed: Unknown Duplex: Unknown Link Failure Count: 1 Permanent HW addr: 00:0c:29:a3:aa:9e Slave queue ID: 0 Slave Interface: eth1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 1 Permanent HW addr: 00:0c:29:a3:aa:a8 Slave queue ID: 0 另一台主机ping该机器 [root@localhost ~]# ping 10.1.252.8 PING 10.1.252.8 (10.1.252.8) 56(84) bytes of data. 64 bytes from 10.1.252.8: icmp_seq=1 ttl=64 time=1.49 ms 64 bytes from 10.1.252.8: icmp_seq=2 ttl=64 time=0.206 ms 64 bytes from 10.1.252.8: icmp_seq=3 ttl=64 time=0.428 ms
6、断开eth1网卡
7、ping过程没有丢包
64 bytes from 10.1.252.8: icmp_seq=656 ttl=64 time=0.210 ms 64 bytes from 10.1.252.8: icmp_seq=657 ttl=64 time=0.265 ms 64 bytes from 10.1.252.8: icmp_seq=658 ttl=64 time=0.309 ms 64 bytes from 10.1.252.8: icmp_seq=659 ttl=64 time=0.392 ms 64 bytes from 10.1.252.8: icmp_seq=660 ttl=64 time=0.451 ms
8、再次查看bond状态,主网卡已经切换
[root@localhost network-scripts]# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eth0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 1 Permanent HW addr: 00:0c:29:a3:aa:9e Slave queue ID: 0 Slave Interface: eth1 MII Status: down Speed: Unknown Duplex: Unknown Link Failure Count: 2 Permanent HW addr: 00:0c:29:a3:aa:a8 Slave queue ID: 0
3、路由实验
拓扑图
实验环境:
两台CentOS7当做客户端,两台CentOS6都是双网卡当做路由器
1、实验环境准备
CentOS7关闭防火墙 [root@localhost ~]# iptables -F CentOS6关闭NetworkManager自启动,停止该服务 [root@localhost ~]# service NetworkManager stop [root@localhost ~]# chkconfig NetworkManager off
2、两台CentOS7上配置ip地址
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736 # Generated by parse-kickstart DEVICE=eno16777736 BOOTPROTO=none ONBOOT=yes IPADDR=10.10.0.100 PREFIX=16 GATEWAY=10.10.0.200 [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736 DEVICE=eno16777736 BOOTPROTO=none ONBOOT=yes IPADDR=192.168.0.2 GATEWAY=192.168.0.1 PREFIX=24
3、给两台路由器配上ip地址
[root@ _2_ ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=10.10.0.200 PREFIX=16 [root@ _3_ ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=static ONBOOT=yes IPADDR=172.16.0.1 PREFIX=16 [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none IPADDR=172.16.0.2 PREFIX=16 BOOTPROTO=none ONBOOT=yes [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=none ONBOOT=yes IPADDR=192.168.0.1 PREFIX=24
4、重启两台路由器的网络服务
[root@localhost ~]# service network restart
5、添加路由
左侧路由器: [root@localhost ~]# route add -net 192.168.0.0/24 gw 172.16.0.2 dev eth1 右侧路由器: [root@localhost ~]# route add -net 10.10.0.0/16 gw 172.16.0.1 dev eth0
6、在两台路由器上开启路由转发
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
7、测试
原创文章,作者:M20-1--孔祥文,如若转载,请注明出处:http://www.178linux.com/43252