TCP/IP协议:
网络访问层(Network Access Layer)在TCP/IP参考模型中并没有详细描述,只是指出主机必须使用某种协议与网络相连。
互联网层(Internet Layer)是整个体系结构的关键部分,其功能是使主机可以把分组发往任何网络,并使分组独立地传向目标。这些分组可能经由不同的网络,到达的顺序和发送的顺序也可能不同。高层如果需要顺序收发,那么就必须自行处理对分组的排序。互联网层使用因特网协议(IP,Internet Protocol)。TCP/IP参考模型的互联网层和OSI参考模型的网络层在功能上非常相似。
传输层(Tramsport Layer)使源端和目的端机器上的对等实体可以进行会话。在这一层定义了两个端到端的协议:传输控制协议(TCP,Transmission Control Protocol)和用户数据报协议(UDP,User Datagram Protocol)。TCP是面向连接的协议,它提供可靠的报文传输和对上层应用的连接服务。为此,除了基本的数据传输外,它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。UDP是面向无连接的不可靠传输的协议,主要用于不需要TCP的排序和流量控制等功能的应用程序。
应用层(Application Layer)包含所有的高层协议,包括:虚拟终端协议(TELNET,TELecommunications NETwork)、文件传输协议(FTP,File Transfer Protocol)、电子邮件传输协议(SMTP,Simple Mail Transfer Protocol)、域名服务(DNS,Domain Name Service)、网上新闻传输协议(NNTP,Net News Transfer Protocol)和超文本传送协议(HTTP,HyperText Transfer Protocol)等。TELNET允许一台机器上的用户登录到远程机器上,并进行工作;FTP提供有效地将文件从一台机器上移到另一台机器上的方法;SMTP用于电子邮件的收发;DNS用于把主机名映射到网络地址;NNTP用于新闻的发布、检索和获取;HTTP用于在WWW上获取主页。
传输层协议:
tcp, udp, sctp
网络层协议:
ip
IPv4 地址分类:
点分十进制:0-255
0000 0000 - 1111 1111
0.0.0.0-255.255.255.255
A类:
0 000 0000 - 0 111 1111: 1-127
网络数:126, 127
每个网络中的主机数:2^24-2
默认子网掩码:255.0.0.0
私网地址:10.0.0.0/8
B类:
10 00 0000 - 10 11 1111:128-191
网络数:2^14
每个网络中的主机数:2^16-2
默认子网掩码:255.255.0.0
私网地址:172.16.0.0/16-172.31.0.0/16
C类:
110 0 0000 - 110 1 1111: 192-223
网络数:2^21
每个网络中的主机数:2^8-2
默认子网掩码:255.255.255.0
私网地址:192.168.0.0/24-192.168.255.0/24
D类:组播
1110 0000 - 1110 1111: 224-239
E类:
240-255
子网掩码:
172.16.100.100/255.255.0.0, 172.17.1.1
跨网络通信:路由(一般按照最少路径或最小网络匹配)
主机路由:从一台主机到另一主机经过的路由
网络路由:从主机发出的数据包通过该路由连接到网络
默认路由:从主机发出的所有数据包都经该路由发出
将Linux主机接入到网络中:
IP/mask
路由:默认网关
DNS服务器
主DNS服务器
次DNS服务器
第三DNS服务器
配置方式:
静态指定:
ifcfg: ifconfig, route, netstat
ip: object {link, addr, route}, ss, tc
配置文件
system-config-network-tui (setup)
CentOS 7:
nmcli, nmtui(tui:test user interface)
动态分配:
DHCP: Dynamic Host Configuration Protocol
配置网络接口:
接口命名方式:
CentOS 6: 根据MAC地址识别
以太网:eth[0,1,2,...]
ppp:ppp[0,1,2,...](拨号点对点网络)
ifconfig命令
ifconfig [interface]
# ifconfig IFACE [up|down] [启用|禁用]指定接口
如: ifconfig eth0 显示指定网络接口信息
ifconfig interface [aftype] options | address ...
# ifconfig IFACE IP/mask [up]
[[email protected] ~]# ifconfig eth0 172.16.33.16/16 给指定接口配置IP/掩码
# ifconfig IFACE IP netmask MASK
[[email protected] ~]# ifconfig eth0 172.16.33.13 netmask 255.255.0.0
注意:立即生效,重启失效;
[禁用]启用混杂模式:[-]promisc (一般用于网络监控)
混杂模式表示即便目标MAC不是自己也会接收
route命令
路由管理命令
查看:route -n
添加:route add
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
网络|主机 掩码 网关
目标:192.168.1.3 网关:172.16.0.1
~]# route add -host 192.168.1.3[/32] gw 172.16.0.1
如果目标是主机则掩码为32位,如下图
目标:192.168.0.0 网关:172.16.0.1
~]# route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
~]# route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
默认路由,网关:172.16.0.1
~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
~]# route add default gw 172.16.0.1
删除:route del
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
目标:192.168.1.3 网关:172.16.0.1
目标:192.168.0.0 网关:172.16.0.1
~]# route del -net 192.168.0.0 netmask 255.255.255.0
DNS服务器指定
/etc/resolv.conf
nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3
正向解析:FQDN-->IP
# dig -t A FQDN(完全合格域名)
# host -t A FQDN
反解:IP-->FQDN
# dig -x IP
# host -t PTR IP
FQDN: www.magedu.com.
netstat命令:
netstat - Print network connections, routing tables, interface statistics,
masquerade connections, and multicast memberships
显示网络连接:
netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n]
[--extend|-e[--extend|-e]] [--program|-p]
-t: tcp协议相关
-u: udp协议相关
-w: raw socket相关 裸套接字相关
-l: 处于监听状态
-a: 所有状态
-n: 以数字显示IP和端口;
-e:扩展格式
-p: 显示相关进程及PID
常用组合:
-tan, -uan, -tnl, -unl
显示路由表:
netstat {--route|-r} [--numeric|-n]
-r: 显示内核路由表
-n: 数字格式
显示接口统计数据:
netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n]
# netstat -i
# netstat -I IFACE
配置Linux网络属性:ip命令
ip命令:
ip - show / manipulate routing, devices, policy routing and tunnels
显示或者配置路由,设备,策略路由和隧道
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route }
link OBJECT:
ip link - network device configuration 网络设备配置
set:
dev IFACE
可设置属性:
up and down:激活或禁用指定接口;
[[email protected] ~]# ip link set eth0 down
[[email protected] ~]# ip link set eth0 up
show:
[dev IFACE]:指定接口
[up]:仅显示处于激活状态的接口
ip address - protocol address management
ip addr { add | del } IFADDR dev STRING
[label LABEL]:添加地址时指明网卡别名
[scope {global|link|host}]:指明作用域
global: 全局可用;
link: 仅链接可用;
host: 本机可用;
[broadcast ADDRESS]:指明广播地址
[[email protected] ~]# ip addr del 172.16.33.100/16 dev eth0
[[email protected] ~]# ip addr flush dev eth0 label ‘eth0:0‘
ip address show - look at protocol addresses
[dev DEVICE]
[label PATTERN]
[primary and secondary]
ip address flush - flush protocol addresses
使用格式同show
ip route - routing table management
ip route add
添加路由:ip route add TARGET via GW dev IFACE src SOURCE_IP
TARGET:
主机路由:IP(不可指掩码)
网络路由:NETWORK/MASK
添加网关:ip route add defalt via GW dev IFACE
[[email protected] ~]# ip route del 192.168.0.0/24 via 172.16.0.1[ dev eth0]
[[email protected] ~]# ip route add default via 172.16.0.1 #添加默认网关
ip route delete
删除路由:ip route del TARGET
[[email protected] ~]# ip route del default #删除默认网关
ip route show
ip route flush
[dev IFACE] 与某接口相关
[via PREFIX] 与指定网关相关
ss命令:网络状态查看工具
格式:ss [OPTION]... [FILTER]
选项:
-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unix sock相关 unix套接字相关,一种基于本机内存的快速数据交换
-l: listen状态的连接
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m:内存用量
-o:计时器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
TCP的常见状态:
tcp finite state machine:
LISTEN: 监听
ESTABLISHED:已建立的连接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
EXPRESSION:
dport =
sport =
示例:’( dport = :ssh or sport = :ssh )’
常用组合:
-tan, -tanl, -tanlp, -uan
修改配置文件:
IP、MASK、GW、DNS相关配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
路由相关的配置文件:/etc/sysconfig/network-scripts/route-IFACE(默认不存在需手动创建)
/etc/sysconfig/network-scripts/ifcfg-IFACE:
DEVICE:此配置文件应用到的设备;
HWADDR:对应的设备的MAC地址;
BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp;
NM_CONTROLLED:NM是NetworkManager的简写;此网卡是否接受NM控制;CentOS6建议为“no”;
ONBOOT:在系统引导时是否激活此设备;
TYPE:接口类型;常见有的Ethernet, Bridge;
UUID:设备的惟一标识;
IPADDR:指明IP地址;
NETMASK:子网掩码;
GATEWAY: 默认网关;
DNS1:第一个DNS服务器指向;
DNS2:第二个DNS服务器指向;
USERCTL:普通用户是否可控制此设备;
PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向信息直接覆盖
至/etc/resolv.conf文件中;
[[email protected] ~]# service network restart #立即生效
/etc/sysconfig/network-scripts/route-IFACE
两种风格:(不能混合使用)
(1) TARGET via GW
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
给网卡配置多地址:
ifconfig:
ifconfig IFACE_ALIAS(网卡别名)
[[email protected] ~]# ifconfig eth0:0 192.168.0.20/24 up
ip
ip addr add
配置文件:
ifcfg-IFACE_ALIAS
DEVICE=IFACE_ALIAS
注意:网关别名不能使用dhcp协议引导;
Linux网络属性配置的tui(text user interface):
[[email protected] network-scripts]# system-config-network-tui
也可以使用setup找到;
注意:记得重启网络服务方能生效;
配置当前主机的主机名:
hostname [HOSTNAME]
/etc/sysconfig/network
HOSTNAME=
[[email protected] network-scripts]# hostname www.mageedu.com
网络接口识别并命名相关的udev配置文件:
/etc/udev/rules.d/70-persistent-net.rules
立即生效需卸载网卡后重新装载
卸载网卡驱动:
modprobe -r e1000
装载网卡驱动:
modprobe e1000
CentOS 7网络属性配置
传统命名:以太网eth[0,1,2,...], wlan[0,1,2,...]
可预测功能
udev支持多种不同的命名方案:
Firmware, 拓扑结构
(1) 网卡命名机制
systemd对网络设备的命名方式:
(a) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如
eno1;
(b) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如
ens1;
(c) 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0;
(d) 如果用户显式启动,也可根据MAC地址进行命名,enx2387a1dc56;
(e) 上述均不可用时,则使用传统命名机制;
上述命名机制中,有的需要biosdevname程序的参与;
(2) 名称组成格式
en: ethernet
wl: wlan
ww: wwan
名称类型:
o<index>: 集成设备的设备索引号;
s<slot>: 扩展槽的索引号;
x<MAC>: 基于MAC地址的命名;
p<bus>s<slot>: enp2s1
网卡设备的命名过程:
第一步:
udev, 辅助工具程序/lib/udev/rename_device会根据/usr/lib/udev/rules.d/60-net.rules查
询/etc/sysconfig/network-scripts/ifcfg-*文件,根据MAC读取device指向的名称
第二步:
biosdevname 会根据/usr/lib/udev/rules.d/71-biosdevname.rules
第三步:
通过检测网络接口设备,根据/usr/lib/udev/rules.d/75-net-description当中的设备属性信息命名
ID_NET_NAME_ONBOARD, ID_NET_NAME_SLOT, ID_NET_NAME_PATH
回归传统命名方式:
(1) 编辑/etc/default/grub配置文件
GRUB_CMDLINE_LINUX="net.ifnames=0 rhgb quiet"
(2) 为grub2生成其配置文件
[[email protected] ~]# grub2-mkconfig -o /etc/grub2.cfg
(3) 重启系统
地址配置工具:nmcli
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device - show and manage network interfaces
connection - start, stop, and manage network connections
如何修改IP地址等属性:
#nmcli connection modify IFACE [+|-]setting.property value
setting.property:
ipv4.addresses
ipv4.gateway
ipv4.dns1
ipv4.method
manual
[[email protected] ~]# nmcli connection modify eth0 +ipv4.addresses 172.16.100.12/16
网络接口配置tui工具:nmtui
主机名称配置工具:hostnamectl
status
set-hostname