• 了解OSI七层模型和TCP/IP四层模型
  • 理解TCP/IP的三次握手四次断开

    一、OSI七层模型

    1. OSI的七层介绍

    1.1 应用层

  • 为用户提供的服务和协议:FTP、SSH、网络管理服务等

  • 主要功能:

    • 用户接口:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系
    • 实现各种服务:该层具有的各种应用程序可以完成和实现用户请求的各种服务。

      1.2 表示层

  • 是对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。

  • 主要功能是处理用户信息的标识问题,如编码、数据格式转换和加密解密等
  • 作用:

    • 数据的解码和编码
    • 数据的加密和解密
    • 数据的压缩解压缩

      1.3 会话层

  • 是用户应用程序和网络之间的接口,主要任务是:组织和协调两个会话进程之间的通信,并对数据交换进行管理。

  • 具体功能有:

    • 会话管理
    • 会话流量控制
    • 寻址
    • 差错控制

      1.4 传输层

  • OSI上3层:主要任务是数据处理 —资源子网

  • OSI下3层:主要任务是数据通讯 —通讯子网
  • 主要任务是:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输

    • 报文:是网络中交换与传输的数据单元。

      1.5 网络层

  • 主要任务是:数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息由一个网络设备传送到另一个网络设备。

  • 一般的,数据链路层解决的是同一网络(局域网)内节点之间的通信,而网络层主要解决不同子网之间的通信。

    1.6 数据链路层

    在计算机网络中由于各种干扰的存在,物理链路是不可靠的。因此,这一层主要功能:

  • 提供可靠的通过物理介质传输数据的方法。

  • 接收来自物理层的位流(比特流)形式的数据,并封装成帧,传送到上一次;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层;

    • 并且,还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输

      1.7 物理层

      主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。尽可能屏蔽掉具体传输介质和物理设备的差异

      2. 总结

  • 物理层、数据链路层、网络层:主要提供数据传输和交换功能,即以节点到节点之间的通信为主

  • 传输层:作为上下两部分的桥梁,是整个结构中最关键的部分
  • 会话层、表示层和应用层:以提供用户与应用程序之间的信息和数据处理功能为主

    二、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三次握手

    三次握手过程如下:
  1. 客户机A(主动连接端)发送一个SYN包给服务器B(被动连接端)
  2. B收到SYN包后,发送一个带ACK和SYN标志的包给A
  3. A发送一个带ACK标志的包给B, 握手动作完成。
  4. EST状态,established

    3. TCP/IP四次断开

    四次断开过程如下:

  5. A发送一个FIN包给B,请求断开连接

  6. B收到FIN包后,发送一个ACK包给A
  7. B发送了ACK包后,再发送一个FIN包给A,确认断开
  8. 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作为路由进行转发
    步骤:
  1. node2上配置172.16.0.254的静态IP地址
  • 略过
  1. 添加默认路由网关
  • 修改网卡的配置文件,重启网络后route -n 看不到,就只有手动添了
  • route add -net 10.1.1.0/24 dev eth0
  • route add default gw 10.1.1.1
  1. node3上配置10.12.0.254的静态IP地址
  • 修改网卡的配置文件,重启网络后,route -n 检查
  1. 在node1上开启路由转发的功能
  • 临时开启,echo 1 > /proc/sys/net/ipv4/ip_forward
    • 注意:重启网络后,失效
  • 永久开启,修改参数, echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
    • 0代表不开启路由转发,1代表开启
  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
  1. 测试验证。三台主机互相ping