JAVA EE初阶 - 预备知识(三)

一、中间件

中间件是一种处于操作系统和应用程序之间的软件,它能够为分布式应用提供交互、资源共享、数据处理等功能,是现代软件架构中不可或缺的一部分。下面从多个方面为你详细介绍中间件:

定义与作用

  • 定义:中间件是连接两个或多个软件组件或应用程序的软件层,它屏蔽了底层操作系统和网络的复杂性,为开发者提供了统一的编程接口和开发环境,使得不同的应用程序可以方便地进行通信和协作。
  • 作用
    • 简化开发:开发者无需关注底层的通信细节和系统差异,只需使用中间件提供的接口进行开发,从而降低了开发难度和成本,提高了开发效率。
    • 提高可移植性:中间件可以在不同的操作系统和硬件平台上运行,使得基于中间件开发的应用程序具有更好的可移植性。
    • 增强系统的灵活性和扩展性:中间件提供了灵活的架构和接口,方便应用程序进行功能扩展和升级,能够适应不断变化的业务需求。
    • 实现资源共享和协同工作:中间件可以实现不同应用程序之间的资源共享和协同工作,促进了企业内部和企业之间的信息集成和业务协同。

常见类型

  • 数据库中间件
    • 功能:主要用于连接应用程序和数据库,提供统一的数据库访问接口,实现数据库的分布式管理、负载均衡、数据复制等功能。
    • 示例:MyCAT 是一个开源的数据库中间件,它可以将多个 MySQL 数据库进行整合,为应用程序提供统一的数据库访问服务,实现数据的分片存储和读写分离,提高数据库的性能和可用性。
  • 消息中间件
    • 功能:用于在不同的应用程序或进程之间进行消息传递和通信,实现异步通信、解耦和流量削峰等功能。
    • 示例:RabbitMQ 是一个基于 AMQP(高级消息队列协议)的消息中间件,它支持多种消息传递模式,如发布 / 订阅、队列模式等,广泛应用于分布式系统中的异步通信场景。
  • 应用服务器中间件
    • 功能:为企业级应用提供运行环境和服务支持,包括事务管理、安全认证、资源池管理等功能,负责管理应用程序的生命周期和资源分配。
    • 示例:Tomcat 是一个开源的 Servlet 容器和 Web 服务器,它可以运行 Java Web 应用程序,处理 HTTP 请求和响应,为开发者提供了一个简单易用的 Web 应用开发和部署环境。
  • 缓存中间件
    • 功能:用于临时存储经常访问的数据,减少对数据源(如数据库)的访问次数,提高系统的响应速度和性能。
    • 示例:Redis 是一个高性能的内存缓存中间件,支持多种数据结构,可用于缓存数据、实现分布式锁、消息队列等功能。
  • 交易中间件
    • 功能:主要用于处理企业级的事务处理,保证交易的原子性、一致性、隔离性和持久性(ACID),提供事务管理、并发控制和故障恢复等功能。
    • 示例:Tuxedo 是一种著名的交易中间件,广泛应用于金融、电信等领域的关键业务系统中,确保交易的安全和可靠。

应用场景

  • 企业级应用开发:在企业资源规划(ERP)、客户关系管理(CRM)等大型企业级应用中,中间件可以实现不同模块之间的通信和数据共享,提高企业的管理效率和决策水平。
  • 分布式系统架构:在分布式系统中,中间件可以解决不同节点之间的通信、协调和资源管理问题,实现系统的高可用性、可扩展性和容错性。例如,微服务架构中,通过消息中间件实现服务之间的异步通信和解耦。
  • 云计算和大数据领域:中间件在云计算和大数据领域发挥着重要作用,如数据存储中间件可以实现海量数据的分布式存储和管理,消息中间件可以实现数据的实时传输和处理。

二、数据库中间件

数据库中间件是一种位于应用程序和数据库之间的软件层,它能够屏蔽不同数据库的差异,为应用程序提供统一的数据库访问接口,增强数据库的功能并提高数据库管理效率。以下从多个维度详细介绍数据库中间件:

