计算机网络基础:局域网、广域网及OSI七层模型解析

一、局域网和广域网

1、局域网(LAN - Local Area Network)

局域网(LAN)是指覆盖较小地理范围的网络,通常用于连接办公室、学校、家庭等有限区域内的计算机和其他设备。

特点

  1. 地理范围:通常覆盖一栋建筑、一层楼或一个小型园区,范围一般在几百米到几公里之内。

  2. 所有权:通常由单个组织或个人拥有和管理。

  3. 数据传输速度:高速连接,常见的速率有100Mbps、1Gbps甚至10Gbps。

  4. 技术和协议:常用以太网技术,协议主要包括IEEE 802.3(有线)和IEEE 802.11(无线)。

  5. 硬件设备:使用交换机、路由器、无线接入点等网络设备。计算机数量多的话,通过交换机和路由器连接在一起。

优势:高速传输,低延迟;简单的网络管理和维护;资源共享,例如打印机、文件服务器等。

常用于办公室内连接计算机、打印机和服务器的网络;家庭中的家庭网络,用于连接电脑、智能电视和手机。

2、广域网(WAN - Wide Area Network)

广域网(WAN)是指覆盖较大地理范围的网络,通常用于连接不同城市、国家甚至全球的多个局域网。

特点

  1. 地理范围:通常覆盖几公里到几千公里,甚至可以是全球范围。

  2. 所有权:由多个组织、政府机构或电信公司共同拥有和管理。

  3. 数据传输速度:速度较局域网慢,常见的速率有几Mbps到几百Mbps,但光纤等高端设备可以达到更高的速率。

  4. 技术和协议:使用广域网技术,如MPLS(多协议标签交换)、Frame Relay、ATM(异步传输模式)等。

  5. 硬件设备:使用路由器、光纤传输设备、卫星、调制解调器等。

优势:能够连接分布在广泛地理区域的多个局域网;支持远程访问和全球通信。

常用于公司在不同城市的办公室之间的网络连接;互联网是最大的广域网,连接全球的计算机网络。

3、对比局域网和广域网

特性 局域网(LAN) 广域网(WAN)
地理范围 小范围(几百米到几公里) 大范围(几公里到全球)
传输速度 高速(100Mbps - 10Gbps) 低速到中高速(几Mbps - 几百Mbps)
组网成本 较低 较高
网络延迟 较高
所有权 由单个组织或个人拥有和管理 由多个组织、政府或电信公司拥有和管理
使用设备 交换机、路由器、无线接入点等 路由器、光纤设备、卫星、调制解调器等
技术和协议 以太网(IEEE 802.3)、Wi-Fi(IEEE 802.11) MPLS、Frame Relay、ATM等

局域网(LAN)和广域网(WAN)是计算机网络的两种主要类型,分别用于小范围和大范围的设备连接。局域网通常用于办公室、家庭等小范围的高速连接,而广域网用于不同地理位置之间的网络连接,如城市、国家乃至全球范围。了解它们的特点、优势和应用场景有助于更好地设计和管理网络系统。

路由器实现数据包的跨网络转发。


二、OSI七层模型

在OSI的七层模型结构中,从纵向即单个主机的角度来看,每一层与本层的上下两层从逻辑上是分开的,即A的网络层和数据链路层是分开的。这种方式使得每层为上一层提供服务,依赖于下层的数据并为上一层提供接口。同时各层之间的规则是相互独立的,例如数据的格式、通信的方式,这成为本层的协议。

不同主机相同层之间是对等的,例如主机 A 中的应用层和主机 B中的应用层是相同的层次,这两个层互为对等层,对等层之间的规则是一致的,但实现不一定相同。例如,UNIX网络协议栈运行在主机A上,Windows的网络协议栈运行在主机B上,只要它们的规则一致就可以:例如A上的FTP服务器可以与B上的FTP客户端实现互相通信。

一个主机上运行的网络规则实现的集合称为协议栈,主机利用协议栈来接收和发送数据。OSI/ISO的7层网络结构模型可以将网络协议栈的不同层的实现划分为不同的层次,将问题简化,方便网络协议栈的实现。

1、OSI的七层网络结构

在这里插入图片描述

物理层(Physical Layer): 它规定了物理线路和设备的触发、维护、关闭物理设备的机械特性、电气特性、功能特性和过程,为上层的传输提供了一个物理介质,本层是通信端点之间的硬件接口。本层中数据传输的单位为 比特(b)。属实际使用中的设备如网卡、集线器等属于本层。

数据链路层(Data Link Layer): 数据链路层在物理介质基础之上提供可靠的数据传输,在这一层利用通信信道实现无差错传输,提供物理地址寻址、数据成帧、数据的检测重发、流量控制和链路控制等功能。在数据链路层中数据的单位为 (frame)。属于本层定义的规范有 SDLC、HDLC、PPP、STP、帧中继等,实际中的 MAC 属于本层。以太网、令牌环网(Token Ring)和无线局域网(Wireless LAN)也都是工作在数据链路层的网络技术。

网络层(NetWork Layer):: 负责地址管理和路由选择。网络层将各个子网之间的数据进行路由选择,将数据从一个主机传送到另一个主机,其功能包括网际互联、流量控制和拥塞控制等。在本层中数据的单位为数据包(packet)。属于本层定义的规范有IP、IPX、RIP、OSPF等,实际中的路由器属于本层。

