计算机网络(涵盖OSI,TCP/IP,交换机,路由器,局域网)

ops/2025/2/22 17:55:45/

一、网络通信基础

(一)网络通信的概念

网络通信是指终端设备之间通过计算机网络进行的信息传递与交流。它类似于现实生活中的物品传递过程:数据(物品)被封装成报文(包裹),通过网络设备(集散中心)在不同的终端设备(收发点)之间传输。

(二)常见术语

  • 数据载荷:最终需要传递的信息。

  • 报文网络中交换与传输的数据单元。

  • 头部和尾部:在数据载荷前后添加的信息段,用于标识和控制数据传输。

  • 封装与解封装:封装是将数据载荷添加头部和尾部形成报文的过程,而解封装则是获取数据载荷的过程。

  • 网关与路由器:网关提供协议转换和路由选择功能,路由器则根据报文的目的地址选择最优路径进行转发。

二、网络设备与功能

(一)交换机

交换机是距离终端用户最近的网络设备,主要用于终端用户的网络接入和数据帧的交换。它工作在数据链路层,能够有效地隔离广播域,减少网络中的广播流量。

(二)路由器

路由器是网络层设备,负责在不同网络之间转发数据报文。它通过维护路由表来选择最佳路径,实现不同网络之间的通信。路由器还可以隔离广播域,支持广域网接入和网络地址转换(NAT)。

(三)防火墙

防火墙是一种网络安全设备,用于控制两个网络之间的安全通信。它通过监测和限制数据流,保护网络内部的信息安全。防火墙的主要功能包括:

  • 隔离不同安全级别的网络

  • 实现访问控制和用户身份认证。

  • 提供数据加密和虚拟专用网(VPN)功能。

  • 执行网络地址转换(NAT)。

(四)无线设备

无线设备包括无线控制器(AC)、胖AP(Fat Access Point)和瘦AP(Fit Access Point)。它们通过Wi-Fi信号实现有线终端和无线终端之间的通信,是现代网络中不可或缺的一部分。

三、网络类型与拓扑结构

(一)网络类型

根据地理覆盖范围,网络可以分为:

  • 局域网(LAN):覆盖范围较小,通常在几千米以内,如公司办公网络或家庭网络

  • 城域网(MAN):覆盖范围为一个城市,如宽带城域网或教育城域网。

  • 广域网(WAN):覆盖范围广泛,连接多个城市甚至国家,如Internet。

(二)网络拓扑结构

网络拓扑是指网络设备之间的连接方式。常见的拓扑结构包括:

  • 星型拓扑:所有设备都连接到一个中心节点,易于管理和扩展。

  • 总线型拓扑:所有设备共享一条通信线路,成本低但可靠性较差。

  • 环型拓扑:设备按环形连接,数据沿一个方向传输。

  • 树型拓扑:类似星型拓扑的扩展,适用于大规模网络

  • 网状拓扑:设备之间有多条连接路径,可靠性高但成本高。

四、OSI与TCP/IP协议模型

(一)OSI七层模型

  1. 物理层:负责比特流在物理介质上的传输。

  2. 数据链路层:负责组帧、物理编址和差错控制。

  3. 网络:负责数据包的寻径和转发。

  4. 传输层:建立端到端的连接,确保数据可靠传输。

  5. 会话层:管理通信双方的会话。

  6. 表示层:负责数据格式的转换。

  7. 应用层:为应用程序提供接口,如HTTP、FTP等。

OSI七层模型中,应用层、表示层和会话层直接提供用户所需的功能,属于用户层;传输层和网络层负责数据的端到端传输和路由,属于操作系统层;链路层和物理层处理数据的物理传输和设备间的通信,属于驱动与硬件层。

(二)TCP/IP模型

TCP/IP模型是互联网的主流协议模型,它简化了OSI模型,分为四层:

  1. 链路层:对应OSI模型中的物理层和数据链路层。

  2. 网络:主要协议为IP,负责数据包的转发。

  3. 传输层:主要协议为TCP和UDP,负责端到端的通信。

  4. 应用层:提供各种网络服务,如HTTP、FTP、SMTP等。

TCP连接的建立与关闭

三次握手

TCP连接建立过程中,客户端和服务器通过三次报文交换来确认彼此的接收和发送能力,使用Wireshark抓包分析可以清晰地观察到这个过程。

  1. 客户端发送SYN报文:客户端向服务器发送一个SYN报文,表示请求建立连接,Wireshark会显示一个带有SYN标志位的TCP报文,序列号为客户端的初始序列号(ISN)。

  2. 服务器响应SYN-ACK报文:服务器接收到SYN报文后,回复一个SYN-ACK报文,表示接受连接请求,同时确认客户端的SYN报文。Wireshark中,这个报文将包含SYN和ACK标志位,ACK确认号为客户端的序列号加1,服务器还会生成自己的初始序列号(ISN)。

  3. 客户端发送ACK报文:客户端收到服务器的SYN-ACK报文后,发送一个带ACK标志位的报文,确认服务器的响应并完成连接建立。Wireshark中会显示客户端发出的ACK报文,确认号为服务器的ISN加1,连接正式建立。

