当前位置: 首页 > news >正文

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

一、网络通信基础

(一)网络通信的概念

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

(二)常见术语

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

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

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

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

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

二、网络设备与功能

(一)交换机

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

(二)路由器

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

相关文章:

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

一、网络通信基础 (一)网络通信的概念 网络通信是指终端设备之间通过计算机网络进行的信息传递与交流。它类似于现实生活中的物品传递过程:数据(物品)被封装成报文(包裹),通过网络…...

云计算架构学习之Ansible-playbook实战、Ansible-流程控制、Ansible-字典循环-roles角色

一、Ansible-playbook实战 1.Ansible-playbook安装软件 bash #编写yml [rootansible ansible]# cat wget.yml - hosts: backup tasks: - name: Install wget yum: name: wget state: present #检查playbook的语法 [rootansible ansible]…...

《运维工程师如何利用DeepSeek实现智能运维:分级实战指南》

目录 智能运维革命:DeepSeek带来的范式转变DeepSeek核心运维能力全景解析分级实战场景与解决方案 3.1 初级工程师:自动化运维入门3.2 中级工程师:复杂系统诊断与优化3.3 高级工程师:架构级智能运维典型项目案例深度剖析 4.1 金融系统全链路监控体系构建4.2 电商大促资源弹性…...

windows事件倒计时器与提醒组件

widgets 这是桌面组件前端开源组件,作者称:项目还在持续完善中,目前包含键盘演示、抖音热榜、喝水提醒、生日列表、待办事项、倒计时、灵动通知、打工进度等多个组件 有vue编程能力的可以自己做组件 百度网盘 夸克网盘 桌面组件 | Ca…...

Mac OS JAVA_HOME设置

个人博客地址:Mac OS JAVA_HOME设置 | 一张假钞的真实世界 在MacOS上使用DMG文件安装了Jdk8 之后,在默认路径下找不到JDK的HOME路径: $ which java /usr/bin/java $ ls -l /usr/bin/java lrwxr-xr-x 1 root wheel 74 12 6 2015 /usr/b…...

6.3 DBMS的功能和特征

文章目录 DBMS的6大功能DBMS的3个特征DBMS的分类 DBMS的6大功能 DBMS包含数据定义,数据库操作(检索、插入、修改、删除),数据库运行管理(保证多用户环境下正常运行),数据组织、存储、管理&…...

C# ConcurrentQueue 使用详解

总目录 前言 在C#多线程编程中&#xff0c;数据共享如同走钢丝——稍有不慎就会引发竞态条件&#xff08;Race Condition&#xff09;或死锁。传统Queue<T>在并发场景下需要手动加锁&#xff0c;而ConcurrentQueue<T>作为.NET Framework 4.0 引入的线程安全集合&a…...

python脚本文件设置进程优先级(在.py文件中实现)

在 Python 代码中可以直接通过 psutil 模块或 系统调用 来设置进程优先级&#xff0c;无需依赖终端命令。以下是具体方法和示例&#xff1a; 1. 使用 psutil 模块&#xff08;跨平台推荐&#xff09; psutil 是一个跨平台库&#xff0c;支持 Windows、Linux 和 macOS。通过其 …...

基于Django快递物流管理可视化分析系统(完整系统源码+数据库+详细开发文档+万字详细论文+答辩PPT+详细部署教程等资料)

文章目录 基于Django快递物流管理可视化分析系统&#xff08;完整系统源码数据库详细开发文档万字详细论文答辩PPT详细部署教程等资料&#xff09;一、项目概述二、项目说明三、研究意义四、系统设计技术架构 五、功能实现六、完整系统源码数据库详细开发文档万字详细论文答辩P…...

el-table树状表格,默认展开第一个节点的每一层

效果如图 <template><el-table:data"tableData"style"width: 100%":tree-props"{ children: children, hasChildren: hasChildren }":expand-row-keys"expandRowKeys"row-key"id"expand-change"handleExpan…...

【雅思博客05】New Guy in Town

