Linux网络属性配置,计算机基础

Linux网络属性配置,计算机基础

Linux网络属性配置,计算机基础

Linux网络属性配置(1):

计算机网络通信:TCP/IP 通过流式化数据相互通信,通过双方一致的时钟频率来完成信号传输; 有两种方式传输:同步传输,异步传输; 借助于介质传输:同轴电缆、网线、无线等; 要想相互通信,也要必须遵循一种(复杂)组织机制,就产生了协议; 通过把协议分层,来分别解决传输过程中各种复杂的操作; TCO/IP:协议栈 对层次界定不很分明,接口定义不规范,但是非常好使用的网络协议模式; OSI协议栈层次分明,但是使用起来过于笨重,因此仅作为学习使用的协议模型; 双方通信要在较高层次上,能够协商如何把数据流式化,如何还原回来,都需要定义协商; TCO/IP分为两个层次: 第一层次(低层):只关心数据如何从A主机发送到B主机,称为通信子网,对于TCO/IP完成数据交换的就叫通信子网,无 论它有几个层次; 第二层次:只关心数据如何被组织起来的,负责文件数据类型内部组织格式的就称为资源子网; 施乐公司的PARK实验室研究出了以太网,使用同轴电缆,用T型头把多个主机链接在同一根线缆上,假如有A、B、C、D四台 主机,A要想与B通信,A主机就把数据调制成某一个电压信号,然后把这个电压施加在电缆上,此时整根线缆都有电压信号,B、 C、D都能收到A的信号,但是其它主机就不能收发信号了,因此主机在互相收发信号时,在某一时刻只能有一个,只能抢占信道来 收发信号; 当两者同时发信号时,就发生了冲突,为了避免这样的冲突方案是有多种的,如以太网(Ethernet)就用CSMA/CD(载波侦 听多路访问/冲突检测)协议来解决,即每个主机发送信号前,先检测线路是否被占用,如果没有占用就发送数据; 当有两主机同时检测到线路空闲,同时发送数据时,协议工作是边发送数据边检测线路的,没检测到冲突时就发送数据,检测 到冲突时发送数据被打断,冲突的双方会自动随机等待一个时间再发送数据,就这样工作的; csma/cd协议 在实现信号传输时就是每个主机在发送信号前先检测线路,如果线路繁忙就等待一段随机时间再检测,如果线路空闲则立即 发信号并且边发送边检测是否有冲突发生,如果没有冲突就持续发送信号,一旦检测到冲突就立即中止信号传输,并后退再随机等 待一段时间,再检测线路,直到没有冲突把信号传完,这就是csma/cd的工作原理;

Linux网络属性配置,计算机基础

什么是以太网:将多个主机连接在一起,占用同一个底层通信信道时,使用csma/cd来解决信道征用问题的网络就叫做以太网。 每个主机都应该有自己的唯一标识(网卡)即MAC地址;固定在网卡上的rom中的; MAC:Media Access Control; 有48bits地址: ICANN:24bits,2^24 地址块:2^24网桥(bridge):有MAC表

MAC地址表生成方式: 静态指定:手动指定; 动态学习:根据原地址学习;MAC地址有生成周期ttl一般为300秒钟; 交换机(switch):多口网桥,每个端口可直连主机; 为了统一每个厂家生产的网卡没有重复的MAC地址: ICANN互联网名称与数字地址分配机构,规定:前24bits(地址块),2^24个地址要注册申请,后24bit,2^24个地址是 厂商自定义的;

遵循个体权利的才是开放的、才是世界的,普世的! 计算机在底层解决了这个问题,但当计算机数量不计其数时再冲突检测,就无法正常工作了,所以要把计算机切割成不同的网 络来避免冲突过大;两个网络里的主机要通信就用网桥连接两个网络,网桥设备能判断,如果网络一的某个主机是发送到网络二的 某个主机的,网桥设备就把网络一的主机转发到网络二的主机上,如果网络一的主机只发送给本网络内的其它主机的,则网桥不会 转发信号到另一网络,这样就分隔了冲突域;

Linux网络属性配置,计算机基础

