深入理解TCP/IP网络模型及Linux网络管理

1. TCP/IP网络模型简介

TCP/IP(传输控制协议/互联网协议)是互联网的基础通信协议集。它分为四层,从上到下依次为:

  • 应用层:处理高层协议,如HTTP、FTP等。
  • 传输层:负责端到端的通信,主要协议有TCP和UDP。
  • 网络层:负责路由选择和数据包转发,主要协议是IP。
  • 链路层:处理物理连接和数据帧的传输。

示例:

复制代码
应用层 -> HTTP, FTP, SMTP
传输层 -> TCP, UDP
网络层 -> IP, ICMP
链路层 -> Ethernet, Wi-Fi

2. IPv4地址结构及划分

IPv4地址结构:

IPv4地址是一个32位的二进制数,通常表示为四个十进制数字,每个数字之间用点号分隔(例如:192.168.1.1)。

如何划分网络位和主机位:

  • 子网掩码:用于区分网络部分和主机部分。例如,掩码为24位(255.255.255.0),意味着前24位是网络位,后8位是主机位。

在掩码为24 (255.255.255.0) 的子网中,最多能有多少台主机?为什么?

  • 主机位为8位,所以最大主机数为 28−2=25428−2=254 台。减去2是因为全0和全1的地址不能分配给主机(分别是网络地址和广播地址)。

示例:

复制代码
网络地址: 192.168.1.0/24
第一个可用主机地址: 192.168.1.1
最后一个可用主机地址: 192.168.1.254
广播地址: 192.168.1.255

3. 理解IPv4路由

IPv4路由:

路由器根据目标IP地址和路由表决定数据包的下一跳。路由表包含目标网络、子网掩码、下一跳地址等信息。当一个数据包到达路由器时,路由器会查找路由表来确定如何转发该数据包。

示例:

bash 复制代码
# 查看当前系统的路由表
ip route show

# 添加一条静态路由
sudo ip route add 192.168.2.0/24 via 192.168.1.1

4. IPv6地址结构及子网划分

IPv6地址结构:

IPv6地址是一个128位的二进制数,通常表示为8组四位十六进制数,每组之间用冒号分隔(例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334)。

子网划分:

IPv6使用/64作为默认子网大小,这意味着前64位是网络部分,后64位是主机部分。这允许每个子网中有大量的主机(264264个)。

示例:

复制代码
网络地址: 2001:0db8:85a3::/64
第一个可用主机地址: 2001:0db8:85a3::1
最后一个可用主机地址: 2001:0db8:85a3::ffff:ffff:ffff:ffff

5. 多播和广播的区别
  • 多播:将数据发送给一组特定的接收者,这些接收者必须加入特定的多播组才能接收到数据。
  • 广播:将数据发送给同一网络上的所有设备。IPv4支持广播,而IPv6则不支持广播,但可以通过多播实现类似功能。

示例:

复制代码
IPv4 广播地址: 192.168.1.255 (对于 /24 子网)
IPv6 多播地址: ff02::1 (本地链路上的所有节点)

6. Linux中解析主机名和IP地址对应关系

命令示例:

bash 复制代码
# 使用 /etc/hosts 文件进行本地解析
cat /etc/hosts

# 使用DNS服务器解析
nslookup example.com

# 使用 getent 命令查询本地主机名解析服务
getent hosts example.com

示例文件内容:

复制代码
/etc/hosts:
127.0.0.1   localhost
192.168.1.10 myserver.example.com myserver

7. ss 命令与 netstat 命令的区别
  • ss:更现代且性能更高,能够快速显示套接字状态。
  • netstat:较旧的工具,虽然功能强大,但在大型系统上可能较慢。

示例:

bash 复制代码
# 使用 ss 查看所有监听端口
ss -tuln

# 使用 netstat 查看所有监听端口
netstat -tuln

输出示例:

复制代码
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      128    *:ssh                           *:*                  

8. nmcli dev disnmcli con down 的区别
  • nmcli dev dis:禁用指定网络接口(设备),使其无法使用。
  • nmcli con down:断开指定连接配置,但设备仍然存在。

示例:

bash 复制代码
# 禁用 eth0 设备
nmcli dev dis eth0

# 断开 eth0 连接配置
nmcli con down "eth0"

9. NetworkManager 配置文件存储目录

NetworkManager 根据配置集用途,使用以下目录存储配置文件:

  • /etc/NetworkManager/system-connections/:用于存储永久性连接配置。
  • /var/lib/NetworkManager/:用于存储运行时状态和临时配置。

示例:

bash 复制代码
# 查看所有网络连接配置
ls /etc/NetworkManager/system-connections/

10. 修改静态主机名及存储位置

命令示例:

bash 复制代码
# 修改静态主机名
sudo hostnamectl set-hostname new-hostname

# 静态主机名存储在 /etc/hostname 文件中
cat /etc/hostname

示例文件内容:

复制代码
/etc/hostname:
new-hostname

11. /etc/resolv.conf 文件中的条目解释

/etc/resolv.conf 文件包含DNS服务器的信息,格式如下:

复制代码
nameserver 8.8.8.8  # Google 公共 DNS 服务器
search example.com  # 搜索域
options timeout:2   # 超时时间设置

示例文件内容:

复制代码
/etc/resolv.conf:
nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com
options timeout:2

12. 测试DNS名称解析的命令区别
  • host:简单的DNS查询工具,返回A记录或PTR记录。
  • dig:功能强大的DNS查询工具,提供详细的查询结果。
  • getent hosts :查询本地主机名解析服务(包括 /etc/hosts 和 DNS)。
相关推荐
中议视控42 分钟前
会议室和展厅分布式网络中控系统主机的选购思路
网络·分布式
sdm0704273 小时前
yum和开发工具vim/gcc
linux·服务器·centos
LCMICRO-133108477463 小时前
长芯微LD9689完全P2P替代AD9689,是一款双通道、14位、2.0 GSPS/2.6 GSPS模数转换器(ADC)
网络·单片机·嵌入式硬件·网络协议·fpga开发·硬件工程·高速adc
如意.7598 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
Thera7779 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ10 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
05大叔11 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密11 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
我想走路带风11 小时前
c++工具转向网络底层工具
网络
dashizhi201511 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