首页 > 代码库 > 网络基础

网络基础

               网络基础

ip地址分类:

   A类:

        前一段为网络号,后三段为主机号

        网络号:

        0 000 0000 -- 0 111 1111:0-127 

              

        网络数量:126 ,私有网络地址(回环地址)127

            每个网络中的主机数:2^24-2(全0或者全1)

             全0地址代表网络本身,全1的是广播地址

        默认子网掩码:255.0.0.0或/8

         私网地址:10.0.0.0/8-10.255.255.255

    

    B类:

         前两段为网络号,后两段为主机号

         网络号: 

          10 00 0000 --- 10 11 1111:128-191

          网络数:2^14

          每个网络中的主机数量:2^16-2

          默认子网掩码:255.255.0.0或/16

          私网地址:172.16.0.0--172.31.0.0

    C类:

         前三段为网络号,最后一段为主机号

       网络号:

           110 0 0000 --- 110 1 1111 :192-223

           每个网络中的主机数量:2^8-2

           默认子网掩码:255.255.255.0,/24

           192.168.0.0-192.168.255.255

  

     D类: 组播

         1110 0000 ---1110 1111 :224-239

     E类:科研

         240-255

 

IP地址计算:

     计算IP地址为192.168.36.5、子网掩饰码为255.255.240.0的计算机网络号

      ip地址与子网掩码化为二进制形式,再做相与运算   网络号是192.168.32.0


网络类型:

      LAN:局域网(Local Area Network)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、

应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的,可以由办公室内的两台计算机组成,

也可以由一个公司内的上千台计算机组成。 它可以通过数据通信网或专用数据电路,与远方的局域网、数据库或处理中心相连接,构成一个较大范

围的信息处理系统。 

   WAN 广域网( Wide Area Network)也称远程网(long haul network )。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接

   多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络,因特网(Internet)是世界范围内最大的广域网。


网络通讯:

    自己写明自己的MAC地址和路由器的MAC地址,自己的IP和目标IP。当路由器收到后拆开,发现目标IP就会在加上一层MAC地址,但是源MAC不变,IP地址不变,然后发给其他的路由器,其他路由器只拆开

上个路由器封装的MAC层

            

交换机上记录的是mac地址和接口之间的对应关系,以及vlan,VLAN是交换机上隔离冲突域的,可以设定

 

本地网络通讯:

 

      首先主机0想和1通信,然后主机0通过自己的ip以及1的ip加上子网掩码运算,发现主机1是和它自己在一个子网,那么0就可以和1直接本地通信。但是二层封装的时候需要1的mac地址,0第一次通信的时候发现自己并不知道1的mac,然后0就会发一个arp广播询问1的mac,交换机收到广播后,就会把0的mac和接口f0/1关联起来,也就是写入mac表;然后交换机查看广播包的mac,发现目的是二层广播,交换机就把包从除了0/1的所有接口  泛洪出去。1收到广播后,就会回应0,告诉自己的mac,数据包经过交换机的时候,交换机把1的mac和端口f0/2关联起来。然后0知道了1的mac, 就可以完成数据包封装,然后就把数据包发出。数据包到了交换机,交换机检查mac表,找到1的mac对应端口f0/2,然后就把数据从那个端口发出去  。1收到数据,然后已经知道了0的mac,直接封装数据就发出去,到了交换机,查表,然后从f0/1发出去。这样就完成通信了。


   具有路由器的部分功能的交换机是三层交互机,不同vlan之间通讯还是要通过路由器。

   路由器上一个口上可能有多个IP地址,这样就可以作为多个网段的网关,也能实现多个不同的网段之 间的通讯了

   解封装是指在接收方发生的自下而上的过程,封装是自上向下的过程


 配置主机接入网络的命令:

    静态指定:

   命令:

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

 CentOs 7:hostnameclt

网卡的配置:

   配置文件:

   redhat及相关发行版

  /etc/sysconfig/network-scripts/ifcfg-NETCARD-NAME

  

    动态分配:

网络接口命令方式:

   传统命名:

           以太网:ethX

           ppp网络:pppx

   可预测命名方案(CentOS7)

    支持多种不同的命名机制:

        基于硬件命名

        fireware:拓扑结构,

        1.如果FIrmware或BIOS为主板上集成的设备提供的索引信息可用,则根据此索引进行命名,如eno1,eno2

        2.如果fireware或BIOS为PCI-E拓展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,如ens1,ens2,..

        3.如果硬件接口的物理位置信息可用,则根据此信息命名,如enp2s0,...

        4.如果用户显式定义,也可根据MAC地址命名,enp2s0,...

上述均不可用,则扔使用传统方式命名:

        命名格式的组成:

          en:ethernet

          wl:wlan

          ww:wwan

        名称类型:

            0<index>:集成设备的设备索引号

            s<slot>:扩展槽的索引号

            x<max>:基于MAC地址的命名

            p<bus>s<slot>:基于总线及槽的拓扑结构进行命名

            备份/dev/sda的分区表

        

网络属性配置命令:

    

 ifcfg命令家族: ifconfig.route netstat

 

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

          ifconfig [interface]

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

      ifconfig interface options |address

         options:

        -promisc:混杂模式

       add addr/netmasklength:添加IPv6地址

        del addr/netmasklength: 移除IPv6地址

           eg:ifconfig  eth0 192.168.43.12 netmask 255.255.255.0  设置IP地址

          ifconfig  eth0 192.168.43.12/24

           ifconfig  eth1 promisc 设置为混杂模式

        ifconfig  eth1 -promisc 取消混杂模式

                删除某个接口上的地址:

       eg:ifocnfig eth1 0

  

配置别名:

              ifconfig eno16777736:1192.168.10.100/24

              ifconfig eth0:1 down

     route命令:路由查看及管理

路由条目类型:

    主机路由:目标主机为单个IP

     网络路由:目标地址为IP网络

     默认路由:目标为任意网络。0.0.0.0/0.0.0.0

     网关地址必须和本地地址在同一网段内

       route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]

           route del [-net|-host] [网域或主机] netmask [mask] [gw|dev]

 

#route -n 以数字方式显示,不要反解主机名

