9.1 TCP/IP 基础知识
9.1.1 IP 地址
IP地址是网络中设备的唯一逻辑标识符,IPv4地址由32位二进制组成,采用点分十进制表示(如192.168.1.1)。其结构分为两部分:
- 网络地址:标识设备所属的物理网络,需全球统一分配。
- 主机地址:区分同一网络内的不同设备,可由本地分配。
IPv4地址分为五类:
- A类(1.0.0.0~126.255.255.255):网络占8位,适用于大型网络。
- B类(128.0.0.0~191.255.255.255):网络占16位,适合中等规模网络。
- C类(192.0.0.0~223.255.255.255):网络占24位,用于小型网络。
子网掩码用于区分网络与主机部分,如255.255.255.0表示前24位为网络地址。
9.1.2 物理地址与逻辑地址
- 物理地址(MAC地址) :固化在网卡硬件中的48位唯一标识符,用于局域网内设备通信。
- 逻辑地址(IP地址) :由网络管理员或DHCP分配的32位地址,用于跨网络通信。
关键区别:
特性 | 物理地址 | 逻辑地址 |
---|---|---|
生成方式 | 硬件固化 | 动态或静态分配 |
作用范围 | 局域网内有效 | 全局有效 |
寻址方式 | 数据链路层(二层) | 网络层(三层) |
9.1.3 端口及服务
端口是16位数字(0~65535),用于标识应用程序的通信端点。常见端口映射:
- 80/TCP:HTTP服务
- 22/TCP:SSH服务
- 3389/TCP:远程桌面服务
端口映射示例:将内网192.168.1.100的80端口映射到公网IP的8080端口,外部用户通过公网IP:8080
访问内网网站。
9.1.4 网卡命名方案
Linux网卡命名规则演变:
- 传统命名:
eth0
、eth1
(易因插拔顺序变化导致混乱)。 - 可预测命名:
ensX
:基于PCI-E插槽索引(如ens33)。enpXsY
:基于物理位置(如enp2s0)。enxMAC
:基于MAC地址(如enx001122334455)。
恢复传统命名:修改/etc/default/grub
,添加net.ifnames=0 biosdevname=0
后更新GRUB配置。
9.2 网络配置
9.2.1 与网络有关的配置文件
文件路径 | 作用 |
---|---|
/etc/network/interfaces | 静态IP、子网掩码、网关配置 |
/etc/sysconfig/network-scripts/ifcfg-eth0 | 动态IP(DHCP)和DNS配置 |
/etc/resolv.conf | 指定DNS服务器地址 |
/etc/hosts | 本地主机名与IP映射 |
9.2.2 网络服务及管理
常用服务管理命令(systemctl):
# 启动SSH服务
sudo systemctl start sshd
# 设置Apache开机自启
sudo systemctl enable httpd
# 查看服务状态
sudo systemctl status vsftpd
9.2.3 IP 地址配置
静态IP配置(以Ubuntu为例):
-
编辑
/etc/network/interfaces
:auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1
-
重启网络服务:
sudo systemctl restart networking
动态IP配置(DHCP):
iface eth0 inet dhcp
特性 | 静态IP | 动态IP |
---|---|---|
稳定性 | 高 | 低(可能变化) |
适用场景 | 服务器、数据库 | 客户端设备 |
配置复杂度 | 手动配置复杂 | 自动分配简单 |
9.3 网络管理命令
9.3.1 检查网络状态 (netstat)
常用参数组合:
- 查看所有TCP连接:
netstat -at
- 显示进程PID:
netstat -ap | grep ssh
- 统计各协议数据包:
netstat -s
示例输出解析:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program
tcp 0 0 192.168.1.2:22 10.0.0.5:54321 ESTABLISHED 1234/sshd
9.3.2 地址解析协议缓存管理 (arp)
- 查看ARP表:
arp -n
- 删除条目:
arp -d 192.168.1.5
- 手动添加:
arp -s 192.168.1.10 00:11:22:33:44:55
9.3.3 IP 网络综合管理 (ip)
iproute2工具链命令:
- 查看IP地址:
ip addr show
- 添加路由:
ip route add 10.0.0.0/24 via 192.168.1.1
- 监控链路状态:
ip -s link
9.3.4 网络接口的启用与停用 (ifup/ifdown)
- 启用eth0:
sudo ifup eth0
- 禁用eth1:
sudo ifdown eth1
与ifconfig
的区别:
ifup/ifdown
依赖配置文件,适合持久化配置。ifconfig eth0 up
直接操作接口,临时生效。
9.3.5 路由表维护 (route)
- 添加默认网关:
route add default gw 192.168.1.1
- 删除特定路由:
route del -net 10.0.0.0/24
- 查看路由表:
route -n
或ip route show
9.3.6 主机及 IP 地址查询
工具 | 特点 | 示例 |
---|---|---|
nslookup | 交互式查询,支持多记录类型 | nslookup example.com |
dig | 详细输出,支持DNS跟踪 | dig +trace example.com |
host | 简洁输出,适合脚本调用 | host 192.168.1.1 |
9.4 网络应用常用命令
9.4.1 远程登录 (telnet 与 ssh)
特性 | Telnet | SSH |
---|---|---|
加密 | 明文传输 | AES/RSA加密 |
端口 | 23 | 22 |
适用场景 | 内网调试(已淘汰) | 生产环境远程管理 |
SSH密钥登录配置:
ssh-keygen -t rsa
ssh-copy-id user@remote_host
9.4.2 文件传输 (ftp 与 tftp)
协议 | 传输层 | 特性 |
---|---|---|
FTP | TCP | 支持大文件,需控制连接 |
TFTP | UDP | 无认证,适合固件传输 |
FTP被动模式配置:
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=51000
9.4.3 邮件收发 (mailx/mail)
配置/etc/mail.rc
:
set from="user@example.com"
set smtp="smtp.example.com"
set smtp-auth-user="user"
set smtp-auth-password="password"
发送邮件示例:
echo "邮件内容" | mailx -s "主题" recipient@example.com
9.4.4 文件下载 (wget)
多线程下载工具mwget
:
mwget -n 10 http://example.com/largefile.iso
参数说明:
-n
:线程数-c
:断点续传-d
:指定下载目录
9.5 练习题
9.5.1 思考题
(1)什么是子网掩码?其作用是什么?
(2)何为IP地址?如何查询本机的IP地址?如何查询一个互联网上主机的IP地址?
(3)何为网络服务?举例说明你所知道的Linux系统下的网络服务。
(4)在一个小的网络内,如何实现主机名到IP地址的转换?
9.5.2 选择题
(1)202.196.100.1是何类地址( )?
A.A类 B.B类 C.C类 D.D类
(2)当IP地址的主机地址全为1时,表示( )。
A.专用IP地址 B.对于该网络的广播地址 C.本网络地址 D.回送地址
(3)telnet和ssh使用的端口分别是( )和( )。
A.20 B.21 C.22 D.23
(4)FTP工作中所使用的两个端口是( )和( )。
A.20 B.21 C.22 D.23
(5)查询本机IP地址的命令是( )和( )。
A.hostname -I B.ifconfig C. ip link D.localhost
(6)可用于查询网络主机IP地址的命令是( )和( )。
A.nslookup B.ifconfig C. dig D.netstat
9.5.3 综合题
(1)与TCP/IP相关的文件有哪些?各自的用途是什么?
(2)试述如何进行TCP/IP网络配置。
9.5.4 答案
1.思考题
(1)什么是子网掩码?其作用是什么?
解:
子网掩码可以用来区分一个IP地址的网络号和主机号各占多少位。
通过用IP地址与相应的子网掩码进行“与”运算,可以区分出网络号和主机号包含的位数。
(2)何为IP地址?如何查询本机的IP地址?如何查询一个因特网上主机的IP地址?
解:
为了使众多连入Internet的主机在通信时能够相互识别,Internet给每一台主机都分配了一个唯一的地址,称为IP地址。IP地址有IPv4和IPv6之分。
查询本机的IP地址可以使用命令hostname -I、ifconfig、ip addr、nmcli d show等。
查询一个因特网上主机的IP地址可以使用nslookup HOST或host HOST或dig HOST.
(3)何为网络服务?举例说明你知道的Linux系统下的网络服务。
解:
网络服务是指运行在计算机系统中、通过网络提供特定功能的后台程序。在Linux系统中常见的网络服务包括:
- SSH(安全远程登录)
- Apache/Nginx(Web服务器)
- vsftpd(FTP文件传输)
- DHCPd(动态IP分配)
- Samba(跨平台文件共享)
- Postfix(邮件传输代理)
- Bind(DNS域名解析)
- MySQL/MariaDB(数据库服务)
- NTPd(网络时间同步)
(4)在一个小的网络内,如何实现主机名到IP地址的转换?
解:
从主机名到IP地址的转换一般是由DNS服务器实现的,但小型网络可使用hosts表,也就是/etc/hosts。
设网内有Windows7、centos8、rhel8、fedora30、fedora31、ubuntu18和ubuntu19,所对应的静态IP地址分别为192.168.137.1、192.168.137.8、192.168.137.88、192.168.137.30、192.168.137.31、192.168.137.18和192.168.137.19。再给它们每个取些别名,形成一个文本文件如下:
192.168.137.1 win7.windows.gjshao win7 w7
192.168.137.2 gw.windows.gjshao gw
192.168.137.30 fedora30.gjshao www.fedora30.gjshao php.fedora30.gjshao fedora30 f30
192.168.137.31 fedora31.gjshao www.fedora31.gjshao php.fedora31.gjshao fedora31 f31
192.168.137.8 centos8.gjshao www.centos8.gjshao php.centos8.gjshao centos8 c8 c08
192.168.137.88 rhel8.gjshao www.rhel8.gjshao php.rhel8.gjshao rhel8 r8 r08
192.168.137.18 ubuntu18.gjshao www.ubuntu18.gjshao php.ubuntu18.gjshao ubuntu18 u18
192.168.137.19 ubuntu19.gjshao www.ubuntu19.gjshao php.ubuntu19.gjshao ubuntu19 u19
可将此文件所示信息追加到各系统的/etc/hosts中,用于地址解析。
说明:/etc/hosts包含的应该可直通的主机。
2.选择题
(1)C;(2)B;(3)D、C;(4)A、B,(5)A、B;(6)A、C
3.综合题
(1)与TCP/IP相关的文件有哪些?各自的用途是什么?
解:
通用的TCP/IP文件有:
/etc/hosts、/etc/services、/etc/resolv.conf、/etc/host.conf、/etc/networks和/etc/hostname等。
(2)试述如何进行TCP/IP网络配置。
解:
配置TCP/IP网络信息,有很多方法,可以使用图形界面,也可使用字符界面,早期还可直接修改配置文件。
图形界面主要是,从“设置中心”选择“Netwok”,或在CLI下执行nm-connection-editor进入设置界面。通过图形界面设置信息是永久的,且立即生效;早期直接修改配置文件的办法设置的信息也是永久的,但需要重启网络或系统才能生效。
字符界面下设置网络的命令有nmtui、nmcli、ifconfig和ip等。
为了方便起见,建议使用设置中心中的网络设置界面设置网络。当在脚本中设置网络时需要使用命令界面。
总结
通过掌握上述内容,读者可全面理解Linux网络配置与管理,并熟练运用常见命令解决实际问题。