功能特点

  • 统一访问接口:不同类型的数据库(如 MySQL、Oracle、SQL Server 等)具有不同的访问协议和 API。数据库中间件提供了统一的访问接口,使得应用程序开发人员无需关心底层数据库的具体类型,只需使用中间件提供的标准接口进行数据库操作,从而降低了开发难度和成本,提高了代码的可移植性。
  • 数据路由与分发:在分布式数据库环境中,数据库中间件可以根据一定的规则将用户的请求路由到合适的数据库节点上。例如,根据数据的分片规则将查询请求分发到存储相应数据的节点,实现数据的分布式处理和负载均衡。
  • 数据整合与转换 :当企业中存在多个不同的数据库系统时,数据库中间件可以对来自不同数据库的数据进行整合和转换,将其统一成应用程序能够处理的格式。比如,将不同数据库中的用户信息进行合并和标准化,方便应用程序进行统一管理和分析。
  • 事务管理:数据库中间件提供事务处理功能,确保在分布式环境下的数据库操作满足原子性、一致性、隔离性和持久性(ACID)原则。它可以协调多个数据库节点之间的事务,保证数据的一致性和完整性。例如,在一个涉及多个数据库的订单处理系统中,数据库中间件可以保证订单的创建、库存的扣减等操作要么全部成功,要么全部失败。
  • 监控与管理:数据库中间件具备监控和管理功能,可以实时监控数据库的性能指标(如吞吐量、响应时间、连接数等),并提供相应的管理工具,方便管理员对数据库进行配置、优化和维护。例如,通过中间件可以动态调整数据库的连接池大小,以适应不同的业务负载。

常见类型

  • 读写分离中间件 :主要用于提高数据库的读写性能。它将数据库的读操作和写操作分离,把读请求分发到多个从数据库节点上,而写请求则发送到主数据库节点。这样可以减轻主数据库的负载,充分利用从数据库的资源,提高系统的并发处理能力。例如,MyCat 可以实现 MySQL 数据库的读写分离。
  • 分库分表中间件 :当数据库的数据量和访问量不断增长时,单个数据库无法满足性能需求。分库分表中间件可以将数据分散存储在多个数据库和表中,实现数据的水平和垂直拆分。例如,ShardingSphere 可以对数据库进行灵活的分片操作,将大数据量的数据分散到多个数据库节点上,提高数据库的可扩展性和性能。
  • 分布式事务中间件 :用于解决分布式环境下的事务一致性问题。在分布式系统中,一个业务操作可能涉及多个数据库节点,分布式事务中间件可以协调这些节点之间的事务,保证数据的一致性。例如,Seata 是一个开源的分布式事务中间件,提供了多种分布式事务解决方案,如 AT 模式、TCC 模式等。

应用场景

  • 大型企业应用:在大型企业中,通常存在多个不同类型的数据库系统,用于存储不同业务的数据。数据库中间件可以实现这些数据库之间的集成和统一管理,方便企业进行数据分析和决策。例如,企业的财务系统、人力资源系统和销售系统可能分别使用不同的数据库,通过数据库中间件可以将这些系统的数据进行整合,为企业管理层提供全面的业务信息。
  • 高并发系统:对于高并发的互联网应用,如电商平台、社交网络等,数据库中间件可以通过读写分离、分库分表等技术提高数据库的性能和可扩展性,确保系统在高负载下的稳定运行。例如,在电商的秒杀活动中,数据库中间件可以将大量的读请求分发到多个从数据库节点上,避免主数据库因负载过高而崩溃。
  • 云数据库服务:在云计算环境中,数据库中间件可以为用户提供更加灵活和高效的数据库服务。云服务提供商可以利用数据库中间件实现多租户管理、资源隔离和弹性扩展等功能,满足不同用户的需求。例如,阿里云的 PolarDB 数据库服务就采用了数据库中间件技术,为用户提供高性能、高可用的数据库服务。