传输层(Transport Layer): 传输层将上层的数据处理为分段的数据,提供可靠或者不可靠的传输,为上层掩盖下层细节,保证会话层的数据信息能够传送到另一方的会话层(但不一定传送到另一方的应用层)。在传输层中数据的单位为数据段(segment)。属于本层定义的规范有TCP、UDP、SPX等。

会话层(Session Layer): 会话层管理主机之间的会话过程,包括会话的建立、终止和会话过程中的管理,来提供服务请求者和提供者之间的通信。属于本层定义的规范有 TCP、UDP、SPX等。

表示层(Presentation Layer): 表示层对网络传输的数据进行变换,使得多个主机之间传送的信息能够互相理解,包括数据的压缩、加密、格式的转换等,例如片数据的发送前压缩和接收后的解压。属于本层定义的有ASCI、JPEG、MPEG婷标准。

应用层(Application Layer): 应用层为应用程序提供访问网络服务的接口,为用户提供常用的应用,例如经常使用的电子郎件应用程序,网络浏览器等都基于本层、在本层之上定义。属于本层定义的规范有TeInet、FTP、HTTP、SNMP、P2P等应用层协议。

在OSI模型中,每一层都为其上一层提供服务,同时依赖于下层提供的数据传输服务。这种分层关系如下:

  • 物理层为数据链路层提供比特传输服务。
  • 数据链路层为网络层提供帧传输服务。
  • 网络层为传输层提供数据包传输服务。
  • 传输层为会话层提供可靠的端到端传输服务。
  • 会话层为表示层提供会话管理服务。
  • 表示层为应用层提供数据表示和转换服务。
  • 应用层为最终用户提供各种网络应用服务。

2、OSI的数据传输方式

下图是一个运行于主机A上的程序,通过网络发送数据到B上的应用程序。数据流通过主机A由上至下依次经过网络协议栈,通过网络发送给主机B,主机B上又自下而上的经过OSI七层网络协议结构。

在这里插入图片描述

在局域网通信的过程中,数据报文在传输时会经历一个自顶向下不断被封装的过程。在每一层,数据报文会被添加上该层的协议报头,形成新的数据单元。这个过程称为封装

数据单元(如数据帧、数据报等)包含了有效载荷,以及为了传输而附加的控制信息和元数据。

解封(又称解包)时,每一层会读取并处理其协议报头,将有效载荷交付给上层协议。这种过程确保了数据能够逐层传递,最终到达目的地应用程序。

能够将报头和有效载荷进行分离(解包),并将有效载荷交付给上层协议(分用)的协议中,报头通常包含上层协议的标识信息。

任何协议都需要有以下功能:可以将报头和有效载荷进行分离(解包),可以将自己的有效载荷交付给上层的那个哪议(分用)。报头中需要包含上层协议是谁。同层协议都可以认为自己在和对方直接通信。

应用层的数据单元:请求/响应(Request/Response)

传输层的数据单元:数据段(Segment)

网络层的数据单元:数据报(Datagram)

链路层 的数据单元:数据帧(Frame)

3、网络与操作系统的关系

系统调用 应用接口 用户 -> 应用层(基于系统软件的开发称为应用层。对网络系统调用进行封装得到网络库,因此网络库属于用户空间)

  1. 底层硬件 -> 物理层(网卡)

    • 在计算机系统中,物理层对应的就是网卡等硬件设备,这些硬件负责数据的实际传输。
  2. 驱动程序 -> 数据链路层(网卡的驱动程序)

    • 网卡的驱动程序运行在数据链路层,这一层负责数据帧的传输和错误检测等功能。
  3. 操作系统 -> 网络层(IP) + 传输层(TCP/UDP)

    • 操作系统在网络层和传输层之间起到了桥梁的作用。IP协议运行在网络层,负责将数据包路由到目的地址。传输层则主要由TCP和UDP协议组成,负责端到端的数据传输和连接管理。(OS内部实现,网络也是OS源代码的一部分){因此存在网络方面的系统调用} TCP/IP协议栈
  4. 系统调用、应用接口、用户 -> 应用层

    • 在应用层,开发者通过操作系统提供的系统调用和网络库来构建应用程序。操作系统将底层的网络功能封装成系统调用接口供用户程序使用,因此用户程序不必直接处理底层的网络通信细节。网络库运行在用户空间,将系统调用封装成更易于使用的接口,供应用程序调用。

简而言之,网络和操作系统的关系可以被理解为操作系统提供了一组网络服务,通过系统调用和库函数接口,使得应用程序能够方便地进行网络通信。这种封装使得开发者可以专注于应用层的逻辑,而不必深入理解底层的网络实现细节。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 13:02:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 13:02:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 13:02:03       58 阅读
  4. Python语言-面向对象

    2024-07-18 13:02:03       69 阅读

热门阅读

  1. Vim(Vi IMproved)

    2024-07-18 13:02:03       20 阅读
  2. 新员工入职通识考试

    2024-07-18 13:02:03       20 阅读
  3. CSS文本样式:打造精美网页文字的艺术

    2024-07-18 13:02:03       21 阅读
  4. Python--print函数的end参数

    2024-07-18 13:02:03       23 阅读
  5. 《栈和队列学习笔记》

    2024-07-18 13:02:03       16 阅读
  6. js中使用箭头函数以及setTimeout时this的指向问题

    2024-07-18 13:02:03       20 阅读
  7. 快速排序算法的基本思想以及Python实现

    2024-07-18 13:02:03       23 阅读
  8. 【Go系列】Go语言的网络服务

    2024-07-18 13:02:03       27 阅读
  9. 处理UI卡死的技巧

    2024-07-18 13:02:03       22 阅读