网桥内存储了所有与它连接的主机MAC地址与连接它的对应的接口,通过检查这个地址表(称为MAC地址表),如果收的信 息的接口和目标主机都来自一个接口上,则不会转发,如果收的信息的接口和目标主机不是一个接口,则转发信息,从而完成数据 交换,后来称为交换机; 有时某主机会发生一个事先约定好的广播地址,即所有主机都能收到的地址;约定48位MAC地址全为1时,就是广播地址; 此时交换机会转发广播信息,每个主机都会发广播信息,网络大时,为了避免广播又产生了一个设备来分割网络即分割了广播域即 路由器; 广播域不同的网络需要通信时,需要立体的地址管理,MAC地址解决不了划分网络的能力,就产生了IP地址的概念;路由器 通过把不同的网络标记为不同的网络号,来实现不同网络的主机内通信;当路由器检测到是广播信息时不会转发信息,当路由器检 测到信息时发给不同网络内的主机时,会把信息路由到另外一个网络上完成通信; 因此会给每个网络上的主机分配以主机号即IP地址,所有每个主机上有两个地址,一个是MAC地址,一个是IP地址,MAC地 址完成本地通信,IP地址完成跨网络通信;

IP(Internet protocal)地址:网络号+主机号 A<–>B:A主机与B主机直接如何通信 网络地址   要指明哪个网络哪个主机 主机地址

IPv4:32bits   32位二进制
    每8bits一段,用点号分隔,共四段:8bits.8bits.8bits.8bits
            0-255
            0.0.0.0-255.255.255.255

    IP地址分类:
        A类:
            第一段为网络号(且最高位为0),后三段为主机号;
            网络号:
                0 000 0000-0 111 1111:0-127(有效网络号为1-127)
            网络数量:126个(2^8-2,全0不用,127分配给本地环回地址);
            每个网络中的主机数量:2^24-2(全0地址为网络地址,全1地址为所有主机);
            默认子网掩码:255.0.0.0,/8
                用于与IP地址按位进行“与”运算,从而取出其网络地址;
            为了能够判断原主机和目标主机是否在同一网络中就使用子网掩码来判断,因为IP地址和掩码做与操作,就计算出了网络地址(网络号);
            A类私网地址:10.0.0.0(只有一个10开头的网络)

        B类:
            前两段为网络号(且高位为10),后两段为主机号
            网络号:
                10 00 0000-10 11 1111:128-191
                网络数量:2^14
                每个网络中的主机数据:2^16-2(全0地址为网络地址,全1地址为所有主机);
                默认子网掩码:255.255.0.0,/16
                B类私网地址:172.16.0.0-172.31.0.0(能划分16个子网)

        C类:
            前三段为网络号,最后一段为主机号
            网络号:
                110 0 0000-110 1 1111:192-223
                网络数量:2^21
                每个网络中的主机数量:2^8-2(全0地址为网络地址,全1地址为所有主机);
                默认子网掩码:255.255.255.0,/24
                C类私网地址:

        D类:组播
        高位为1110
        1110 0000-1110 1111:224-239

        E类:科研
        240-255

网桥(交换机)通过MAC地址表知道主机与自己的接口相连,路由器有路由表,从而知道哪个网络与自己的接口相连; IPv6:128bits

路由器(router):有路由表 每一个路由器在某一时刻最终必须都要知道到达全球某个位置有哪些个路可走,而且要从中选一个最优的路径记录下来,这样就记录了很多路由条目,就形成了路由表; 路由表地址表生成方式: 静态指定:小范围可以; 动态学习:通过rip2,ospf等路由协议来实现生成路由表;

路由条目: 目标地址:下一跳(nexthop),也叫网关; 目标地址类别: 主机:主机路由 网络:网络路由(合并网络,子网划分等) 默认路由:0.0.0.0/0.0.0.0即ip为全0,掩码为全0,表示可到达任何主机;

Linux网络属性配置,计算机基础