三、缓存中间件

缓存中间件是一种位于应用程序和数据源(如数据库、文件系统等)之间的软件组件,其主要作用是临时存储经常访问的数据,以减少对数据源的访问次数,从而提高系统的响应速度、降低数据源的负载,并提升系统的整体性能。以下从多个方面详细介绍缓存中间件:

工作原理

缓存中间件通常基于 "局部性原理" 工作,该原理指出程序在运行过程中,会在一段时间内频繁访问相同或相近的数据。当应用程序发起数据请求时,缓存中间件首先检查请求的数据是否存在于缓存中:

  • 缓存命中:如果数据存在于缓存中,即发生 "缓存命中",缓存中间件会直接将缓存中的数据返回给应用程序,避免了对数据源的访问,大大缩短了数据响应时间。
  • 缓存未命中:如果数据不在缓存中,即 "缓存未命中",缓存中间件会从数据源中获取数据,将其存储到缓存中,然后再将数据返回给应用程序。这样,后续对相同数据的请求就可以直接从缓存中获取。

常见类型

  • 内存缓存中间件 :将数据存储在内存中,由于内存的读写速度极快,因此可以提供非常高的性能。常见的内存缓存中间件有 Redis 和 Memcached。
    • Redis:支持多种数据结构(如字符串、哈希、列表、集合、有序集合等),不仅可以作为简单的键值对缓存,还能实现复杂的数据处理和业务逻辑,如分布式锁、消息队列等。
    • Memcached:是一个简单的分布式内存对象缓存系统,主要用于减轻数据库负载。它将数据以键值对的形式存储在内存中,适用于缓存一些简单的数据,如页面片段、数据库查询结果等。
  • 分布式缓存中间件:用于在分布式系统中实现缓存功能,多个缓存节点通过网络连接组成一个集群,共同存储和管理缓存数据。分布式缓存可以提供更高的可扩展性和可用性,常见的分布式缓存中间件有 Redis Cluster 和 Hazelcast。
  • 磁盘缓存中间件:将数据存储在磁盘上,适用于缓存数据量较大、对读写速度要求相对较低的场景。磁盘缓存可以作为内存缓存的补充,当内存缓存空间不足时,将部分数据存储到磁盘上。例如,一些数据库管理系统会使用磁盘缓存来提高数据的读写性能。

应用场景

  • Web 应用:在 Web 应用中,缓存中间件可以缓存页面片段、静态资源(如 HTML、CSS、JavaScript 文件)和数据库查询结果等。例如,对于一些经常访问的新闻页面,可以将页面内容缓存到 Redis 中,当用户访问该页面时,直接从缓存中获取页面内容,而不需要重新生成页面,从而提高页面的响应速度。
  • 数据库查询加速:对于一些频繁执行的数据库查询操作,可以将查询结果缓存到缓存中间件中。当再次执行相同的查询时,直接从缓存中获取结果,避免了重复的数据库查询操作,减轻了数据库的负载。例如,在电商系统中,商品列表的查询结果可以缓存到 Redis 中,减少对数据库的访问压力。
  • 高并发场景:在高并发场景下,如秒杀活动、抢购活动等,缓存中间件可以作为流量缓冲层,将大量的请求先在缓存中处理,避免直接冲击后端的数据库。例如,在秒杀活动中,将商品的库存信息缓存到 Redis 中,当用户发起抢购请求时,先在 Redis 中进行库存检查和扣减操作,只有当库存足够时才将请求转发到后端的数据库进行处理。

