OSI模型和TCP/IP协议

此篇笔记与Crash Course Computer Science【计算机科学速成课】(3)的第29集互联网部分互相补充。

一、OSI模型

1. 发展由来

OSI(Open System Interconnection,开放式通信互联) 是由ISO(International Organization for Standardization,国际标准化组织) 于1983年发布的网络通信模型,旨在将世界各地的异构网络互联互通,提供标准化的网络设计和开发方法,促进不同网络系统之间的互操作性。

2. 组成

物理层(physical layer)

  • 将数据转换为可以通过物理介质(如电缆、光纤、无线信道)传输的电气信号光信号无线电波。它定义了硬件接口规范,
  • 常见标准例子有:RS-232:串行通信标准,用于串口传输,10BASE-T:以太网标准,使用曼彻斯特编码通过双绞线传输数据,RJ-45接口:常用于以太网连接的标准物理接口。比如以太网中的AUI(Attachment Unit Interface),它采用DB-15连接器,连接物理层和数据链路层。
  • 实际上由两个独立的部分组成,媒体访问控制(Media Access Control, MAC)和逻辑链路控制层(Logical Link Control, LLC)。LLC 子层位于数据链路层的上层,它负责处理逻辑上的链路控制。通过在帧中加上标识,帮助区分不同的网络协议。这样,同一物理链路上的多个高层协议(如 IP、IPX 等)可以共享这个链路的通信资源,并提供错误检测与恢复服务。

  • 在局域网(LAN)中,常用的协议 以太网协议(Ethernet)规定通过 MAC 地址来识别传输双方的身份,接入网络的设备必须安装网络适配器(网卡),数据包只能从一块网卡传输到另一个网卡。MAC地址(12位十六进制数)是网卡的硬件地址,理论上不可更改,网卡生产时烧录进芯片的。,全球唯一。前三个字节是厂商编号,后三个字节是网卡流水号,例如4C-0F-6E-12-D2-19

    现代操作系统(比如 Windows、Linux、macOS)允许手动修改/伪造 MAC 地址(称为 MAC Spoofing),主要用于测试、隐私保护,或者绕过某些网络认证机制。一些虚拟机(比如 VMware、VirtualBox)创建的虚拟网卡也是自己生成 MAC 地址。所以 MAC 地址是可以在软件层面临时更改的

  • 主要任务: 将上层传下来的数据组织成帧的形式,进行物理寻址,差错检测,流量控制和访问控制。

  • IP地址用于唯一标识一个网络上的设备,因而可以实现多种网络间的互联。
  • 主要任务:路由选择,决定数据从源地址到目标地址的路径。

传输层(transport layer)

  • 常见的协议包括 TCP(传输控制协议)和 UDP(用户数据报协议)。
  • 主要任务:对数据进行分段和重新组装,并且负责流量控制和错误检测。

会话层(session layer)

  • RPC(远程过程调用)可以通过会话层来管理不同计算机上的进程。

  • 主要任务:负责建立、管理和终止进程间的会话。

表示层(presentation layer)

  • JPEGASCIIGIF等数据格式,都是由表示层来进行管理的。传输前进行压缩,接收后再解压,减少传输的数据量,提高传输效率。解决不同设备在数据格式上的差异,比如大端/小端存储、不同字符集(ASCII、EBCDIC等)的差异。

  • 主要任务:数据的格式化、加密、解密、压缩等操作,确保数据能被接收方正确理解,通常用于数据的编码和解码。

应用层(application layer)

  • 包含网络应用协议,如 HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)等,直接与用户的应用程序进行交互。
  • 主要任务:为应用程序提供网络服务支持,如数据的传输、远程访问等。

二、TCP/IP协议

1. 发展由来

然而,OSI 模型过于庞大、复杂。为了支持ARPANET(阿帕网)的开发,互联网的前身,参照OSI模型,美国国防部开发了 TCP/IP 协议栈,简化 OSI 七层模型为 TCP/IP 四层模型。虽然OSI模型在理论上更完善,但TCP/IP模型在实际网络中的广泛应用,使他成为了事实上的国际标准。

2. 组成

  • 以太网规定一组电信号就是一个数据包,一个数据包就称为一,规定如何把电信号分组为数据帧的这些规则就是以太网协议。一个数据包前 14 个字节是以太网头部(Ethernet Header):,包含源 MAC 地址(6字节)、目标 MAC 地址(6字节)和上层协议类型(Type,2字节),比如 0x0800 表示上层是 IP 协议,最后四个字节是数据帧校验序列(FCS),确定数据包在传输过程中是否损坏。中间的就是要传输的数据,最少 46 个字节,最多 1500 个字节,如果要传输的数据过大就分多个数据帧传送,如果上层数据不足 46 字节,会自动补齐填充数据。

  • 主要任务:本地局域网内通信,电信号分组传输。