traceroute命令就是跟踪经过的路径; ping命令就是测试两主机是否联通; 路由器所连接的网络都可以称作局域网,跨网络远程通信叫广域网(wan),连入广域网内只能在城市内通信叫城域网,能够在全球通信就叫互联网; OS:现在主机都是多用户,多任务的 多任务:就是多进程实现的; 比如:同时打开qq,网页,网络视频等应用; Client:使用临时可用地址和端口; Server:使用固定且明确的地址; 最终完成应用的是主机之间的进程通信;所以要标识主机的进程,进程也应该有地址是不可能跨越主机使用的,只在本 地主机上使用进程地址(即端口号); 进程地址有可能是可变的,也可能是固定不变的,服务器server就有固定且明确的IP地址,客户端client也有明确的IP地 址,只不过是使用临时可用地址; 端口就是用来实现标识本地主机上每一个进程的唯一数字标识,是进程用于实现网络通信的数字标识; 通信时,进程的数字标识: 16bits:0-65535,有效范围是1-65535; ICANN互联网名称与数字地址分配机构,规定: 1-1023:固定分配服务使用,而且只有管理员有权限启用; 1024-4万多:为半固定分配; 4万多+:临时分配; 实际上互联网主机之间的通信是主机进程之间的通信,每个主机的进程地址标识为IP:PORT;

Linux网络属性配置,计算机基础

osi模型       tcp/ip模型  应用层        
表示层 回话层 应用层 传输层 传输层 网络层 网络层 数据链路层 物理层 物理层

Linux网络属性配置,计算机基础

配置方式: 命令: ifcfg家族 ifconfig:配置ip,NETMASK route:路由 netstat:状态及统计数据查看 iproute2家族: ip OBJECT: addr:地址和掩码 link:接口 route:路由 ss:状态及统计数据查看 centos7:nm(Network Manager)家族 nmcli:命令行工具 nmtul:text window工具

        注意:
            (1)DNS服务器指定
                配置文件:/etc/resolv.conf
            (2)本地主机名配置
                hostname
                配置文件:/etc/sysconfig/network
                centos7:hostnamectl

    配置文件
        RedHat及相关发行版
            /etc/sysconfig/network-scripts/ifcfg-METCARD_NAME

 动态分配:依赖于本地网络中有DHCP服务
    DHCP:Dynamic Host Configure Procotol

网络接口命名方式: 传统命名: 以太网:ethx, ppp网络

    可预测命名方案(centos):
        支持多种不同的命名机制:
            Fireware,拓扑结构
        (1)如果firmware或BIOS为主板上集成的设备提供的索引信息可用,则根据此索引进行命名,如exo1,eno2。。
        (2)如果firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,如ens1,ens2.。
        (3)如果硬件接口的物理位置信息可用,则根据此信息命名,如enp2s0.。
        (4)如果用户显示定义,也可根据MAC地址命名,例如enx122161ab
        上述均不可用,则仍使用传统方式命名:

        命名格式的组成:
            en:ethernet
            wl:wlan
            ww:wwan

            名称类型:
                o<index>:集成设备的设备索引号;
                s<slot>:扩展槽的索引号;
                x<MAX>:基于MAC地址的命名;
                p<bus>s<slot>:基于总线及槽的拓扑结构进行命名;

回顾:计算机网络基础、linux网络属性配置 TCP/IP协议栈:物理层、互联网层、传输层、应用层 互联网层:IP 传输层:TCP,UDP 应用层:http,https,ftp,ldap…

非常重要:   链路层:以太网帧 互联网层:IP包报文 传输层:传输层报文

    以太网帧:MTU(1500)最大传输报文

    linux网络属性配置:命令、配置文件;

网络属性配置详解(2)

ifcfg命令家族:ifconfig,route,netstat

ifconfig命令(接口及地址查看和管理):

        ifconfig [INTERFACE]
            ifconfig -a:显示所有接口,包括inactive状态的接口;

    ifconfig interface [aftype] options |address...
        #ifconfig IFCE IP/MASK [up
        #ifconfig IFCE IP netmask NETMASK

        options:
            [-]promisc  混杂模式

    管理ipv6地址:
        add addr/prefixien
        del addr/prefixien

    注意:立即送往内核中的tvp/ip协议栈,并立即生效;

route命令:路由查看及管理(非常重要)

    路由条目类型:
        主机路由:目标地址为单个IP;
        网络路由:目标地址为IP网络;
        默认路由:目标为任意网络,0.0.0.0/0.0.0.0

    查看:
        route -n (以数字模式显示ip地址,无需反解地址和端口号)
    添加:
        route add [-net(网络路由)|-host(主机路由)] target [netmask Nm] [gw Gw(下一跳地址)] [[dev] IF]

