OSI七层模型

警告
本文最后更新于 2022-07-05,文中内容可能已过时。

OSI 模型是从上往下的,越底层越接近硬件,越往上越接近软件,这七层模型分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

  • 物理层: 在媒体上传输比特,提供机械的和电气的规约
  • 数据链路层: 将分组数据封装成帧,提供节点到节点方式的传输
  • 网络层: 将分组从源端传送到目的端,提供网络互联
  • 传输层: 提供可靠的端到端的报文传输和差错控制
  • 会话层: 建立、管理和终止会话
  • 表示层: 对数据进行转换、加密和压缩
  • 应用层: 程序及接口
OSI七层模型 TCP/IP4层模型 功能 TCP/IP协议簇
应用层 应用层 文件传输、邮件、文件共享、虚拟终端、web、域名服务 TFTP、HTTP、SMTP、DNS、TELNET
表示层 应用层 数据格式化、代码转化、数据加密 没有协议
会话层 应用层 解除或建立与别的节点的会话关系 没有协议
传输层 传输层 提供端对端的接口 TCP、UDP
网络层 网络层 为数据包选择路由(路由器) IP、ICMP、RIP、OSPF、BGP、IGMP
数据链路层 链路层 传输有地址的帧及错误检测功能 SLIP、CSLIP、PPP、ARP、RARP、MTU(交换机)
物理层 链路层 以二进制数据形式在物理媒介上传输数据(光纤、普通网线、无线信号) ISO2110、IEEE802、IEEE802.2
/images/osi模型.png
OSI模型

  当你输⼊⼀个⽹址并按下回⻋键的时候,⾸先,应⽤层协议对该请求包做了格式定义;紧接着传 输层协议加上了双⽅的端⼝号,确认了双⽅通信的应⽤程序;然后⽹络协议加上了双⽅的IP地 址,确认了双⽅的⽹络位置;最后链路层协议加上了双⽅的MAC地址,确认了双⽅的物理位置, 同时将数据进⾏分组,形成数据帧,采⽤⼴播⽅式,通过传输介质发送给对⽅主机。⽽对于不同 ⽹段,该数据包⾸先会转发给⽹关路由器,经过多次转发后,最终被发送到⽬标主机。⽬标机接 收到数据包后,采⽤对应的协议,对帧数据进⾏组装,然后再通过⼀层⼀层的协议进⾏解析,最 终被应⽤层的协议解析并交给服务器处理。

  • 链路层: 对0和1进行分组,定义数据帧,确认主机的物理地址,传输数据;
  • 网络层: 定义IP地址,确认主机所在的网络位置,并通过IP进行mac寻址,对外网数据包进行路由转发。
  • 传输层: 定义端口,确认主机上应用程序身份,并将数据包交给对应的应用程序。
  • 应用层: 定义数据格式,并按照对应的数据格式解读数据。
  1. 应用层录入消息hello(写信)
  2. 传输层附加TCP包首部(装入信封)
  3. 网络层附加IP包首部(写入地址和邮编)
    • IP数据包:首部(20字节:包含版本、首部长度、区分服务、总长度、标识、标志、片偏移、生存时间、协议、首部校验、源地址、目标地址、可选字段、填充、数据部分) + 数据(最大65515字节)
  4. 数据链路层附加以太包首部(邮票和邮章)
    • 以太网协议: 一组电信号就是一个数据包,一个数据包又被称为一帧
    • 以太网包,包含目标mac、源mac地址
  5. 物理层传通过光缆将数据输至目标(邮车转移)
  6. 数据链路层拆解以太包首部
  7. 网络层拆解IP包首部
  8. 传输层拆解TCP包首部
  9. 应用层接收消息

特殊B类地址网段: 169.254.0.0/16, 用于处理DHCP分配失败或没有DHCP服务的情况

  • A类: 1.0.0.0-126.0.0.0,默认子网掩码:255.0.0.0 ,第一个字节为网络号,后三个字节为主机号。该类ip地址的最前面为0,所以地址的网络号取值于1-126之间。一般用于大型网络。
  • B类: 128.0.0.0-191.255.0.0,默认子网掩码:255.255.0.0,前两个字节未网络号,后两个字节为主机号,该类IP 地址的最前面为10,所以地址的网络号取值于128-191之间,一般用于中等规模网络。
  • C类: 192.0.0.0-223.255.255.0,默认子网掩码: 255.255.255.0 ,前三个字节为网络号,最后一个字节为主机号,该类IP地址的最前面为110,所以地址的网络号取值于192-223之间,一般用于小型网络.
  • D类: 是多播地址,该类IP地址的最前面为1110,所以地址的网络号取值于224-239之间,一般用于多路广播用户。
  • E类: 是保留地址。该类IP地址的最前面为1111,所以地址的网络号取值于240-255之间。
  • A类: 10.0.0.0-10.255.255.255
  • B类: 172.16.0.0-172.31.255.255
  • C类: 192.168.0.0-192.168.255.255
  • SYN: 表示建立连接
  • FIN: 表示关闭连接
  • ACK: 表示响应
  • PSH: 表示有data数据传输
  • PST: 表示连接重置

客户端发送SYN到服务器端表示准备建立连接,服务端响应发送SYN+ACK于客户端表示准备建立连接请求,客户端发送ACK响应表示开始传输数据

客户端发送FIN请求到服务端表示准备断开连接,同时进入FIN_WAIT_1状态下,服务端接收到FIN后发送ACK于客户端表示接收到了准备断开的响应请求,同时进入CLOSE_WAIT,客户端接收到了ACK同时进入FIN_WAIT_2,服务端再次发送FIN+ACK于客户端表示我也准备断开请求了,同时服务端进入LAST_ACK,客户端在接收到FIN+ACK后发送ACK到服务端,表示我已经接收到服务端确认并准备关闭连接,服务端接收到客户端ACK后直接关闭,客户端在发送后进入CLOSE_WAIT并等待2个报文长度时间(默认30秒)后关闭连接。