首页 > 代码库 > 网络基础
网络基础
网络基础
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
网络基础