优缺点

  • 优点
    • 提高性能:显著减少了数据的访问时间,提高了系统的响应速度,提升了用户体验。
    • 降低负载:减少了对数据源(如数据库)的访问次数,降低了数据源的负载,延长了数据源的使用寿命。
    • 扩展性强:分布式缓存中间件可以通过添加缓存节点来扩展缓存容量和处理能力,满足不断增长的业务需求。
  • 缺点
    • 数据一致性问题:由于缓存中的数据是数据源的副本,当数据源中的数据发生变化时,需要及时更新缓存中的数据,否则会导致数据不一致的问题。解决数据一致性问题需要额外的处理逻辑,增加了系统的复杂性。
    • 缓存穿透、击穿和雪崩问题:缓存穿透是指大量请求访问不存在于缓存和数据源中的数据,导致请求直接穿透缓存访问数据源;缓存击穿是指某个热点数据在缓存中过期,大量请求同时访问该数据,导致请求直接访问数据源;缓存雪崩是指缓存中大量的数据同时过期,导致大量请求直接访问数据源,造成数据源压力过大甚至崩溃。需要采取相应的措施来预防和解决这些问题。

四、消息中间件

消息中间件是一种在分布式系统中用于消息传递的软件组件,它在不同的应用程序、进程或服务之间起到桥梁的作用,负责消息的发送、接收和管理。以下从多个方面详细介绍消息中间件:

基本概念与原理

  • 概念:消息中间件以消息队列(Message Queue)为核心,发送者(生产者)将消息发送到队列中,接收者(消费者)从队列中获取消息进行处理。消息可以是文本、JSON 数据、二进制文件等各种格式,它封装了业务数据和相关的控制信息。
  • 原理:其工作原理基于异步通信机制。生产者将消息发送到消息中间件后,不需要等待消费者处理消息,就可以继续执行后续的操作。消费者则可以根据自身的处理能力从队列中获取消息,实现了生产者和消费者之间的解耦。同时,消息中间件通常会提供消息的持久化、确认机制等,以确保消息的可靠传递。

主要功能

  • 异步通信:允许不同的组件或服务之间进行异步消息传递,提高系统的并发处理能力和响应速度。例如,在一个电商系统中,用户下单后,订单服务可以将订单消息发送到消息中间件,然后立即返回响应给用户,而后续的库存扣减、物流通知等操作可以由其他服务异步处理。
  • 解耦:将生产者和消费者分离,使得它们可以独立地进行开发、部署和扩展。生产者不需要知道消费者的具体信息,只需要将消息发送到指定的队列;消费者也不需要关心消息的来源,只需要从队列中获取消息进行处理。这样,当一个服务发生变化时,不会直接影响到其他服务,提高了系统的可维护性和灵活性。
  • 流量削峰:在高并发场景下,消息中间件可以作为缓冲队列,将大量的请求消息暂存到队列中,然后由消费者按照一定的速率进行处理,避免系统因瞬间的高流量而崩溃。例如,在秒杀活动中,大量用户的抢购请求可以先发送到消息中间件的队列中,然后由库存服务按照一定的速率从队列中取出请求进行处理。
  • 消息重试和补偿:当消息处理失败时,消息中间件可以提供消息重试机制,自动重新发送消息给消费者进行处理。如果多次重试仍然失败,还可以触发补偿机制,进行相应的回滚操作,保证数据的一致性。
  • 消息排序和分组:某些消息中间件支持消息的排序和分组功能。例如,按照消息的发送顺序进行排序,或者将相关的消息分组,确保同一组的消息被同一个消费者处理,满足特定业务场景的需求。

常见类型

  • RabbitMQ:基于 AMQP(高级消息队列协议)实现,具有高度的灵活性和可扩展性。它支持多种消息传递模式,如发布 / 订阅、队列模式、路由模式、主题模式等,提供了丰富的插件和管理界面,适用于各种规模的企业应用。
  • Kafka:最初由 LinkedIn 开发,后来成为 Apache 开源项目。Kafka 具有高吞吐量、低延迟、可持久化、分布式等特点,适用于处理大规模的实时数据流,如日志收集、实时监控、流式计算等场景。
  • ActiveMQ:是 Apache 旗下的一个老牌消息中间件,支持多种消息协议(如 AMQP、STOMP、MQTT 等),提供了丰富的企业级特性,如事务处理、消息持久化、集群等,广泛应用于企业内部的系统集成和消息通信。
  • RocketMQ:由阿里巴巴开源的分布式消息中间件,具有高性能、高可用性、可伸缩性等特点。RocketMQ 支持顺序消息、事务消息等特殊类型的消息,在电商、金融等领域有广泛的应用。

