Table of Contents
网络模型
OSI 七层模型
+----------+ +----------+
| 应用层 |<----------------------------------------------------------->| 应用层 |
+----+-----+ +----+-----+
| |
+----+-----+ +----+-----+
| 表示层 |<----------------------------------------------------------->| 表示层 |
+----+-----+ +----+-----+
| |
+----+-----+ +----+-----+
| 会话层 |<----------------------------------------------------------->| 会话层 |
+----+-----+ +----+-----+
| |
+----+-----+ +----+-----+
| 传输层 |<----------------------------------------------------------->| 传输层 |
+----+-----+ +----+-----+
| +------------------------------------------+ |
+----+-----+ | +----------+ +----------+ | +----+-----+
| 网络层 |<-----+-->| 网络层 |<--------->| 网络层 |<---+---------->| 网络层 |
+----+-----+ | +----+-----+ +----+-----+ | +----+-----+
| | | | | |
+----+-----+ | +----+-----+ +----+-----+ | +----+-----+
| 数据链路 |<-----+-->| 数据链路 |<--------->| 数据链路 |<---+---------->| 数据链路 |
+----+-----+ | +----+-----+ +----+-----+ | +----+-----+
| | | 内部子网 | | |
+----+-----+ | +----+-----+ +----+-----+ | +----+-----+
| 物理层 |<-----+-->| 物理层 |<--------->| 物理层 |<---+---------->| 物理层 |
+----------+ | +----------+ +----------+ | +----------+
+------------------------------------------+
七层的基本原则
- 应该在需要一个不同抽象体的地方创建一层
- 每一层都应该执行一个明确定义的功能
- 每一层功能的选择应该向定义国际标准化协议的目标看齐
- 层与层边界的选择应该使跨越接口的信息流最小
- 层数应该足够多,保证不同的功能不会被混杂在同一层中,但同时层数不能太多,以免体系变得过于庞大
不同层的功能
- 物理层 :关注于信道上传输的原始比特,问题集中在如何通信,物理接口,以及传输介质等.实现传输方法.
- 数据链路层 :关注差错检测,流量控制,介质访问控制等.实现数据的传递.
- 网络层 :主要控制子网运行,将数据包从源端路由到接收方,处理拥塞,关注服务质量.实现主机间的通信.
- 传输层 :必要时将上层数据分成小单元,高效实现上下隔离以防止下层变化导致上层协议不可用,实现主机间进程与进程的通信.
- 会话层 :允许用户建立会话,并提供各种服务.
- 表示层 :将下层的数据转化为信息.
- 应用层 :最高层应用之间交换数据的标准,
TCP/IP 五层模型
+----------+ +----------+
| 应用层 |<----------------------------------------------------------->| 应用层 |
+----+-----+ +----+-----+
| |
+----+-----+ +----+-----+
| 传输层 |<----------------------------------------------------------->| 传输层 |
+----+-----+ +----+-----+
| +------------------------------------------+ |
+----+-----+ | +----------+ +----------+ | +----+-----+
|internet层|<-----+-->|internet层 |<--------->|internet层|<---+---------->|internet层 |
+----+-----+ | +----+-----+ +----+-----+ | +----+-----+
| | | 内部子网 | | |
+----+-----+ | +----+-----+ +----+-----+ | +----+-----+
| 链路层 |<-----+-->| 链路层 |<--------->| 链路层 |<---+---------->| 链路层 |
+----+-----+ | +----+-----+ +----+-----+ | +----+-----+
| | | | | |
+----+-----+ | +----+-----+ +----+-----+ | +----+-----+
| 物理层 |<-----+-->| 物理层 |<--------->| 物理层 |<---+---------->| 物理层 |
+----------+ | +----------+ +----------+ | +----------+
+------------------------------------------+
不同层的功能
- 物理层 :和 OSI 中相同
- 链路层 :对应 OSI 数据链路层,模型选择数据包交换网络,是主机与传输线路的接口.传输单位为帧.
- internet 层 :对应 OSI 网络层,允许主机将数据包注入任何网络,并让数据包独立到达接收方,同时还要考虑拥塞控制.
传输单位为包. - 传输层 :对应 OSI 传输层,有两个协议,TCP 与 UDP,前者是一个可靠的面向连接的协议,后者是一个不可靠无连接的协议.
- 应用层 :对应 OSI 应用层,会话层与表示层对大多数应用来说并没有太大用处.
ip 地址
ip 协议采用"网络号.主机号"的形式编址.ip 地址总长 32 位,当网络号占的位数多时,可存在的子网也会变多,相应的每个子网所能拥
有的主机数就少.
ip 地址的分类
通常根据网络号,我们将网络地址分为 5 类.
将地址转为 2 进制:
以 0 开头的地址 | 从 1.0.0.0 到 127.255.255.255 | A 类地址 | 前 8 位代表网络号,可以有 28 个网络 | 后 24 位代表主机号,最大支持 224-2 台主机 |
以 10 开头的地址 | 从 128.0.0.0 到 191.255.255.255 | B 类地址 | 前 16 位代表网络号,可以有 216 个网络 | 后 16 位代表主机号,最大支持 216-2 台主机 |
以 110 开头的地址 | 从 191.0.0.0 到 223.255.255.255 | C 类地址 | 前 24 位代表网络号,可以有 224 个网络 | 后 8 位代表主机号,最大支持 28-2 台主机 |
以 1110 开头的地址 | 从 224.0.0.0 到 239.255.255.255 | D 类地址 | 广播地址 | |
以 11110 开头的地址 | 从 240.0.0.0 到 255.255.255.255 | E 类地址 | 保留的地址 |
子网掩码
- 根据 ip 地址的分类,我们可看出,A 类地址的一个网段的主机数最多为 16777214 个,而 C 类地址的主机只能有 254 个.
而现实情况是 A 类地址,很少有要用到一个网段这么多主机的情况,而 C 类地址一个网段能容纳的主机太少了. - 所以出现了 VLSM 的编址方案:
- 将大的网段地址拆分成小的网段,这种小的网段叫子网
- 将小的网段地址合并为大的网段,这种城合并的网段叫超网
传输层协议
主要分为 TCP 和 UDP:
- TCP 可靠,但存在头部开销,有 3 次握手
- UDP 不可靠,TCP 实时性不如 UDP
TCP
-
全称:Transmission Control Protocol,传输控制协议
-
TCP 提供面向连接的,可靠的传输服务
-
TCP 头部中较重要的字段:
- 源端口,目的端口 :用于明确两边的服务访问点
- 顺序号 :TCP 在发送数据时,通常会将数据分段,顺序号可以让接收方正确组合数据
- 偏置值 :明确 TCP 头的大小
- 标志字段 :用于表示控制信息
- 窗口 :用于流控
- 校验和 :判断传输是否有误
-
TCP 的三次握手和四次挥手
+----------+ +-----------+ | Client | | Server | +----+-----+ +----+------+ | SYN,seq=x | listen syn- |---------------------------------------------------->| sent | | | SYN,ACK,ack=x+1,seq=y | syn- |<----------------------------------------------------| rcvd estab-| | lished| ACK,DATA,ack=y+1,seq=x+1 | |---------------------------------------------------->| | | estab- | ... | lished | ... | | ... | | | fin- | FIN,ack=n,seq=z | wait-1 |---------------------------------------------------->| | | | | close- | DATA,ACK....... | wait fin- |<----------------------------------------------------| wait-2| ....... | | | | FIN | |<----------------------------------------------------| | | | | last- time- | ACK | ack wait |---------------------------------------------------->| | | | | close | |
UDP
- 全称:User Datagram Protocol,用户数据报协议
- UDP,面向无连接
- UDP 头部中较重要的字段:
- 源端口,目的端口 :用于明确两边的服务访问点
- 段长 :表示整个 UDP 的大小
- 校验和 :判断传输是否有误
linux 上 IP 配置方法
命令即时生效
-
ifconfig
ifconfig 网络设备名 IP/掩码 ifconfig 网络设备名 IP netmask 点分掩码
例如:
# centos7 ifconfig enp0s3 192.168.0.50/24 ifconfig enp0s3 192.168.0.50 netmask 255.255.255.0 # centos6 ifconfig eth0 192.168.0.51/24 ifconfig eth0 192.168.0.51 netmask 255.255.255.0
-
ip
这个命令可以为网卡分配多个 ip# 增加IP ip address add IP/掩码 dev 设备名 # 删除IP ip address del IP/掩码 dev 设备名
例子:
# 增加IP ip address add 192.168.0.58/24 dev enp0s3 # centos7 ip address add 192.168.0.59/24 dev eht1 # centos6 # 删除IP ip address del 192.168.0.20 dev enp0s3 ip address del 192.168.0.22 dev eth1
命令保存配置:仅 centos7 以后
可用 nmcli 命令,这个命令可以直接将更改内容保存为配置.
nmcli connection modify DEV ipv4.addresses IP/MASK
nmcli connection modify enp0s3 ipv4.addresses 192.168.10.5/24 ipv4.method manual
更改配置文件
/etc/sysconfig/network-script/ifcfg-设备名
将文件中的两个字段更改:
BOOTPROTO=static
IPADDR=192.168.10.7
PREFIX=255.255.255.0
其中 BOOTPROTO 代表 IP 的获取方法,这里用手动,IPADDR 后面跟 IP 地址,PREFIX后面接掩码.