网络基础

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)
上一篇 2016-09-06 08:50
下一篇 2016-09-06 08:50

相关推荐

  • centos 6系统启动流程分析

    linux 系统启动流程: 之前有描述过linux的启动流程,但还有许多模糊的地方,经过一段时间了学习,查资料,看脚本,比初次理解更深,可以将上次模糊或不足的地方描述得比较清楚一些。 先看一张启动流程图。   分析: linux系统的启动流程大概可以分为两大部分: 第一部分为内核空间的启动 第二部分为用户空间的启动 其中,内核空间的启动主要可为分四…

    2017-05-15
  • 第二十周作业

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

    2017-07-22
  • mongodb 分片集群搭建

    集群架构 本次实验部署3台主机node1、node2、node3,2个副本集db1、db2作为分片,3台主机均有1个配置库实例 操作步骤 安装 node1上执行如下命令,完成后拷贝/mongodb目录到node2、node3 useradd mongodb   mkdir -p /mongodb/data/{…

    Linux干货 2016-11-06
  • 设计模式(七)组合模式Composite(结构型)

    1. 概述 在数据结构里面,树结构是很重要,我们可以把树的结构应用到设计模式里面。 例子1:就是多级树形菜单。 例子2:文件和文件夹目录 2.问题 我们可以使用简单的对象组合成复杂的对象,而这个复杂对象有可以组合成更大的对象。我们可以把简单这些对象定义成类,然后定义一些容器类来存储这些简单对象。客户端代码必须区别对象简单对象和容器对象,而实际上大多数情况下用…

    Linux干货 2015-07-01
  • Lnmp安装脚本

    1、源码编译安装LNMP架构环境; 此题略 此链接为安装nginx时,编译参数和各个模块和第三方模块的介绍,十分丰富,安装前可以参考学习 https://www.nginx.com/resources/admin-guide/installing-nginx-open-source/ 2、编写一个脚本完成以下功能:    (1)、一键搭建…

    Linux干货 2016-12-05
  • Linux终端类型

    适用对象:本文适用于初学Linux以及有志于学习Linux的朋友们。   一、         什么是终端 计算机体系中,终端主要是指与计算机连接,并可以与用户(人类)进行交互的设备。 二、      &nbs…

    Linux干货 2016-10-14