OSI简介

在刚刚开发 ARPA 网络的时候,我们真的想让它尽可能地智能。但是网络越复杂,开发和维护就越困难。作为一种解决方案,有人提出将所有网络功能划分为逻辑层。

网络运行模型被称为ISO/OSI开放系统互连基础参考模型的网络模型。简而言之 - OSI 模型(开放系统互连)。

OSI模型

该模型总共有 7 个级别。级别的交互被严格标准化并最小化。较低级别不知道较高级别的存在及其结构。

最低层只能发送比特。甚至不发送,即发送。他不知道他们是否愿意。发送和遗忘。

更高级别已经使用位帧组进行操作并且对网络的物理设备知之甚少,了解 MAC 地址等。

下一个级别是批处理。他更聪明,知道如何使用网络 IP 地址进行操作。等等。

为什么这一切都是必要的?最大限度地提高灵活性。

想象一下,每一层都是一个 Java 接口,它可以有几个不同的实现。所以这里也是。在物理层面,您可以通过电线发送比特、通过空中 (Wi-Fi) 发送、通过卫星发送,而所有其他层面甚至都不会对此一无所知。一切都会按预期进行。

OSI协议栈

您可以在下图中更详细地研究协议栈:

但是,如果您不是系统管理员,那么您就不需要如此详细的协议。比较有意思的可能是TCP(传输控制协议)/IP(网际协议)协议栈的研究。

OSI模型的前三层,即应用层、表示层和会话层,在TCP/IP模型中没有单独区分,在传输层之上只有一个应用层:

按 OSI 模型层分布的协议

网络协议/网络协议 开放系统接口
应用 应用 HTTP、SMTP、SNMP、FTP、Telnet、SSH、SCP、SMB、NFS、RTSP、BGP
表示 XDR、法新社、TLS、SSL
会议 ISO 8327 / CCITT X.225、RPC、NetBIOS、PPTP、L2TP、ASP
运输 运输 TCP、UDP、SCTP、SPX、ATP、DCCP、GRE
网络 网络 IP、ICMP、IGMP、CLNP、OSPF、RIP、IPX、DDP
导管 导管 以太网、令牌环、HDLC、PPP、X.25、帧中继、ISDN、ATM、SPB、MPLS、ARP/td>
身体的 电线、无线电通信、光纤线、红外辐射

TCP/IP协议栈

TCP/IP协议栈包括四层:

  • 应用
  • 传输
  • 互联网层(Network layer)(网际层)
  • 链路层(网络接入层)

这些层的协议完全实现了 OSI 模型的所有功能。IP 网络中的所有用户交互都建立在 TCP/IP 协议栈之上。

TCP/IP 协议栈独立于物理硬件,除其他外,这确保了有线和无线网络之间完全透明的交互。

应用层是大多数网络应用程序运行的地方。

应用层

对于程序的交互,存在用于信息交换的高级协议。例如,浏览器使用 HTTP 协议工作,邮件使用 SMTP 协议发送,Telegram 使用自己的加密协议工作。

但是我们对私有协议不是很感兴趣。大多数情况下,您会遇到批量协议,例如用于 FTP(文件传输)的 ftp 客户端、SSH(与远程计算机的安全连接)、DNS(字符到 IP 地址的转换)等等。

几乎所有这些协议都运行在 TCP 之上,尽管有些协议运行在 UDP(用户数据报协议)之上以加快速度。但是,重要的是,这些协议有默认端口。例子:

  • 20 FTP 到 TCP 端口 20(用于数据传输)和 21(用于控制命令)
  • 22-SSH
  • 23 - 远程登录
  • 53 - DNS 查询
  • 80-HTTP
  • 443 - HTTPS

这些端口由命名分配和唯一参数机构 (IANA) 定义。

还有其他几种流行的应用层协议:Echo、Finger、Gop​​her、HTTP、HTTPS、IMAP、IMAPS、IRC、NNTP、NTP、POP3、POPS、QOTD、RTSP、SNMP、SSH、Telnet、XDMCP。

传输层

传输层协议旨在解决有保证的消息传递问题。

消息(数据包)可以在网络上的某处发送和丢失。在这种情况下,由传输层来监视这些情况并在必要时重新发送消息。

传输层协议的另一个重要任务是控制消息到达的顺序。消息以一种顺序发送并以另一种顺序到达的情况经常发生。如果你把这些片段中的重要信息放在一起,你就会胡说八道。

为防止这种情况发生,传输层要么枚举消息,要么不发送新消息,直到它收到前一个消息的接收确认。逻辑上存在于这一层的自动路由协议(因为它们运行在 IP 之上)实际上是网络层协议的一部分。

TCP协议是一种“有保证”的连接预建立传输机制,为应用程序提供可靠的数据流,确保接收到的数据无差错,丢失时重新请求数据,并消除数据重复。

TCP 允许您调节网络负载,并减少长距离传输数据时的等待时间。此外,TCP 保证接收到的数据以完全相同的顺序发送。这是它与 UDP 的主要区别。

UDP是一种无连接的数据报协议。它也被称为“不可靠”的传输协议,因为无法验证消息是否已交付给收件人,以及可能的数据包混合情况。需要保证数据传输的应用程序使用 TCP 协议。

UDP 通常用于视频流和游戏等应用程序,在这些应用程序中可以容忍数据包丢失并且重试很困难或不合理,或者用于建立连接比重新发送需要更多资源的挑战响应应用程序(例如 DNS 查询)。

TCP和UDP都使用一个称为端口的数字来定义上层协议。