1.1 网络通讯模型介绍
- OSI七层模型
每层完成任务
- TCP/IP协议4层模型
此模型为实际网络使用模型
1.1.1 两种模型对应关系
1.1.2 TCP/IP三次握手
1.1.3 常见网络端口
1.2 IP协议
IP协议为网络层传输协议,数据包经过网络层时,IP协议会添加IP数据包。
IP数据包头包含信息
1.2.1 IP地址分类
- 1 - 126 开头为A类IP,最大支持 2^24-2(16777214)个主机
- 127 开头 本机回环地址IP
- 128 - 191 开头为B类IP, 最大支持 2^16-2(65534)个主机
- 192 - 223 开头为C类IP, 最大支持 2^8-2(254) 个主机
1.2.2 变长子网掩码以及子网规划
子网掩码的前面不间断的1为网络位。
- 例2
ip : 192.168.1.70 11000000.10101000.00000001.01000110
子网掩码 : 255.255.255.128 11111111.11111111.11111111.10000000 # 前25位为网络位
网络地址 : 192.168.1.0 11000000.10101000.00000001.00000000
广播地址 : 192.168.1.127 11000000.10101000.00000001.01111111
1.3 ICMP协议 - ping命令使用协议
1.4 Linux的IP地址配置几种方式
1.4.1 方式一:ifconfig 临时配置
注:一块网卡可以同时配置多个IP。
- 查看网络状态: ifconfig
- 临时配置网络: ifconfig eth0 192.168.0.200 netmask 255.2555.255.0
1.4.2 方式二:setup工具永久配置
centos 7 默认使用命令:nmtui
当然也可以使用yum -y install setuptool
具体操作不做演示,根据提示操作即可,与windows用户界面操作类似。
注:设置IP后需要重启网络服务:systemctl restart network
1.4.3 方式三:通过配置文件修改
注:配置文件修改后需要重启网络服务:systemctl restart network
- 网卡信息文件:/etc/sysconfig/network-scripts/ifcfg-xxx(网卡名称)
[root@localhost dbback]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE="Ethernet" # 类型为以太网
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none" # 是否自动获取IP (none、static、dhcp)
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy" # IPv6地址生成方式
NAME="ens160" # 网卡名称
UUID="c9f4f7af-8860-4a32-8b28-c0a1218b8e1a" # 唯一标识码
DEVICE="ens160" # 设备名称
ONBOOT="yes" # 是否随网络服务启动生效
IPADDR=192.168.21.156 # IP地址
PREFIX="24"
GATEWAY=192.168.21.1 # 网关地址
DNS1="202.106.0.20" # DNS 服务器地址
IPV6_PRIVACY="no"
- 主机名文件 - /etc/sysconfig/network
注:centos 7中主机名文件位置:/etc/hostname
可以把主机名从localhost改为其他名称,改变后需要重启机器生效
临时改主机名命令:hostname xxx(新主机名)
- DNS 配置文件 - /etc/resolv.conf
[root@localhost dbback]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 202.106.0.20
1.5 常用网络命令
1.5.1 查看与配置网络状态命令 : ifconfig
[root@localhost dbback]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0
inet6 fe80::42:29ff:fe71:58e3 prefixlen 64 scopeid 0x20<link>
ether 02:42:29:71:58:e3 txqueuelen 0 (Ethernet)
RX packets 237794 bytes 48535393 (46.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 217569 bytes 32158546 (30.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.21.156 netmask 255.255.255.0 broadcast 192.168.21.255
ether 00:50:56:b3:1e:8e txqueuelen 1000 (Ethernet)
RX packets 5145692 bytes 1155715269 (1.0 GiB)
RX errors 0 dropped 7027 overruns 0 frame 0
TX packets 1269148 bytes 218993590 (208.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
1.5.2 查看或设置主机名命令 : hostname
1.5.3 关闭或启动网卡命令:ifdown,ifup
ifdown 网卡设备名 # 禁用网卡设备
ifup 网卡设备名 # 启用网卡设备
1.5.4 查看本机网络状态命令:netstat
语法
netstat [选项]
常用选项
# tcp6为IPv6监听协议,能兼容IPv4
[root@localhost dbback]# netstat -tlunp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:9080 0.0.0.0:* LISTEN 2242/nginx: master
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1962/master
tcp 0 0 0.0.0.0:9443 0.0.0.0:* LISTEN 2242/nginx: master
tcp 0 0 0.0.0.0:9002 0.0.0.0:* LISTEN 5269/python3
tcp 0 0 127.0.0.1:9003 0.0.0.0:* LISTEN 22095/python
tcp 0 0 127.0.0.1:2379 0.0.0.0:* LISTEN 1716/etcd
tcp 0 0 127.0.0.1:2380 0.0.0.0:* LISTEN 1716/etcd
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 3724/nginx: worker
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 14518/sshd
tcp6 0 0 :::8888 :::* LISTEN 18597/docker-proxy-
tcp6 0 0 :::9080 :::* LISTEN 2242/nginx: master
tcp6 0 0 ::1:25 :::* LISTEN 1962/master
tcp6 0 0 :::222 :::* LISTEN 18625/docker-proxy-
tcp6 0 0 :::1443 :::* LISTEN 18611/docker-proxy-
tcp6 0 0 :::9443 :::* LISTEN 2242/nginx: master
tcp6 0 0 :::3306 :::* LISTEN 19096/docker-proxy-
tcp6 0 0 :::6379 :::* LISTEN 19678/docker-proxy-
tcp6 0 0 :::22 :::* LISTEN 14518/sshd
udp 0 0 127.0.0.1:323 0.0.0.0:* 1298/chronyd
udp6 0 0 ::1:323 :::* 1298/chronyd
[root@localhost dbback]# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:9080 0.0.0.0:* LISTEN 2242/nginx: master
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1962/master
tcp 0 0 0.0.0.0:9443 0.0.0.0:* LISTEN 2242/nginx: master
tcp 0 0 0.0.0.0:9002 0.0.0.0:* LISTEN 5269/python3
tcp 0 0 127.0.0.1:9003 0.0.0.0:* LISTEN 22095/python
tcp 0 0 127.0.0.1:2379 0.0.0.0:* LISTEN 1716/etcd
tcp 0 0 127.0.0.1:2380 0.0.0.0:* LISTEN 1716/etcd
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 3724/nginx: worker
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 14518/sshd
tcp 0 0 192.168.21.156:22 192.168.0.1:41032 ESTABLISHED 31127/sshd: root@pt
tcp 0 0 127.0.0.1:46668 127.0.0.1:2379 ESTABLISHED 2250/nginx: worker
tcp 0 0 127.0.0.1:46666 127.0.0.1:2379 ESTABLISHED 2247/nginx: worker
tcp 0 0 127.0.0.1:46642 127.0.0.1:2379 ESTABLISHED 2246/nginx: worker
1.5.5 查看路由列表命令:route
可以查看网关信息
[root@localhost dbback]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.21.1 0.0.0.0 UG 100 0 0 ens160
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.21.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160
1.5.6 域名解析命令:nslookup
nslookup [主机名或IP]
1.5.7 探测网络连通性命令:ping
ping -c 次数 ip或域名
1.5.8 探测远程端口连通性命令:telnet
telnet [域名或IP] [端口]
[root@localhost dbback]# telnet 127.0.0.1 8081
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
1.5.9 路由跟踪命令:tractroute
traceroute [选项] IP或域名
- -n : 使用IP,不使用域名,速度更快
# * * * 代表路由节点禁止ping命令,traceroute命令并未成功。
[root@localhost dbback]# traceroute -n www.baidu.com
traceroute to www.baidu.com (110.242.68.4), 30 hops max, 60 byte packets
1 192.168.21.2 1.490 ms 1.549 ms 1.653 ms
2 192.168.0.1 0.392 ms 0.386 ms 0.371 ms
3 111.204.156.9 4.978 ms 3.158 ms 6.865 ms
4 124.65.239.49 1.754 ms 2.601 ms 1.740 ms
5 123.126.7.225 2.536 ms 2.523 ms 2.501 ms
6 202.96.12.177 5.650 ms * *
7 * * *
8 110.242.66.182 8.737 ms 8.486 ms 110.242.66.170 8.339 ms
9 * 221.194.45.130 8.049 ms *
10 * * *
11 * * *
12 * * *
13 * * *
1.5.10 下载命令:wget
wget 网络文件名
如:wget http://nginx.org/download/nginx-1.8.0.tar.gz