[root@localhost ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

192.168.247.0   0.0.0.0         255.255.255.0   U     0      0        0 eno16777736

      

      Destination代表的是target,有指定路由的就按照指定的路由条目去查找,没有的就按默认的网关,0.0.0.0是指没有被路由条目匹配到的所有的地址IP

      gateway:下一跳网关地址,0.0.0.0是指自己的主机本身就在网络上,不需要网关,并不是指任意网关

      flags:路由条目的标志,U表示启用,G表示是网关,

      Netric:到达目标网络需要的开销

      Iface:经过本地的那个接口向外发送

添加route条目:

     usage:route add [-net|-host] target [gw Gw] [netmask Nm] [[dev] If] 

      [root@localhost join]# route add -net 10.0.0.0/8 gw 192.168.10.1 dev eth1 后面的Dev Eth1可省略

添加默认网关:

  route add -net 0.0.0.0/0.0.0.0 gw 192.168.10.1

  route add default gw 192.168.10.1

删除网关条目:

              route del [-net|-host] target [netmask Nm] [gw GW] [dev]

              route del -net 10.0.0.0/8

 route del default 

 

netstat 命令:

  显示路由:netstat -rn

               -r:显示内核路由表

  -n:数字格式

           显示网络连接:

netstat [--tcp|-t][--udp|-u] [--udplite|-U][--sctp|-S][--raw|-w][--listening|-l]     [--all|-a]     [--numeric|-n]

            [--extend|-e[--extend|-e]]  

       -t:TCP协议的相关连接,连接均有状态,

       -u:udp相关的进程

       -w:raw socket相关的链接

       -l:处于监听状态的链接

       -a:所有状态

       -n:以数字格式显示IP和Part

       -e:扩展格式

       -p:显示相关的进程和PID

  

常用组合:

  -tan ,-uan,-tnl,-unl,-tunlp

 

      显示接口的统计数据:

    netstat {-interface|-I|-i}[iface] [--all|-a ][--extend|-e][--verbose|-v][--program|-p][--numeric|-n]

             eg:[root@localhost ~]# netstat -I=eth1 指定显示某个接口的信息

Kernel Interface table

Iface       MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg

eth1       1500   0        0      0      0      0        0      0      0      0 BMU

[root@localhost ~]# netstat -i 显示所有的接口的信息,和ifconfig中信息相同

Kernel Interface table

Iface       MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg

eth0       1500   0   125901      0      0      0     8629      0      0      0 BMRU

eth1       1500   0        0      0      0      0        0      0      0      0 BMU

lo        65536   0        0      0      0      0        0      0      0      0 LRU


ifup/ipdown命令: 启用或者禁用某个接口

                 注意:通过配置文件/etc/sysconfig/network-scripts/ifcfg-NETCARD-NAME来识别

           eg: ifup eth0 

配置主机名:

  hostname 命令:

  hostname;

  hostname HOSTNAME

    当前系统有效,重启后无效,想要永久有效可以编辑配置文件

      

centos7:

    hostnamectl命令:

    hostnameclt status:显示当前主机名信息

    hostnameclt set -hostname:设定主机名,永久有效

  

配置DNS服务器指向:

            配置文件:/etc/resolv.conf,最多指定三个

                     nameserver DNS_SERVER_IP

              如何测试:dig 不会查找/etc/hosts文件,而是会找DNS服务器

                  能解析不一定可以访问,反向解析的也比较少

 dig -t A FQDN

     FQDN--->IP

                  dig -x IP  

                  IP---->FQDN  

  iproute家族:

iproute的版本和内核一致

ip命令:show  / manipulate routing, devices, policy routing and tunnels

用法: ip   OBJECT { COMMAND | help }

               OBJECT := { link | addr | route|netns  }

   注意:OBJECT和object的子命令均可简写

      ip object:

       ip link:network device configuration

       ip link set   dev NAME  :change device attributes |NAME:指明要管理的设备,dev关键字可省略

     

      up和down:

      eg:ip link set eth1 down

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

      name NAME:重命名接口

      eg:[root@staus ~]# ip link set name haha eth1  要先down掉想要重命名的接口

    

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

 

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

      eg:ip link  set eth1 netns mynet  将eth1接口移到mynet空间中,这样利用ip link show 就无法看到这个接口了,删除

    mynet这个空间后就会回到本来的位置

    ip link show - display device attributes

    ip link help:显示简要使用帮助 

    ip  netns 

            help:

    add  NSNAME:增加一个netns

    del NSNAME: 删除指定的netns

                         list :列出所有的netns

    exec NAME COMMAND:在指定的netns中运行命令

             

  ip address -protocol address management

  

   可以给一个网卡添加多个地址:      

                ip addr add 192.168.10.100/24 dev eth1       

                ip addr add 10.1.0.1/8 dev eth1    

添加多个地址后ip addr show可以显示,ifconfig不会显示,可以添加标签

         [root@staus ~]# ip addr add 10.1.1.1/8 dev eno16777736 label eno16777736:1

eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

inet 192.168.247.130  netmask 255.255.255.0  broadcast 192.168.247.255

inet6 fe80::20c:29ff:fea9:43cc  prefixlen 64  scopeid 0x20<link>

 

eno16777736:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

inet 10.1.1.1  netmask 255.0.0.0  broadcast 0.0.0.0

ether 00:0c:29:a9:43:cc  txqueuelen 1000  (Ethernet)

  删除一个地址:

     ip addr del IFADDR dev IFACE

                   eg:[root@staus ~]# ip addr delete 10.1.1.1/8 dev eno16777736

 清空地址:

        ip addr flush dev IFACE

       ip route:

       ip route list;显示所有route条目

       ip route add

       eg:

      ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1

      ip route add 192.168.1.0/24 via 10.0.0.1 dev eth1 src 10.0.20.100

      ip route add default via 172.16.0.1 dev eth0

 

     ip route change

     ip route replace

     ip  route get TYPE PRIFIX

     ip route get 192.168.0.0/24

ss命令: 当并发连接的数目多时,netstat就会变得很慢

ss [options] [FILTER]

      选项:

        -t:tcp相关的进程

        -u:upd相关的进程

        -w:raw socket相关的进程

        -l:监听状态的连接

        -a:所有状态的链接

        -n:数字格式 

        -p:相关的程序及PID

        -e:扩展信息格式

        -m:内存用量

        -o:计时器信息

        -s: show socket usage summary

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

    TCP的常见状态:

        TCP FSM:

        LISTEN:

        ESTABLISHED:

        FIN_WAIT_1:

        FIN_WAIT_2:

        SYN_SENT:

        SYN_RECV:

      

   EXPRESSION:

           dport=

  sport=

      示例:#ss -tan ‘( dport = :22 or sport = :22 )‘

        #ss -tan state ESTABLISHED

多个子表达式之间可以组合,当然跟tcpdump一样,可以用or and not来组合。但括号要用转义符号表示。或者添加引号

[root@redhat ~]#  ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 193.233.7/24 

查看当前的11001端口被那个程序占用

[root@redhat ~]#ss -lp src :11001

                查看目标地址为169.254.7.1的所有信息 

[root@redhat ~]#  ss dst 169.254.7.1

  配置文件:

网卡的IP/NETMASK gateway,DNS等 配置都在/etc/sysconfig/network-scripts/ifcfg-IFACE  IFACE:接口名称

路由的相关配置文件;/etc/sysconfig/network-scripts/route-IFACE

    上面的配置文件通过大量参数来定义接口的属性,可通过vim直接修改,或者使用文本窗口

centos 6文本窗口配置

system-config-network

setup

 

centos 7 :nmcui

 

具体选项:

   

DEVICE=eth0 #网卡接口名称 

ONBOOT=yes #系统启动时是否自动加载

UUID:此设备的唯一标识

IPV6INIT:是否初始化IPV6

BOOTPROTO=static #启用地址协议 --static:静态协议 --bootp协议 --dhcp协议 ,

TYPE=Ethernet #网卡类型 常见的有ethernet,bridge

DNS1=10.203.104.41 #网卡DNS地址指向

DNS2=备用dns地址

DOMAIN=magedu.com  DNS的搜索域

IPADDR=192.168.1.11 #网卡IP地址 ,

NETMASK=255.255.255.0 #网卡网络地址,也可以使用PREFIX指定掩码长度 

GATEWAY=192.168.1.1 #网卡网关地址 

 

HWADDR=00:0C:29:13:5D:74 #网卡设备MAC地址

BROADCAST=192.168.1.255 #网卡广播地址 

    centos6中有两个网络服务:

 network

 NetworkManager(6上不好用,且不支持一些属性,7上较完善)

 

centos 7中:

  NAME:可以自己指定设备名

  USERCTL:是否允许普通用户控制此设备

  PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向覆盖

           本地手动指定的DNS服务器指向;默认为允许

 

  NM_CONTROLED:是否使用NetworkManager服务来控制接口。

 

重启网络服务会将ifconfig看到的地址清空,然后重新读取配置文件

CentOS 7:systemctl {start|stop|restart|status} SERVICE.service

 

配置路由:/etc/sysconfig/netword-scripts/route-IFACE

     支持两种配置方式,但不可混用; 

  1.每行一个target

     eg:

 [root@ network-scripts]# vim route-eth0


     10.0.0.1/24 via 192.168.10.1

      [root@ network-scripts]# service network restart

   2.每三行一个路由条目

 [root@ network-scripts]# vim route-eth1

ADDERSS=20.0.0.0

NETMASK=255.0.0.0

GATEWAY=192.168.10.2

      [root@ network-scripts]# service network restart

 

本文出自 “mylinux” 博客,请务必保留此出处http://luxiangyu.blog.51cto.com/9976123/1851340

网络基础