应用场景

  • 系统集成:在企业级应用中,不同的系统(如 ERP、CRM、OA 等)之间需要进行数据交互和业务协同。消息中间件可以作为系统集成的桥梁,实现不同系统之间的异步通信和数据共享。
  • 异步处理:对于一些处理时间较长的任务,如文件处理、数据分析等,可以使用消息中间件将任务异步化。生产者将任务消息发送到队列中,消费者在后台异步处理这些任务,提高系统的响应速度和并发处理能力。
  • 日志收集和分析:在分布式系统中,各个服务会产生大量的日志信息。使用消息中间件可以将这些日志信息收集到一个中心节点进行统一处理和分析,帮助运维人员及时发现系统问题和进行性能优化。
  • 分布式事务:在分布式系统中,实现事务的一致性是一个挑战。消息中间件可以结合业务逻辑,实现最终一致性的分布式事务解决方案,确保数据在多个服务之间的一致性。

五、服务器中间件

应用服务器中间件是位于操作系统、数据库和应用程序之间的一类软件,它为企业级应用的开发、部署和运行提供了一个可靠、高效且可扩展的环境。以下从多个方面详细介绍应用服务器中间件:

⭐主要功能

  • 提供运行环境:应用服务器中间件为应用程序提供了一个运行平台,负责管理应用程序的生命周期,包括加载、启动、监控和停止应用程序。它还提供了必要的系统资源,如内存、线程池等,确保应用程序能够稳定运行。
  • 请求处理与分发:接收客户端的请求,并根据一定的规则将请求分发到相应的应用程序组件进行处理。例如,在一个 Web 应用中,应用服务器中间件可以根据请求的 URL 将请求路由到不同的 Servlet 或 JSP 页面进行处理。
  • 事务管理:保证在分布式环境下的数据库操作满足原子性、一致性、隔离性和持久性(ACID)原则。当一个业务操作涉及多个数据库或服务时,应用服务器中间件可以协调这些操作,确保要么全部成功,要么全部失败,从而保证数据的一致性。
  • 安全管理:提供安全认证、授权和数据加密等功能,保护应用程序和数据的安全。例如,对用户进行身份验证,确保只有合法的用户才能访问应用程序;对敏感数据进行加密传输,防止数据在传输过程中被窃取或篡改。
  • 资源管理:管理应用程序所需的各种资源,如数据库连接池、线程池、缓存等。通过资源池技术,应用服务器中间件可以提高资源的利用率,减少资源的创建和销毁开销,从而提高应用程序的性能。

常见类型

  • Web 应用服务器 :主要用于处理 Web 应用程序的请求,提供 HTTP 服务。常见的 Web 应用服务器有 Apache Tomcat、Jetty 等。它们通常支持 Servlet、JSP 等 Web 技术,能够快速响应客户端的 HTTP 请求,将动态生成的页面返回给客户端。
  • 企业级应用服务器 :功能更为强大,提供了全面的企业级服务,如 EJB(Enterprise JavaBeans)容器、消息队列、分布式事务管理等。常见的企业级应用服务器有 Oracle WebLogic Server、IBM WebSphere Application Server 等。这些服务器适用于大型企业级应用的开发和部署,能够处理复杂的业务逻辑和高并发的请求。
  • 轻量级应用服务器:具有体积小、启动速度快、配置简单等特点,适用于开发和部署小型应用程序或作为开发环境。例如,Spring Boot 内嵌的 Tomcat 或 Jetty 服务器,开发者可以快速搭建一个 Web 应用,而无需进行复杂的服务器配置。