Linux网络属性配置,计算机基础

        添加路由条目时必须要明确指明我们要到达某某某,经过哪一个下一跳地址来实现。a要到达b主机要经过下一跳r1交换接口。

        一个主机的网关地址一定要和本地主机地址在一个网段上!a主机的地址和路由的地址一定要在同一网段上。

Linux网络属性配置,计算机基础

            destination 表示telnet目标
            Genmask表示掩码地址,目标网络的掩码
            Gateway下一跳网关地址,0.0.0.0本地主机的网络地址,意思是我自己主机就在自己的网络上,所有不需要下一跳网关地址(无需网关)。本地主机直接所在的网络,也叫直连路由。
            Flags:U表示Up,启用状态。UG表示getway表示网关。
            Metric:度量值,经过这个网络所需要的开销
            Iface:指自己要用哪块网卡发出去。

            添加一个路由条目,想到达10.0.0.0,掩码为八位网络,经过下一跳地址10.1.250.40.

Linux网络属性配置,计算机基础

            下一跳必须与自己的某块网卡在同一网段中,而且要存在。

            示例:route add -net 0.0.0.0/0.0.0.0 gw 192.169.10.1
              或者route add default gw 192.169.10.1   

    删除:
        route del [-net(网络路由)|-host(主机路由)] target [netmask Nm] [gw Gw(下一跳地址)] [[dev] IF]

            示例

Linux网络属性配置,计算机基础

        route del -net 10.0.0.0/g
        route del default

netstat命令(非常重要):

Print(显示) network connections(网络连接), routing tables(路由表), interface statistics(接口统计数据), masquerade connections(伪装连接), and multicast memberships(多播成员关系)

显示路由:netstat -rn
            -r:显示内核路由表
            -n:数字格式,不要反解
显示网络连接:
    netstat [-t(表示tcp(有连接的协议)连接)] [-u(表示udp(用户数据报协议)连接)][--tcp|-t] [--udp|-u] [--raw|-w][--listening|-l][--all|-a][--numeric|-n] [--extend|-e] [--program|-p] 
        -t:TCP协议的相关连接,连接均有其状态;FSM(有限状态有哪些状态)
        -u:UDPF相关的连接
        -w:raw socket相关的连接
        -l:处于监听状态的连接
        -a:所有状态
        -n:以数字格式显示IP和Port   
        -e:扩展格式
        -p:显示相关的进程及PID;

        常用组合:
            -tan ,-uan,-tnl,-unl,-tunlp

    传输层协议:
        tcp:面向连接的协议;通信开始之前,要建立一个虚链路;通信完成后还要拆除连接;
        udp:无连接的协议;直接发送数据报文,无需建立虚链路;

显示接口的统计数据:
    netstat {--interfaces|-i} [Iface] [--all|-a] [--extend|-e] [--verbose|-v] [--program|-p] [--numeric|-n] 

    所有接口:
        netstat -i
    指定接口:
        netstat -I(eth1)

ifup/ifdown命令: 注意:通过配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE来识别接口并完成配置

配置主机名:

hostname命令: 查看:hostname 配置:hostname HOSTNAME  centos6用 当前系统有效   hostnamectl命令: hostnamectl status:显示当前主机名信息 hostnamectl set-hostname:设定主机名,永久有效;

配置文件:/etc/sysconfig/network HOSTNAME=

    注意:此方法的设置不会立即生效;但以后会一直生效

配置DNS服务器指向: 配置文件:/etc/resolv.conf nameserver DNSSERVERIP

        如何测试:
            dig -t A FQDN
                FQDN -->IP

            dig -x IP
                IP-->FQDN

iproute2家族:     ip命令:  ip – show / manipulate (查看及管理)routing(路由), devices(设备), policy routing(策略路由) and tun-nels(隧道)

   ip [ OPTIONS ] OBJECT { COMMAND | help }
        OBJECT:={LINK|addr|route|netns}

    ip OBJECT:
        ip link:network device configuration(网络设备配置)
            ip link set-change(修改) device attributes(属性)
            dev NAME(default):指明要管理的设备,dev关键字可省略
                    up and down

            multicast on 或multicast off:启用或禁用多播功能

