网络基础

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、三次握手

QQ图片20160904152017.png

第一次握手:
    建立连接。客户端发送链接请求报文,将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网卡

    QQ图片20160904220607.png

    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、路由实验

    拓扑图

    QQ图片20160905141300.png

    实验环境:

        两台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、测试

       QQ图片20160905150323.png

原创文章,作者:M20-1--孔祥文,如若转载,请注明出处:http://www.178linux.com/43252

(0)
M20-1--孔祥文M20-1--孔祥文
上一篇 2016-09-06
下一篇 2016-09-06

相关推荐

  • 第九周作业

    awk基础 简介        AWK是一种优良的文本处理工具。它是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一,相比sed常常作用于一整行的处理,awk比较倾向于将一行分成数个“字段”来处理。所以,awk相当适合处理小型的数据处理。 基础用法 awk[选项] ‘program’…

    2017-07-16
  • 第二十周作业

    一、用keepalived实现nginx与lvs的高可用集群 keepalived+nginx高可用环境:node1:    192.168.31.233     keepalived+nginx masternode2:    192.168.31.72      k…

    2017-07-22
  • sed行编辑器与vim编辑器

    一、sed行编辑器   1、简介:sed的本身也是一个管道命令,可以分析标准输入,还可以将数据进行替换、删除、新增、选取特定行的功能   2、工作原理:sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”( pattern space),接着用sed命令处理缓冲区中的内容…

    Linux干货 2016-08-11
  • 谷歌三大核心技术(一)The Google File System中文版

    摘要 我们设计并实现了Google GFS文件系统,一个面向大规模数据密集型应用的、可伸缩的分布式文件系统。GFS虽然运行在廉价的普遍硬件设备上,但是它依然了提供灾难冗余的能力,为大量客户机提供了高性能的服务。 虽然GFS的设计目标与许多传统的分布式文件系统有很多相同之处,但是,我们的设计还是以我们对自己的应用的负载情况和技术环境的分析为基础的,不管现在还是…

    Linux干货 2015-04-13
  • llinux常用命令及bash基本特性

    一、常用的文件和目录管理命令 1. pwd命令:用来显示当前的工作目录 语法格式:直接输入pwd回车显示当前的工作目录 示例:用pwd命令显示当前的工作目录 [root@suyiwen ~]# pwd /root 2. mkdir命令:用来创建目录文件 语法格式:mkdir [OPTION]… DIRECTORY…常用option: -m,用来指定目录的权限…

    Linux干货 2018-03-11
  • 2017全球互联网架构大会上海站火热来袭,等您赴约!

    GIAC 全球互联网架构大会,是长期关注互联网技术与架构的高可用架构技术社区推出的,面向架构师、技术负责人及高端技术从业人员的年度技术架构大会。

    2017-11-30