- 了解OSI七层模型和TCP/IP四层模型
-
一、OSI七层模型
1. OSI的七层介绍
1.1 应用层
为用户提供的服务和协议:FTP、SSH、网络管理服务等
主要功能:
是对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。
- 主要功能是处理用户信息的标识问题,如编码、数据格式转换和加密解密等
作用:是用户应用程序和网络之间的接口,主要任务是:组织和协调两个会话进程之间的通信,并对数据交换进行管理。
具体功能有:
OSI上3层:主要任务是数据处理 —资源子网
- OSI下3层:主要任务是数据通讯 —通讯子网
主要任务是:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输
主要任务是:数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息由一个网络设备传送到另一个网络设备。
一般的,数据链路层解决的是同一网络(局域网)内节点之间的通信,而网络层主要解决不同子网之间的通信。
1.6 数据链路层
在计算机网络中由于各种干扰的存在,物理链路是不可靠的。因此,这一层主要功能:
提供可靠的通过物理介质传输数据的方法。
接收来自物理层的位流(比特流)形式的数据,并封装成帧,传送到上一次;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层;
物理层、数据链路层、网络层:主要提供数据传输和交换功能,即以节点到节点之间的通信为主
- 传输层:作为上下两部分的桥梁,是整个结构中最关键的部分
会话层、表示层和应用层:以提供用户与应用程序之间的信息和数据处理功能为主
二、TCP/IP协议模型
1. 什么是TCP/IP模型
2. TCP/IP的分层结构
2.1 链路层
OSI的物理层和数据链路层
ARP(地址解析协议IP-MAC)和RARP(逆地址解析协议),用来转换IP层和网络接口层使用的地址
2.2 网络层
OSI网络层
在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(internet互联网控制报文协议),以及IGMP协议(internet组管理协议)
2.3 运输层
主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:
TCP协议:为两台主机提供高可靠性的数据通信。只能用于端到端的通讯。才用“带重传的肯定确认”来实现传输的可靠性,也就是TCP数据包中包括序号(seq)和确认(ack)
UDP协议:为应用层提供一种非常简单的服务。可以实现广播发送。UDP数据包括目的端口号和源端口号信息。
2.4 应用层
OSI会话层、表示层、应用层
应用层负责处理特定的应用程序细节。3. 数据封装过程
数据格式
TCP数据信息:TCP头部+实际数据(TCP头包括源和目标主机端口号、顺序号、确认号、校验字等)
IP数据包:IP头部+TCP数据信息(IP头包括源和目标主机IP地址、类型、生存期等)
数据帧:帧头+IP数据包+帧尾(帧头包括源和目标主机MAC初步地址及类型,帧尾是校验字)- 数据的封装与解封装
封装:数据要通过网络进行传输,要从高层一层一层的向下传送,如果一个主机要传送数据到别的主机,先把数据装到一个特殊协议包头中,这个过程叫封装。
解封装:上面的逆向过程
三、TCP/IP协议三次握手四次断开
序列号:seq序号
确认序号:ack序号。只有ack标志位为1时,确认序号字段才有效。ack=seq+1
常见的标志位:
ACK:确认序号有效
SYN:发起一个新连接
FIN:释放一个连接1. 了解netstat中的网络状态
2. TCP/IP三次握手
三次握手过程如下:
- 客户机A(主动连接端)发送一个SYN包给服务器B(被动连接端)
- B收到SYN包后,发送一个带ACK和SYN标志的包给A
- A发送一个带ACK标志的包给B, 握手动作完成。
-
3. TCP/IP四次断开
四次断开过程如下:
A发送一个FIN包给B,请求断开连接
- B收到FIN包后,发送一个ACK包给A
- B发送了ACK包后,再发送一个FIN包给A,确认断开
- A收到FIN包后,发送一个ACK包,当B收到ACK包后,四次断开动作完成,连接断开。
四、查看路由表信息
交换:是指同网络访问(两台机器连在同一个交换机上,配置同网段的不同ip就可以直接通讯)
路由:是跨网络访问(路径选择)
路由表:是记录路由信息的表
- 查看路由表信息,
route -n
注意事项:
- 网关 gw,是一个ip
- 加网关只能加你已经有的路由网段里的一个IP才行(此IP不一定存在)
- 加网关可以不用指定子网掩码(因为是已有的一个网段的IP,所以掩码已经确认了)
- 准确来说,一个路由表上可以加多个网关,但只有一个生效
如果两张网卡配置的是同网段的不同ip,那么当eth0网卡有问题时,路由表里匹配到第一条后,依然会走eth0网卡,而不会走eth1。可以解决(多路由表或者双网卡绑定)
五、IP路由选择实验
route -n
查看路由,显示ip,不解析route del default
删除默认路由route add default gw 192.168.1.110
添加一个默认网关,把所有不知道的网络都交给他来转发route add -net 192.168.2.0/24 dev eth0
对一个网络添加一个新的路由(另一个网段)route add -host 192.168.3.1 gw 192.168.1.110
对一个具体的ip添加路由
1. 实验需求
环境准备:
node1:10.1.1.1和192.168.0.1 作为网关服务器,开启路由转发功能 /proc/sys/net/ipv4/ip_forward
node2:172.16.0.254
node3:10.12.0.254
要求:
实现不同网络(10.12.0.0/24和172.16.0.254/24)之间的互通,使用第三方主机node1作为路由进行转发
步骤:
- node2上配置172.16.0.254的静态IP地址
- 略过
- 添加默认路由网关
- 修改网卡的配置文件,重启网络后
route -n
看不到,就只有手动添了 route add -net 10.1.1.0/24 dev eth0
route add default gw 10.1.1.1
- node3上配置10.12.0.254的静态IP地址
- 修改网卡的配置文件,重启网络后,
route -n
检查
- 在node1上开启路由转发的功能
- 临时开启,
echo 1 > /proc/sys/net/ipv4/ip_forward
- 注意:重启网络后,失效
- 注意:重启网络后,失效
- 永久开启,修改参数,
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
- 0代表不开启路由转发,1代表开启
- 0代表不开启路由转发,1代表开启
- 在node1上增加2条分别到达node2和node3的路由信息
route add -net 172.16.0.0/24 dev eth0
route add -net 10.12.0.0/24 dev eth0
- 测试验证。三台主机互相ping