Linux网络属性配置,计算机基础

            name NAME:重命名接口

Linux网络属性配置,计算机基础

重命名时注意先停止接口

        mtu NUMBER:设置MTU的大小,默认为1500;

        netns PID:ns为namespace,用于将接口移动到指定的网络名称空间


        ip link show-display(显示) device attributes

Linux网络属性配置,计算机基础

        ip link help- 显示简要使用帮助;

        ip netns: Ip - manage network namespaces(只有cenlos7里有)


        ip netns list:列出所有网络内存空间
        ip netns add NAME:添加网络内存空间              
        ip netns del NAME:删除网络内存空间
        ip netns exec NAME COMMAND:在指定网络内存空间中运行命令


        ip address - protocol address management

            ip address add -add new protocal address
                ip addr add IFADDR dev IFACE
                label NAME:为额外添加的地址指明接口别名;
                broadcast ADDRESS:广播地址;会根据IP和NETMASK自动计算的
                scope SCOPE_VALUE:                                  global:全局可用;
                    link:接口可用;
                    host:仅本机可用;



        ip address delete - delete protocol address
        ip addr delete IFADDR dev IFACE

        ip address show - look at protocol addresses
        ip addr list IFACE:仅显示指定接口的地址;

        ip address flush - flush protocol address
            ip addr flush dev IFACE  清空指定接口上的所有地址

        ip route - routing table management

            ip route add -add new route
        ip route change - change route
        ip route replace - change or add new one
                            ip route add TARGET

        ip route delete -  delete route

        ip route show - list routes

        ip route flush - flush routing tables

ss命令

ss [options] [FILER]
    选项:
        -t:TCP协议的相关连接
        -u:UDP相关的连接
        -w:raw socker相关的连接
        -l:监听状态的连接
        -a:所有状态的连接
        -n:数字格式
        -p:相关的程序及其PID
        -e:扩展格式信息
        -m:内存用量
        -o:计时器信息

    FILTER:=[state TCP-STATE] [EXPRESSION]

    TCP的常见状态:
        TCP FSM:
            LISTEN:监听
            ESTALISEHD:建立的连接
            FIN_WAIT_1:
            FIN_WAIT_2
            SYN_SENT:
            SYN_RECV:
            CLOSED:

    EXPRESSION:
        dport=
        sport=

配置文件:

IP/NETMASK/GW/DNS等属性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
    IFACE:接口名称;
路由的相关配置文件:/etc/sysconfig/network-scripts/route-IFACE

配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE通过大量参数来定义接口的属性;其可通过vim等文本编辑器直接修改,也可以使用专用的命令进行修改(centos6:system-config-network(setup),centos7:nmtui)

ifcfg-IFACE配置文件参数:
    DEVICE:此配置文件对应的设备的名称;和IFACE保存一致
    ONBOOT:在系统引导过程中是否激活此接口
    UUID:此设备的唯一标识;
    IPV6INIT:是否初始化ipv6
    BOOTPROTO:激活此接口时使用什么协议来配置接口属性。常用dhcp(动态)、bootp(动态)、static(静态)、none(静态)
    TYPE:接口类型,常见的有Etherner(以太网)
    DNS1:第一个DNS服务器指向
    DNS2:备用DNS服务器指向
    DOMAIN:DNS搜索域;
    GATEWAY:默认网关;
    IPADDR:配置本机ip地址;
    PREFIX或者NETMASK:子网掩码
        centos7支持PREFIX=8(以长度方式指明子网掩码)
    USERCTL:是否允许普通用户控制此设备;
    PEERDNS:如果BOOTPROTO的值为dhcp,是否允许dhcp server分配的dns服务器指向覆盖本地手动指定的DNS服务器指向(默认为yes)
    HWADDR:设备的MAC地址;不要改,直接删除

    NM_CONTROLLED:是否使用NetworkManager服务来控制接口;这个文件内核并不会自动读取,而是开机的时候会自动启动一个网络服务,这个服务有一些其他的功能能够通过读取此配置文件的参数来知道我们给主机配置什么地址掩码等,并使用相应的命令自动运行