四次挥手

由于TCP半双工,半关闭的特性,双方都需要独立的确认自己已经完成了数据的发送且双方都不能立刻关闭接收通道,所以需要四次挥手

  • 第一次挥手: 客户端发送FIN报文表示没有数据要发送,此时,客户端进入半关闭状态,仍然可以接收服务器发送的剩余数据;

  • 第二次挥手: 服务器收到客户端的FIN报文后,发送ACK报文确认客户端的关闭请求,此时,服务器仍然可以继续向客户端发送数据;

  • 第三次挥手:当服务器的发送数据也完成时,会发送FIN报文,此时服务器进入半关闭状态,仍然可以接收客户端的数据。

  • 第四次挥手: 客户端收到服务器的FIN报文后,发送一个ACK报文确认服务器的关闭请求。此时,客户端的接收方向也关闭,连接被完全断开。

为什么不能合并为三次挥手?

如果服务器在收到客户端的FIN报文后没有数据要发送,理论上,可以通过合并第二次和第三次挥手为三次进行关闭。然而,在TCP协议的标准操作中,即使服务端没有数据要发送,也必须遵循四次挥手的过程。这是因为TCP协议设计上强调可靠性和连接状态的准确同步。

原因:确保关闭请求的独立性,即使服务端没有数据要发送,它仍然需要先确认客户端的关闭请求(发送ACK报文),然后才能开始自己的关闭过程(发送FIN报文)

在实际验证中,为了模拟“服务端有剩余数据”的场景,我通过在服务端代码中加入sleep(睡眠)操作,故意延迟发送数据。在服务端完成初步的响应后,继续发送剩余数据。与“无剩余数据”对比,都抓取到了4次挥手的报文。


http://www.ppmy.cn/ops/159775.html

相关文章

第三章:组件开发实战 - 第五节 - Tailwind CSS 响应式导航栏实现

导航栏是几乎所有网站都必备的组件,一个好的响应式导航栏需要在不同设备上都能提供出色的用户体验。本节将介绍如何使用 Tailwind CSS 实现功能完善的响应式导航栏。 基础导航栏结构 桌面端导航 <nav class="bg-white shadow"><div class

github用户名密码登陆失效了

问题&#xff1a; git push突然推代码需要登陆&#xff0c;但是用户名和密码正确输入后&#xff0c;却提示403 git push# Username for https://github.com: **** #Password for https://gyp-programmergithub.com: #remote: Permission to gyp-programmer/my-app.git denie…

ssm121基于ssm的开放式教学评价管理系统+vue(源码+包运行+LW+技术指导)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

Day48(补)【AI思考】-设计模式三大类型统一区分与记忆指南

文章目录 设计模式三大类型统一区分与记忆指南**一、创建型模式&#xff08;对象如何生&#xff1f;&#xff09;****二、结构型模式&#xff08;对象如何组&#xff1f;&#xff09;****三、行为型模式&#xff08;对象如何动&#xff1f;&#xff09;****1. 行为型类模式&…

探秘 DeepSeek R1 模型:跨越多领域的科技奇迹,引领智能应用新浪潮

DeepSeek R1 模型功能强大&#xff0c;应用广泛。在自然语言处理、计算机视觉、推荐系统和医疗等领域都能发挥作用。本文介绍了其在各领域的应用场景和代码示例&#xff0c;助你深入了解它。 目录 ​编辑 一、本篇背景&#xff1a; 二、DeepSeek R1 模型概述&#xff1a; …

前端与后端的对接事宜、注意事项

前端与后端的对接事宜、注意事项 一、对接核心流程(完整生命周期) #mermaid-svg-6yzij6OD8DKqiMLD {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6yzij6OD8DKqiMLD .error-icon{fill:#552222;}#mermaid-svg-6yzi…

Linux 上安装 PostgreSQL

Linux 上安装 PostgreSQL PostgreSQL 是一款功能强大的开源对象关系型数据库系统,广泛用于各种规模的数据存储。本文将详细介绍在 Linux 系统上安装 PostgreSQL 的步骤,包括准备工作、安装过程和配置方法。 准备工作 在开始安装 PostgreSQL 之前,请确保您的 Linux 系统满…

通过VSCode直接连接使用 GPT的编程助手

GPT的编程助手在VSC上可以直接使用 选择相应的版本都可以正常使用。每个月可以使用40条&#xff0c;超过限制要付费。 如下图对应的4o和claude3.5等模型都可以使用。VSC直接连接即可。 配置步骤如下&#xff1a; 安装VSCODE 直接&#xff0c;官网下载就行 https://code.vis…