应用场景

  • 企业资源规划(ERP)系统:ERP 系统涉及企业的各个业务环节,如财务、采购、销售、生产等,需要处理大量的数据和复杂的业务逻辑。应用服务器中间件可以为 ERP 系统提供稳定的运行环境,实现数据的集中管理和业务流程的自动化。
  • 客户关系管理(CRM)系统:CRM 系统用于管理企业与客户之间的关系,包括客户信息管理、销售机会跟踪、客户服务等功能。应用服务器中间件可以支持 CRM 系统的高并发访问,确保系统的响应速度和数据的安全性。
  • 电子商务平台:电子商务平台需要处理大量的用户请求,如商品展示、购物车管理、订单处理等。应用服务器中间件可以通过负载均衡、缓存等技术提高平台的性能和可用性,保证用户在高并发情况下能够顺利购物。
  • 金融交易系统:金融交易系统对数据的一致性和安全性要求极高,同时需要处理大量的实时交易。应用服务器中间件可以提供严格的事务管理和安全机制,确保交易的准确性和可靠性。

优势

  • 提高开发效率:应用服务器中间件提供了丰富的 API 和开发框架,开发者可以利用这些工具快速开发应用程序,减少了开发时间和工作量。
  • 增强系统的可维护性:通过将业务逻辑和系统管理分离,应用服务器中间件使得应用程序的结构更加清晰,便于维护和升级。当业务需求发生变化时,只需要修改相应的应用程序组件,而不会影响到整个系统的运行。
  • 提升系统的性能和可用性:应用服务器中间件采用了多种技术来提高系统的性能和可用性,如负载均衡、集群、缓存等。这些技术可以有效地分担系统的负载,提高系统的响应速度和容错能力,确保系统在高并发情况下的稳定运行。

六、交易中间件

交易中间件是一种在分布式系统中,用于保障交易处理的完整性、一致性、可靠性和高效性的软件中间件。它在金融、电信、电商等众多对交易处理有严格要求的领域发挥着关键作用。以下从多个方面详细介绍交易中间件:

主要功能

  • 事务管理
    • 原子性保障 :确保一个交易中的所有操作要么全部成功执行,要么全部失败回滚。例如在银行转账交易中,从转出账户扣款和向转入账户入账这两个操作必须作为一个整体,要么都完成,要么都不发生,避免出现部分操作成功而导致的数据不一致问题。
    • 一致性维护 :保证交易前后系统的数据状态符合业务规则和约束条件。比如在库存管理系统中,商品的销售交易完成后,库存数量的减少必须与销售数量一致。
    • 隔离性实现 :多个并发交易之间相互隔离,一个交易的执行不会受到其他交易的干扰。不同用户同时进行的转账交易不会相互影响各自的操作结果。
    • 持久性保证 :一旦交易成功提交,其结果将永久保存,即使系统出现故障也不会丢失。如在电商平台完成订单支付后,支付记录会被持久化存储。
  • 通信管理
    • 提供标准接口 :为不同的应用程序提供统一的通信接口,屏蔽底层网络通信的复杂性。应用程序只需调用中间件提供的接口,无需关心具体的网络协议和通信细节。
    • 支持多种通信协议:能够支持 TCP/IP、HTTP 等多种通信协议,以适应不同的网络环境和应用需求。
    • 实现跨平台通信:允许运行在不同操作系统和硬件平台上的应用程序进行通信和交互,促进了分布式系统的集成和协同工作。
  • 负载均衡
    • 合理分配请求 :根据各个服务器的负载情况,将交易请求均匀地分配到多个服务器上,避免某些服务器过载而其他服务器闲置,提高系统的整体处理能力和响应速度。
    • 动态调整策略:实时监测服务器的性能指标,如 CPU 使用率、内存使用率等,并根据这些指标动态调整负载分配策略,确保系统在不同负载情况下都能高效运行。
  • 错误处理与恢复
    • 错误检测:实时监测交易处理过程中的各种错误,如网络故障、数据库连接失败等,并及时采取相应的措施。
    • 故障恢复:当出现错误时,能够自动进行故障恢复,如重新连接数据库、重试失败的交易等,确保交易的连续性和可靠性。