网络服务:
  centos6中
    network(尽量使用这一种)
    NetworkManager
    centos7中
    NetworkManager已经非常完善了,可以使用

    管理网络服务:
        centos6:service SERVICE {start|stop|restart|status}

    配置文件修改之后,如果要生效,需要重启网络服务;
        service network restart

   centos7
   重启网路服务的正统用法:也可以使用centos6中的
    systemctl restart network.service
    systemctl {start|stop|restart|status} SERVICE[.service]

用到非默认网关路由:/etc/sysconfig/network-scripts/route-IFACE
    支持两种配置方式,但不可混用
        (1)每行一个路由条目
            TARGET via GW
        (2)每三行一个路由条目
            ADDRESS#=TARGET
            NETMASK#=MASK
            GATEWAY#=NEXTHOP

给接口配置多个地址(网卡别名):
    ip addr之外,ifconfig或配置文件都可以
    (1)ifconfig IFACE_LABEL IPADDR/NETMASK
         IFACE_LABEL:eth0:0.eth0:1
    (2)为别名添加配置文件;
        DEVICE=IFACE_LABEL
        BOOTPRTO:网卡别名不支持动态获取地址; 
            static,none

nmcli命令:centos7上专用

一、作业:

1、某公司申请到一个C 类IP 地址,但要连接6 个的子公司,最大的一个子 
公司有26 台计算机,每个子公司在一个网段中,则子网掩码应设为? 
6个网络号
192.168.1.0/27
192.168.1.32/27
192.168.1.64/27
192.168.1.96/27
192.168.1.128/27
192.168.1.160/27
子网掩码255.255.255.224

2、一家集团公司有12家子公司,每家子公司又有4个部门。上级给出一个172.16.0.0/16的网段,让给每家子公司以及子公司的部门分配网段。
172.16.0.0/22
172.16.4.0
172.16.8.0
172.16.12.0
172.16.16.0
172.16.20.0
172.16.24.0
172.16.28.0
172.16.32.0
172.16.36.0
172.16.40.0
172.16.44.0

原创文章,作者:15152188070,如若转载,请注明出处:http://www.178linux.com/43359

(0)
1515218807015152188070
上一篇 2016-09-05
下一篇 2016-09-05

相关推荐

  • 强大的vim编辑器

    vim编辑器 一、Vim编译器的概述 vi: Visual Interface,文本编辑器 v 文本:ASCII, Unicode v  文本编辑种类:      行编辑器: sed      全屏编辑器:nano,   &nbs…

    Linux干货 2016-08-12
  • 用户组和权限管理

    一、3A认证     Authentication:认证     Autherization:授权     Accoutiong|Audition:审计 二、用户user      linu…

    Linux干货 2016-08-04
  • MySQL-MMM实现MySQL高可用读写分离

    实验环境 实验拓扑 主机配置环境说明 主机名 IP地址 角色/用途 MySQL Server_ID master1 192.168.80.101 MySQL主节点,可读写操作 11 master2 192.168.80.102 MySQL备节点,可读写操作 12 slave1 192.168.80.103 MySQL从节点,仅能读 13 slave2 192…

    Linux干货 2016-06-01
  • 使用sudo对用户进行权限管理

    使用sudo对用户进行权限管理 因为root用户权限太大,一般在实际应用的时候 ,为了避免造成错误泛滥和找不到责任人都需要对使用服务器人员进行权限分配,除了系统管理员外,其他人禁止使用root,但可以通过sudo命令,给自己提权。同时通过日志审计进行监控操作,操作如下: 1.禁止普通用户使用su命令到root # usermod -g wheel user0…

    Linux干货 2017-03-26
  • 三剑客-sed小结

     sed是一款流编辑器工具,通常我们用来对文本进行过滤与替换操作,特别是当你想要对几十个配置文件做统一更改时,你会感受到sed的魅力。它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到…

    系统运维 2016-07-26
  • 我的第一篇博客

        大家好,欢迎阅读我的博客!     今天是我生平第一次写博客,恩  为什么现在才开始写呢?     其实是作业要求 哈哈!虽然是写作业,本萌新也是很拼的!     希望在以后学习li…

    2017-07-10

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-10 11:42

    写的很好,很详细哦,建议下来多加练习,将各个命令熟练掌握。