从OSI到TCP/IP:Linux网络架构深度解析
一、网络概述
1.网络本质
所谓网络 ,就是通过物理介质(网线、光纤、WiFi)连接设备,实现设备间的通信和数据交换。
2.核心要素
- 节点:计算机、服务器、路由器、交换机等设备
- 链路:连接节点的物理通道
- 协议:控制通信的规则集(TCP/IP, HTTP等)
3.网络类型
- LAN(局域网):办公室、家庭网络
- WAN(广域网):跨地域网络(互联网)
- MAN(城域网):城市范围网络
二、网络层次模型(OSI 7层模型)
1.概述
OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。
OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
2.七层模型详解
关键记忆法:物数网传会表应
层次 | 名称 | 核心功能 | 典型协议/设备 | 数据传输单位 |
1 | 物理层 | 比特流传输、物理接口定义、电气特性 | RJ45, IEEE 802.11, 集线器 | 比特(Bit) |
2 | 数据链路层 | 物理寻址(MAC)、帧同步、差错控制、流量控制 | Ethernet, PPP, 交换机 | 帧(Frame) |
3 | 网络层 | 逻辑寻址、路由选择、分组转发 | IP, ICMP, OSPF, 路由器 | 包(Packet) |
4 | 传输层 | 端到端连接管理、流量控制、错误恢复 | TCP, UDP, SCTP | 段(Segment) |
5 | 会话层 | 建立、管理和终止应用程序间的会话 | NetBIOS, RPC, SIP | 数据(Data) |
6 | 表示层 | 数据格式转换、加密解密、压缩解压 | SSL, TLS, JPEG, MPEG | 数据(Data) |
7 | 应用层 | 提供用户接口和网络服务 | HTTP, FTP, SMTP, DNS | 数据(Data) |
三、TCP/IP模型(4层架构详解)
TCP/IP层级 | 对应OSI层 | 核心协议 | 主要功能 |
---|---|---|---|
应用层 | 5-7层 | HTTP, FTP, DNS, SMTP | 应用程序通信接口 |
传输层 | 4层 | TCP, UDP | 端到端连接管理 |
网络层 | 3层 | IP, ICMP, ARP | 寻址和路由 |
网络接口层 | 1-2层 | Ethernet, WiFi, PPP | 物理传输和链路控制 |
四、DNS访问流程
1.流程图
2.解析流程
第一步: 浏览器访问www.baidu.com
第二步: 查找本地Hosts文件 如果有对应关系则返回IP
第三步: 如果Hosts文件没有则会请求本地的DNS(LDNS)中是否有域名的对应关系 有返回IP
第四步: 如果没有则LDNS请求根服务器问 www.baidu.com的IP地址 根存储的是顶级域名的IP地址,所以根会将.com返回给LDNS
第五步: LDNS收到后重新请求.com服务器问www.baidu.com的IP地址 顶级域存储的是权威域名IP地址,所以会返回权威域名服务器的对应IP给LDNS
第六步: LDNS收到后重新请求权威域名服务器,权威域名服务器就是我们自己配置的A记录的服务器 直接将A记录返回给LDNS
第七步: LDNS收到后自己缓存一份 然后在返回给浏览器
最后: 浏览器和服务器的IP地址 建立三次握手
五、TCP三次握手
1.流程图
2.具体流程
01 SYN (Synchronize):
A向B发送SYN=1(告诉B我想和你建立连接) 发送seq=x(表示第一个数据包)
标志位SYN=1,ACK=0
02 SYN-ACK:
B收到信息 B向A发送 ACK=1(确认收到) SYN=1(我也想和你建立连接) seq=y(我给你的第一个包),Ack=x+1(表示下次你应该给我发送第二个数据包)
标志位SYN=1,ACK=1
03 ACK:
A收到信息 A向B发送 ACK=1(确认收到) seq=x+1(给B的第二个数据包)下次你应该给我发第二个数据包 Ack=y+1
标志位SYN=0,ACK=1
注意:
SYN:建立连接
ACK:确认有效
FIN:关闭连接
RST:强制断开
六、TCP四次挥手
第一步: A向B发送FIN请求断开 本国向苍姐姐我想跟你分手
第二步: B向A发送ACK确认收到信息 苍姐姐说收到信息了 你等我收拾下衣服
第三步: B向A发送FIN请求断开 苍姐姐说收拾完了 可以分手了
第四步: A向B发送ACK确认断开 本国说分手吧
七、网络命令大全
1.诊断与监控命令
命令 | 功能描述 | 高级用法示例 |
---|---|---|
ping | 测试网络连通性和延迟 | ping -i 0.1 -s 1400 -c 100 example.com |
traceroute | 路径追踪 | traceroute -T -p 443 google.com |
mtr | 实时路径诊断 | mtr --report -c 10 cloudflare.com |
iftop | 实时带宽监控 | iftop -nNP -i eth0 |
nload | 网络流量可视化 | nload -m -u M eth0 |
2.端口与连接分析
命令 | 功能描述 | 高级用法示例 |
---|---|---|
nc | 网络瑞士军刀 | nc -zv 192.168.1.1 20-80 |
nmap | 端口扫描与服务探测 | nmap -sV -O -T4 192.168.1.0/24 |
telnet | 远程登录与服务测试 | telnet smtp.example.com 25 |
netstat | 网络连接统计 | netstat -tunap | grep ESTABLISHED |
ss | 现代套接字统计 | ss -t -o state established '( dport = :443 )' |
3.配置与排错
命令 | 功能描述 | 高级用法示例 |
---|---|---|
ip | 全能网络配置 | ip addr add 192.168.1.100/24 dev eth0 |
ifconfig | 接口配置(逐步淘汰) | ifconfig eth0 mtu 9000 |
route | 路由表管理 | route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.1 |
dig | DNS诊断 | dig +trace +nocmd example.com |
tcpdump | 网络抓包 | tcpdump -i any -nn 'port 80 and host 192.168.1.100' |