常见类型

  • Tuxedo:是一种经典的交易中间件,具有高性能、高可靠性和强大的事务处理能力,广泛应用于金融、电信等行业的关键业务系统。它提供了丰富的开发工具和管理功能,能够支持大规模的分布式交易处理。
  • 国产交易中间件:近年来,国内也涌现出了一些优秀的交易中间件产品,如东方通的 TongEASY 等。这些国产中间件在性能、功能和可靠性方面不断提升,并且更贴合国内用户的需求和使用习惯。

应用场景

  • 金融行业
    • 银行核心业务系统:用于处理各种银行业务交易,如账户管理、转账汇款、信用卡交易等,确保交易的准确、及时和安全。
    • 证券交易系统:支持股票、债券等证券的买卖交易,保证交易的实时性和一致性,同时处理大量的并发交易请求。
  • 电信行业
    • 计费系统:对用户的通话、短信、流量等使用情况进行计费处理,确保计费的准确性和公正性。
    • 客户服务系统:处理用户的开户、销户、套餐变更等业务交易,提高客户服务的效率和质量。
  • 电子商务行业
    • 订单处理系统:负责处理用户的订单提交、支付、发货等交易流程,保证订单信息的完整性和一致性。
    • 库存管理系统:在商品销售过程中,实时更新库存数量,确保库存数据的准确性和及时性。

优势

  • 提高开发效率:交易中间件提供了丰富的功能和工具,开发者可以利用这些资源快速开发交易处理应用程序,减少了开发时间和工作量。
  • 增强系统的可靠性和稳定性:通过提供事务管理、错误处理和恢复等功能,交易中间件能够有效地保障交易的可靠性和系统的稳定性,减少因故障导致的交易失败和数据丢失。
  • 降低系统成本:通过负载均衡和资源管理等功能,交易中间件可以提高系统的资源利用率,降低硬件和软件的采购成本,同时减少系统的维护和管理成本。

七、网卡(信号转换作用 链路和物理的转换)

主要功能是实现计算机与局域网的连接 ,使计算机能够在网络中进行数据的发送和接收。它负责将计算机内部的数字信号转换为适合在网络介质(如网线、无线信号)上传输的信号,以及将接收到的网络信号转换为计算机能够识别的数字信号。例如,在办公室局域网中,计算机通过网卡连接到交换机,从而实现与其他计算机的数据共享和通信

当计算机要发送数据时,网卡从计算机内存中读取数据,按照网络协议的要求对数据进行封装,添加源地址、目的地址等控制信息,形成数据包。然后将数据包转换为相应的电信号(有线网卡)或无线信号(无线网卡),通过网络介质发送出去。接收数据时则进行相反的操作,将接收到的信号转换为数字数据并传送给计算机。

网卡主要工作在网络七层协议(OSI 模型)的数据链路层,也涉及物理层

数据链路层

  • 帧封装与解封装:数据链路层的主要功能之一是将网络层传来的数据包封装成帧。网卡负责在发送数据时,把从计算机内存中获取的网络层数据包添加数据链路层的首部和尾部信息,形成帧。首部包含源 MAC 地址(网卡的物理地址)和目的 MAC 地址等信息,尾部包含帧校验序列(FCS)用于差错检测。例如,当你在局域网内的一台计算机向另一台计算机发送文件时,网卡会把文件数据封装成一个个帧,以便在局域网中传输。在接收数据时,网卡会对收到的帧进行解封装,去除数据链路层的首部和尾部,将网络层的数据包提取出来并交给上层处理。
  • MAC 地址识别:每块网卡都有一个全球唯一的 MAC 地址,它是数据链路层用于识别网络设备的标识。网卡通过识别帧首部中的目的 MAC 地址,判断该帧是否是发给自己的。如果目的 MAC 地址与自己的 MAC 地址相符,网卡就会接收该帧;否则,网卡会忽略该帧。这使得数据能够准确地传输到目标设备。

