计算机网络(涵盖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次挥手的报文。

相关推荐
23级二本计科8 分钟前
NAT NAPT
运维·服务器·网络
9稳2 小时前
基于单片机的智能楼宇门禁系统设计
网络·单片机·嵌入式硬件
网络安全指导员3 小时前
kali linux 漏洞扫描
linux·运维·开发语言·网络·安全·web安全
写完这行代码打球去4 小时前
为什么大模型网站使用 SSE 而不是 WebSocket?
网络·websocket·网络协议
起床学FPGA5 小时前
wireshark点击快捷无法打开
网络·测试工具·wireshark
Wlq04155 小时前
计算机网络概述
网络·计算机网络
book01216 小时前
简单以太网配置
网络·智能路由器
煲冬瓜的程序猿6 小时前
BGP实验(一)IBGP全互联配置
网络·网络协议
搬码红绿灯6 小时前
计算机网络——路由器
网络·计算机网络·智能路由器
book01216 小时前
静态路由实验
网络·智能路由器