网络互连层(internet layer)

  • 使用IP地址(逻辑地址,不同于物理 MAC 地址)来区分两台主机是不是处于同一个网络,如果不在同一个子网中,以太网会将该数据包转发给默认网关(路由器)进行路由。网关是互联网上子网与子网之间的桥梁。当判断 IP 处于同一个子网中时,网络互连层通过 ARP(地址解析)协议 把以太网数据包广播给子网内的所有主机,主机根据 IP 地址是否相同决定是否返回 MAC 地址。

  • 在网络互联层被包装的数据包就叫 IP 数据包,IP 数据包由头部和数据两部分组成,头部长度为 20 个字节,主要包含了目标 IP 地址和源 IP 地址,数据部分的最大长度为 65515 字节,理论上一个 IP 数据包的总长度可以达到 65535 个字节,如果超过这个大小,就需要对 IP 数据包进行分割,分成多帧发送。

  • 主要任务:子网内MAC寻址,对于不同子网的数据包进行路由。

传输层(transport layer)

  • 数据包从一个主机发送到另一台主机后,为了确定哪个应用程序要接收这个包,引入了 UDP 协议(不保证数据到达顺序或完整性)。同一个主机上的每个应用程序都需要指定唯一的端口号(0~65535之间),并且规定网络中传输的数据包必须加上端口信息。

  • TCP 协议就是有确认机制、进行连接(三次握手建立连接、四次挥手断开连接)的 UDP 协议,但数据翻倍、传输速度慢、效率略低(该部分可见另一篇笔记)。

    我们常用的ping指令来判断两台设备是否连通,其原理是使用ICMP(Internet Control Message Protocol,互联网控制报文协议)。它发送 ICMP Echo Request 到目标主机,目标主机收到之后,会回复一个ICMP Echo Reply。根据这个回复,ping 工具就能判断:

    • 目标主机是否可达
    • 往返延迟(Round Trip Time,RTT)是多少
    • 是否有丢包等等
  • 主要任务:通过端口号识别应用程序,负责端到端的数据传输控制(可靠性、顺序、完整性)。

应用层(application layer)

  • 应用层定义了各种各样的协议来规范数据格式和交互规则,常见的有HTTP/HTTPS:超文本传输协议,用于浏览器和服务器之间的数据通信,ftp:文件传输协议,SMTP/POP3/IMAP:电子邮件相关协议,DNS:域名解析协议等。
  • HTTP协议为例:在请求 Header 中,客户端通过字段分别定义了请求数据格式Accept:告诉服务器,我能接受什么类型的数据(比如 JSON、HTML、XML)和响应数据格式Content-Type:告诉服务器或客户端,实际发送的数据是什么格式,有了这个规范,当对方接收到请求以后就知道该用什么格式来解析,然后对请求进行处理,最后按照请求方要求的格式将数据返回,请求端接收到响应后,就按照规定的格式进行解读。
  • 主要任务:定义数据格式和交互规范,按照对应的格式解读数据。

三、常见网络设备

集线器(Hub)

  • 工作在物理层(L1)采用广播的方式发送信号,当一个设备端口接收到信号时,会将这个信号不加任何处理地分发给所有其他的设备端口。然后由每个端口上的设备根据自身的地址等信息来决定是否接收这个信号。

  • 集线器的所有端口共享同一带宽。如果集线器的总带宽是 10Mbps,有 4 个端口同时工作,那么每个端口平均只能获得 2.5Mbps 的带宽左右。

路由器(Router)

  • 工作在网络层(L3),可以连接局域网(LAN)和广域网(WAN),或者连接两个不同的局域网,根据 IP 地址、网络拓扑结构、链路状态等因素选择最佳路径来进行数据包的转发。
  • 当路由器接收到一个数据包时,它会查看数据包中的目标 IP 地址,并与路由器内部的路由表进行比较。路由表中包含了网络地址和对应的下一跳路由器或直接连接的端口信息。根据路由表的指示,路由器将数据包转发到相应的端口。

网桥(Bridge)

  • 工作在数据链路层(L2),当网桥接收到一个数据帧时,它会查看该帧的目标 MAC 地址,并与网桥内部维护的 MAC 地址表进行比较。
  • 如果目标 MAC 地址在地址表中但对应的端口不对应,那么网桥就会将数据帧转发到对应的目标端口。如果目标 MAC 地址不在地址表中,或者地址表中记录的目标端口与数据进入端口相同,网桥就会丢弃该数据帧,无需再转发。
  • 不同的网桥端口之间是相互隔离的冲突域。网桥可以将网络划分为多个冲突域,减少了冲突发生的概率,提高了网络的性能。网桥通常只有少量端口(如2-4个),主要用于连接几个小型网络或网络中的不同网段。网桥一般是软件实现,依赖于主机的 CPU 和内存来处理数据帧的转发等操作,其智能化程度相对较低。

交换机(Switch)

  • 交换机通过建立和维护一个 MAC 地址表来决定如何转发数据帧。

  • 交换机通常具有多个端口(如8-48个甚至更多),可用于构建大型的局域网,每个端口都能提供高性能的数据转发,功能更加多样化和强大。且每个端口都有自己的专用带宽,并且交换机可以根据 MAC 地址进行智能转发,避免了广播风暴。

  • 交换机则有专门的硬件芯片来处理数据帧的转发,可以在硬件层面地快速进行数据处理和转发,具有更高的智能化程度和更好的性能。

reference:


OSI模型和TCP/IP协议
http://example.com/2025/04/26/OSI模型/
作者
Lanxinmob
发布于
2025年4月26日
许可协议