物理层

  • 信号转换与传输 :物理层负责在物理介质上传输比特流。网卡需要将计算机内部的数字信号转换为适合在物理介质(如网线、光纤、无线信号)上传输的信号。对于有线网卡,它将数字信号转换为电信号(如以太网中使用的差分信号)通过网线传输;对于无线网卡,它将数字信号转换为无线电磁波信号进行传输。同时,网卡也负责接收物理介质上的信号,并将其转换为计算机能够处理的数字信号。
  • 物理连接管理:网卡需要管理与物理介质的连接,例如检测网线是否插入、信号强度是否正常等。在以太网中,网卡通过自动协商机制与对端设备(如交换机)协商传输速率、双工模式等物理层参数,以确保数据的可靠传输。

网卡分类

  • 按网络接口类型
    • 以太网卡:使用以太网协议进行数据传输,是目前最常见的网卡类型,通常通过 RJ - 45 接口连接网线。
    • 无线网卡 :通过无线信号与无线路由器或无线接入点进行通信,摆脱了网线的束缚,方便移动设备接入网络。常见的无线网卡标准有 IEEE 802.11a/b/g/n/ac/ax 等。
    • 光纤网卡:使用光纤作为传输介质,具有传输速率高、抗干扰能力强等优点,常用于高速网络骨干链路和数据中心。

八、以太网

传统以太网是有线局域网

  • 技术定义与发展 :以太网最初由施乐公司在 20 世纪 70 年代开发,后来被 IEEE 标准化为 IEEE 802.3 标准。它主要基于有线传输介质,如同轴电缆、双绞线(常见的网线)和光纤等,是一种在有限区域内将各种计算机、外部设备等互相连接起来组成的计算机通信网络。
  • 典型应用场景:在办公室、学校、数据中心等场所,计算机、服务器、打印机等设备通常通过以太网线连接到交换机或路由器,构成一个有线局域网。例如企业办公网络中,员工的台式机通过网线接入公司的局域网,实现资源共享、文件传输和访问互联网等功能。

存在无线以太网

  • 技术原理与标准 :随着无线网络技术的发展,以太网的概念也扩展到了无线领域。无线以太网基于 IEEE 802.11 标准(也就是常说的 Wi - Fi),它同样采用了以太网的一些基本原理和协议,如载波监听多路访问 / 冲突避免(CSMA/CA)机制来控制网络中的数据传输,以实现无线设备之间的通信和联网。
  • 应用场景:在家庭、商场、酒店等场所,智能手机、平板电脑、笔记本电脑等设备可以通过 Wi - Fi 连接到无线路由器,组成一个无线局域网,这其实也可以看作是以太网在无线环境下的应用。
相关推荐
zhyhgx17 分钟前
【Spring】Spring配置文件
java·服务器·spring boot·后端·spring·配置文件
程序员JerrySUN19 分钟前
每天设计者模式-1:基础面试题
java·linux·运维·服务器·开发语言·python·docker
阿小木的愤怒25 分钟前
Spring监听器Listener
java·spring·监听器·spring监听器
johnrui41 分钟前
java8Optional 使用
java·开发语言
m0_748235951 小时前
SpringBoot:解决前后端请求跨域问题(详细教程)
java·spring boot·后端
LUCIAZZZ1 小时前
简单说一下什么是RPC
java·网络·网络协议·计算机网络·spring cloud·rpc
嘵奇1 小时前
最新版IDEA下载安装教程
java·intellij-idea
s_fox_2 小时前
Nginx Embedded Variables 嵌入式变量解析(4)
java·网络·nginx
Jelena157795857922 小时前
使用Java爬虫获取1688 item_get_company 接口的公司档案信息
java·开发语言·爬虫
数据小小爬虫2 小时前
Jsoup解析商品详情时,如何确保数据准确性?
java·爬虫