Daily Life ‐ New Guy in Town 原文&#xff1a; A: Oh, I don’t know if you heard, but someone moved into that old house down the road. B: Yeah, I know. I met the owner of the house yesterday as he was moving in. His name is Armand. A: Really? What’s h…...

【Spring详解三】默认标签的解析

三、默认标签的解析 Spring的标签中有 默认标签和 自定义标签&#xff0c;两者的解析有着很大的不同&#xff0c;这次重点说默认标签的解析过程。 DefaultBeanDefinitionDocumentReader.class 默认标签的解析是在 DefaultBeanDefinitionDocumentReader.parseDefaultElement()函…...

Windows 图形显示驱动开发-IoMmu 模型

输入输出内存管理单元 (IOMMU) 是一个硬件组件&#xff0c;它将支持具有 DMA 功能的 I/O 总线连接到系统内存。 它将设备可见的虚拟地址映射到物理地址&#xff0c;使其在虚拟化中很有用。 在 WDDM 2.0 IoMmu 模型中&#xff0c;每个进程都有一个虚拟地址空间&#xff0c;即&a…...

简单易懂,解析Go语言中的Channel管道

Channel 管道 1 初始化 可用var声明nil管道&#xff1b;用make初始化管道&#xff1b; len()&#xff1a; 缓冲区中元素个数&#xff0c; cap()&#xff1a; 缓冲区大小 //变量声明 var a chan int //使用make初始化 b : make(chan int) //不带缓冲区 c : make(chan stri…...

STM32 USB 设备的描述信息作用

在使用 STM32 USB 功能时 usbd_desc.c 文件中定义了一段宏&#xff0c;以下解每段宏的用途。 #define USBD_VID 1155 #define USBD_LANGID_STRING 1033 #define USBD_MANUFACTURER_STRING "STMicroelectronics" #define US…...

Redis字符串常见命令(String)

字符串常见命令&#xff08;String&#xff09; Redis 中的字符串类型是一种非常基础且常用的数据类型&#xff0c;它不仅可以存储任何形式的字符串&#xff08;包括文本数据&#xff09;&#xff0c;还可以对数字字符串进行自增、自减等操作。以下是对 Redis 字符串类型常见命…...

Educational Codeforces Round 174 (Rated for Div. 2)(ABCD)

A. Was there an Array? 翻译&#xff1a; 对于整数数组 ​&#xff0c;我们将其相等特征定义为数组 &#xff0c;其中&#xff0c;如果数组 a 的第 i 个元素等于其两个相邻元素&#xff0c;则 &#xff1b;如果数组 a 的第 i 个元素不等于其至少一个相邻元素&#xff0c;则 …...

基于知识图谱的问答系统:后端Python+Flask,数据库Neo4j,前端Vue3(提供源码)

基于知识图谱的问答系统&#xff1a;后端PythonFlask&#xff0c;数据库Neo4j&#xff0c;前端Vue3 引言 随着人工智能技术的不断发展&#xff0c;知识图谱作为一种结构化的知识表示方式&#xff0c;逐渐成为问答系统的重要组成部分。本文将介绍如何构建一个基于知识图谱的问答…...

面试知识点2

文章目录 1. Linux 与 DockerLinux 基本指令VMware 安装 CentOSDocker 拉取镜像创建容器、部署 Spring Boot 项目 2. 关系型数据库 MySQL数据库语法多表关联查询数据库索引 3. 事务与死锁事务的隔离级别死锁的原因和避免方法 4. 排序算法与数据结构二分查找快速排序常见数据结构…...

Django项目之订单管理part1

一.前言 我们前面把django的常用知识点给讲完了&#xff0c;现在我们开始项目部分&#xff0c;项目是一个订单管理系统&#xff0c;我们同时也会在项目之中也会讲一些前面没有用到的知识点。 项目大概流程如下&#xff1a; 核心的功能模块&#xff1a; 认证模块&#xff0c;用…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板&#xff08;STM32F103RBT6&#xff09;通过I2C驱动ICM20948九轴传感器&#xff0c;实现姿态解算&#xff0c;并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化&#xff0c;适合嵌入式及物联网开发者。在基础驱动上新增…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...