物理层 – 数据链路层 – 网络层 —- 传输层 – 会话层 – 表示层 – 应用层
– MAC,ARP – IP – TCP/UDP,PORT –
LAN: 区域网络(Local Area Network)
WAN: 广域网络(Wide Area Network)
物理层
数据: bit(bit = 头部封装MAC地址 + 帧)
设备: 中继器、集线器
数据链路层(MAC)
数据: 帧(帧 = 头部封装IP地址 + 包)
设备: 二层交换机
行为:差错检测、差错纠正
交换机(层二): 通过MAC地址
对不同设备进行数据传输。
MTU: 最大传输单位(Maximum Transmission Unit), 默认值为1500bytes
。以太网数据包的最大大小, 超出会被丢弃。
ARP: 地址解析协议(Address Resolution Protocol), 是用来将IP地址解析为MAC地址的协议。主机或三层网络设备上会维护一张ARP表, 用于存储IP地址和MAC地址的映射关系, 一般ARP表项包括动态ARP表项和静态ARP表项。
网络层(IP)
数据:包(帧 = 头部封装IP地址 + 包)
设备:路由器
行为:寻址、路由选择
IP: 网际互联协议(Internet Protocol), 。它将多个网络连接成为一个互联网, 这样能够提高网络的可扩展性, 实现大规模网络互联。二是分割顶层网络和底层网络之间的耦合关系。
IP地址: 由两部分组成: 网络标识部分(NET_ID)和主机标识部分(Host_ID),网络部分取决于子网掩码。NET_ID用来确定网段, Host_ID用来确定主机。
例如
192.168.1.10/24
, Net_ID=19.168.1
Host_ID=10
同一网络的特点:
Net_ID.0
(网段地址NetworkIP)与Net_ID.255
(广播地址)两个地址作为保留地址, 不可作为主机IP(例如192.168.1.0/24, 不可将192.168.1.0与192.168.1.255设置为主机IP)。- 可通过广播地址向同一网络所有主机传递数据, DHCP(新主机接入网络, 发现dhcp请求到广播地址, dhcp-server接收并相应可以IP给该主机)\ARP(主机发送arp请求到广播地址, 来获取某IP对应的MAC)等
- 不同网络则广播地址不同, 则需要三层路由设备进行连接。
IP地址分类方法
传统分类方法: A类、B类、C类
IP地址分类方法: 将整个IP网段分为五种等级。
- A类地址(Net_ID首位=0, 0.x.x.x~127.x.x.x);
- B类地址(NET_ID开头=10, 128.x.x.x~191.x.x.x);
- C类地址(NET_ID开头=110, 192.x.x.x~223.x.x.x);
- D类地址(NET_ID开头=1110, 224.x.x.x~239.x.x.x), 群播的特殊功能, 不常用
- E类地址(NET_ID开头=1111, 240.x.x.x~255.x.x.x), 保留未使用
私有IP: 取A类、B类、C类网络中一段作为私有IP地址
内网进行网络规划时, 严格设置私有IP,否则一旦内网需要连接公网, 会与公网IP冲突。
- A类中的: 10.x.x.x
- B类中的: 172.[16-31].x.x
- C类中的: 192.168.x.x
回环地址网段: 用于主机本地测试, 无网卡也可本机收发包测试服务。
A类中的: 127.0.0.0/8 网络
无类别域间路由: CIDR
CIDR(Classless Inter-Domain Routing, 无类别 域间 路由): 使用IP地址和/子网掩码
来表示一个网络地址。
CIDR的子网掩码的位数可以是任意的, 从而支持更灵活的IP地址分配和更有效的路由聚合。CIDR不再受限于传统的A类、B类、C类地址分类, 是对IP地址分类方法的进化。
网关: Gateway
网关: 即为默认路由, 负责不同网段之间的IP Forwarding
的, 如同值为0.0.0.0
意味着直接从网口出, 而不通过路由器(主机与目标网络在同一子网)
传输层(TCP/UDP,端口)
数据:
TCP: 三次握手(1.请求端发送SYN=1,状态变为; 2.回复ACK=1,SYN=1,状态更新为; 3. 回复ACK=1)
UDP
DNS同时提供UDP/TCP协议, 优先使用UDP, 当UDP无法正确获得数据时, 更换为TCP传输。
防火墙
定义: 能够分析、过滤网络数据包的文件。根据实现不同又分为软件防护墙、硬件防火墙。
软件防火墙有Netfilter
(封包过滤式防火墙机制)、TCP Wrappers
(根据程序分析管控)、Proxy(代理服务器)。
封包过滤: 直接分析封包表头数据, 以决定该连线为放行或抵挡的机制。(二层、三层、四层)
程序管控: 透过服务器程序的插件(tcpd), 分析谁对某程序进行访问, 然后通过规则去分析该程序允许谁访问。
Proxy: 正向代理, 面向公网的请求都由proxy发出, 保护了由Proxy代理的主机。
二层防火墙: 针对源MAC、目的MAC
三层防火墙: 针对源IP、目的IP等(网络层协议)
四层防火墙: 针对TCP/UDP端口, 以及TCP状态
作用:
- 拒绝数据包进入主机的哪些Port
- 拒绝
iptables
路由器
路由器会有两个网络接口, 通过路由器本身的IP Forward
功能让两个网域可以互相沟通网络封包。
路由器: IP转发
何时需要路由器
- 主机超过百台, 需要划分lan, 避免广播域过大带来的广播风暴;
- 为专有部门划分lan, 放置数据广播时被同一广播域的节点抓包泄露;
NAT(网络地址转换)
当路由器两端的网段分别为Public_IP、Private_IP时, 需要NAT(NetworkAddressTranslation)功能。
网络地址转换(NAT) = IP转换
+ IP转发
(路由器)。
IP转换
: 修改数据包的IP包头数据的源IP、目的IP, 将私有IP改为共有IP, 实现联系外网。
IP转发
: 等同于路由器, 根据路由规则进行转发。
SNAT(Source NAT)
SNAT用于改变数据包的源IP地址
。通常用于将多个私有IP地址
转换为单一的公共IP地址
, 以便它们可以访问外部网络。
例如, 一个企业可能有一个公共IP地址用于所有出站连接, 而内部使用的是私有IP地址。
在Kubernetes集群中, SNAT可能用于将从Pod发出的出站流量的源地址转换为节点的IP地址, 以便Pod可以访问外部服务。
DNAT(Destination NAT):
DNAT用于改变数据包的目标IP地址
。通常用于将流量重定向到不同的服务器或端口, 而不需要客户端知道后端服务器的实际IP地址。
例如, 一个负载均衡器可能使用DNAT将流量从一个公共IP地址重定向到后端服务的私有IP地址。
在Kubernetes中, DNAT用来实现服务网络访问服务VIP(虚拟IP)的流量(通常是通过服务访问)重定向到不同的Pod后端。
ARP Proxy
当路由器两端的网段是同一个网段时, 让某个网络接口的MAC代理其他主机IP的对应, 即让想要连接到这个IP的MAC封包由自己处理, 此接口会称为所代理IP的arp代理
代理ARP
(Proxy ARP): 是 ARP 协议的一个变种, 当 ARP 请求目标跨网段时, 网关设备收到此 ARP 请求, 会用自己的 MAC 地址返回给请求者。
DHCP服务器
客户端由广播地址, 向整个网段内广播DHCP请求, 有网段内的DHCP服务器响应IP参数。
- Client广播搜索DHCP服务器(UDP,目标IP=255.255.255.255)
- Server响应参数(根据Client-MAC在服务器登录文件中查找是否存在对应IP且无人使用)
- Client发送DHCP参数选择(广播)
- DHCP响应确认
DHCP (Dynamic Host Configuration Protocol) 可以提供网络参数给客户端电脑, 使其自动配置网络的功能;
透过 DHCP 的统一管理, 在同一域当中就比较不容易出现 IP 冲突的情况发生;
DHCP 可以通过 MAC 的比对来提供 Static IP (或称为固定 IP), 否则通常提供客户端 dynamic IP (或称为动态 IP);
DHCP 除了 Static IP 与 Dynamic IP 之外, 还可以提供租约行为之设定;
在租约期限到期之前, 客户端dhcp软件即会主动的要求更新(约0.5,0.85倍租约时间左右);
DHCP 可以提供的 MAC 比对、Dynamic IP 的 IP 范围以及租约期限等等, 都在 dhcpd.conf 这个档案当中设定的;
一般的情况之下, 用户需要自行设定 dhcpd.leases 这个档案, 不过, 真正的租约档案记录是在 /var/lib/dhclient/dhclient-eth0.leases 里面;
如果只是要单纯的 DHCP 服务, 建议可以购买类似 IP 分享器的设备即可提供稳定且低耗电的网络服务。
DHCP 服务与 DNS 服务的相关性很高;
若 DHCP 客户端获取 IP 的速度太慢, 或许可以找一下有网管 switch 的 STP 设置。
NTP服务器
Linux 的 NAT 功能主要通过封包过滤的方式, 并使用 iptables 的 nat 表格进行 IP 伪装 (SNAT) , 让客户端自行前往互联网上的任何地方的一种方式。
Linux 可以通过网络校时, 最常见的网络校时为使用 NTP 服务器, 这个服务启动在 udp port 123;
时区档案主要放置于 /usr/share/zoneinfo/ 目录下, 而本地时区则参考 /etc/localtime;
NTP 服务器为一种阶层式的服务, 所以 NTP 服务器本来就会与上层时间服务器作时间的同步化, 因此 nptd 与 ntpdate 两个指令不可同时使用;
NTP 服务器的连接状态可以使用 ntpstat 及 ntpq -p 来查询;
NTP 提供的客户端软件为 ntpdate 这个指令;
在 Linux 下想要手动处理时间时, 需以 date 设定时间后, 以 hwclock -w 来写入 BIOS 所记录的时间。
NTP 服务器之间的时间误差不可超过 1000 秒, 否则 NTP 服务会自动关闭。
共享文件服务器
NFS: Unix Like 依赖RPC-server
CIFS: Windows
SAMBA: windows+Linux 依赖NetBIOS(Network Basic Input/Output System)