关于计算机网络知识的学习,不仅仅是 Linux 下的网络管理。
ISO/OSI 模型
网络是做什么的?传输数据。怎么传输?例如 ISO/OSI 模型。
- OSI : Open System Interconnetion
| ISO/OSI | 作用 |
|---|---|
| 应用层 | 用户接口 |
| 表示层 | 数据的表现形式、特定功能如加密 |
| 会话层 | 确定网络数据是否要经过远程会话 |
| 传输层 | 确定传输协议(TCP或UDP)及端口号、传输前的错误检测、流控 |
| 网络层 | IP 地址(包括源和目标的 IP 地址)、选路 |
| 数据链路层 | 组帧、MAC 地址、错误检测与修正 |
| 物理层 | 设备之间的比特流的传输、物理接口、电气特性等 |
说明
- 表示层:数据的编码、加密、压缩等
- 流控:例如根据网络的快慢决定什么时候传输。
- 选路:数据是通过各个路由器传递的,选路就是确定数据经由哪些路由器节点。
- 物理接口:例如网线的一端接口是什么样的。
- 电气特性:例如8根线网线只有1、3、2、6用于网络物理层传输。
TCP/IP 模型
TCP : Transmission Control Protocol
IP : Internet Protocol
TCP/IP 参考了 ISO/OSI ,其对应关系如下:
| TCP/IT | ISO/OSI |
|---|---|
| 应用层 | 应用层、表示层、会话层 |
| 传输层 | 传输层 |
| 网际互连层 | 网络层 |
| 网络接口层 | 数据链路层、物理层 |
网络接入层
负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而是由参与互联的各网络使用自己的物理层和数据链路层协议,然后与 TCP/IP 的网络接入层进行连接。地址解析协议(ARP) 工作在此层,即 ISO/OSI 的数据链路层。
- ARP : Address Resolution Protocol
ARP 把 IP 翻译成长度为 48 位,用 12 个十六进制表示的网卡物理地址,同网段或者说局域网传输数据用的不是 IP 地址,而是网卡的物理地址。IP 地址用于跨网段或者说公网、互联网传输数据。
交换机只识别网卡物理地址,不能识别 IP 地址。
在 windows CMD 下执行 arp -a,列出跟当前计算机所有有联系的 IP的 MAC 地址:
C:\Users\will>arp -a
接口: 192.168.1.2 --- 0xd #本机
Internet 地址 物理地址 类型
192.168.1.1 a0-91-c8-a3-4b-18 动态 #路由器
192.168.1.4 c8-f6-50-09-12-d7 动态 #iPad
192.168.1.255 ff-ff-ff-ff-ff-ff 静态
224.0.0.2 01-00-5e-00-00-02 静态
224.0.0.22 01-00-5e-00-00-16 静态
224.0.0.251 01-00-5e-00-00-fb 静态
224.0.0.252 01-00-5e-00-00-fc 静态
239.255.255.250 01-00-5e-7f-ff-fa 静态
255.255.255.255 ff-ff-ff-ff-ff-ff 静态通过 ping 只要可以 ping 通就可以查看局域网某台机器的 MAC 地址。
C:\Users\will>ping 192.168.1.6
正在 Ping 192.168.1.6 具有 32 字节的数据:
来自 192.168.1.6 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.6 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.6 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.6 的回复: 字节=32 时间<1ms TTL=64
192.168.1.6 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
C:\Users\will>arp -a
接口: 192.168.1.2 --- 0xd
Internet 地址 物理地址 类型
192.168.1.1 a0-91-c8-a3-4b-18 动态
192.168.1.4 c8-f6-50-09-12-d7 动态
192.168.1.6 00-16-d4-e9-4d-56 动态
192.168.1.255 ff-ff-ff-ff-ff-ff 静态
224.0.0.2 01-00-5e-00-00-02 静态
224.0.0.22 01-00-5e-00-00-16 静态
224.0.0.251 01-00-5e-00-00-fb 静态
224.0.0.252 01-00-5e-00-00-fc 静态
239.255.255.250 01-00-5e-7f-ff-fa 静态
255.255.255.255 ff-ff-ff-ff-ff-ff 静态网际互联层
主要解决主机到主机的通信问题。它所包含的协议解决数据包在整个网络上的逻辑传输。该层有三个主要协议:IP、IGMP、ICMP。
IGMP : Internet Group Management Protocol
ICMP : Internet Control Messages Protocol
ping 使用的就是 ICMP 。
传输层
为应用层实体提供端到端的的通信功能,保证数据包的顺序传送及数据的完整性。两个主要协议:TCP、UDP。
- UDP : User Datagram Protocol
三次握手源自有名的 两军问题
参考:http://blog.csdn.net/stone8761/article/details/51680790
虽然模型名称是 TCP/IP ,但传输层可以有 UDP ??? 是这样么???
应用层
为用户提供所需要的各种服务,例如:FTP、Telnet、DNS、SMTP 等。
- FTP : File Transfer Protocol
- Telnet : 远程登录
- DNS : Domain Name Server
- SMTP : Simple Message Transfer Protocol
FTP 接收端口号:21
数据封装过程

IP
DNS
网关
交换机属于数据链路层设备
Linux 网络配置
[will@syst ~]$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:D4:E9:4D:56
inet addr:192.168.1.6 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::216:d4ff:fee9:4d56/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1076 errors:0 dropped:0 overruns:0 frame:0
TX packets:231 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:124591 (121.6 KiB) TX bytes:21331 (20.8 KiB)
Interrupt:16
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)对于 eth0:
- Link encap - 网络类型:Ethernet
- HWaddr - 网卡的物理地址 MAC : 00:16:D4:E9:4D:56
- inet addr - 当前 ip 地址
- Bcast - 广播地址
- Mask - 子网掩码
- inet6 addr - ip v6 地址
- MTU - 最大传输单元
- RX packets - 当前接收到的数据包
- TX packets - 当前发送的数据包
- RX bytes
- TX bytes
- Interrupt -
网卡 lo 是本地环回网卡,用于测试当前系统网络协议是否正常,可以 ping 通。
ifconfig
This program is obsolete! For replacement check ip addr and ip link. For statistics use ip -s link.
配置的 IP 是临时生效的
网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 网卡设备名,要与配置文件名称一致
BOOTPROTO=
[will@syst ~]$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:16:D4:E9:4D:56
TYPE=Ethernet
UUID=20343218-b4de-459b-b1ff-a7ee3b78f11a
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.6
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=202.106.46.151
DNS2=202.106.195.68
USERCTL=no
IPV6INIT=no主机名文件
/etc/sysconfig/network
[will@syst ~]$ hostname
syst
[will@syst ~]$ sudo vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=systDNS 配置文件
/etc/resolv.conf
对于 ubuntu ,有些差异,它建议设置在 /etc/resolvconf.d/ 下
修改 UUID
对于虚拟机复制来的 Linux ,网卡配置文件中的 UUID 是相同的,需要修改:
- 删除网卡配置文件中的 HWADDR 这一行,也就是 MAC 地址
- sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules,删除网卡和 MAC 地址绑定文件
- 重启系统