LwIP入门实战 — 1 计算机网络简述

news2024/11/24 11:11:45

目录

1 计算机网络类别

2 常用网络协议与协议栈

2.1 常用网络协议

2.2 常用TCP/IP协议栈

3 网络协议的分层模型

4 协议层报文间的封装与拆封

5 WAN接口和LAN接口


1 计算机网络类别

广域网WAN(Wide Area Network):广域网的作用范围通常为几十到几千公里,因而有时也称为远程网(long haul network)。广域网是互联网的核心部分,其任务是长距离(例如,跨越不同的国家)运送主机所发送的数据。

城域网MAN(Metropolitan Area Network) :城域网的作用范围一般是一个城市,可跨越几个街区甚至整个城市,其作用距离约为5~50km。城域网可以为一个或几个单位所拥有,也可以是一种公用设施,用来将多个局域网进行互连。目前很多城域网采用的是以太网技术,因此有时也常并入局域网的范围进行讨论。

局域网LAN(Local Area Network):通信线路相连(速率通常在10Mbits以上),但地理上则局限在较小的范围(如1km 左右)在局域网发展的初期,一个学校或工厂往往只拥有一个局域网,但现在局域网己非常广泛地使用,学校或企业大都拥有许多个互连的局域网(这样的网络常称为校园网或企业网)。

个人区域网PAN(PcrsonalArea Network) :个人区域网就是在个人工作的地方把属于个人使用的电子设备(如便携式电脑等)用无线技术连接起来的网络,因此也常称为无线个人区域网 WPAN (Wireless PAN),其范围很小,大约在10m左右。

图1 计算机网络类别 

2 常用网络协议与协议栈

2.1 常用网络协议

互联网通信所要遵守的众多协议,被统称为TCP/IP。TCP/IP是一个协议族,包含众多协议。对于网络应用开发人员,可能听到得更多的是其中的应用层协议,比如HTTP(Hyper TextTransfer Protocol,超文本传输协议)、FTP(File TransferProtocol,文件传输协议)、MQTT(Message Queuing TelemetryTransport,消息队列遥测传输)等。

HTTP的应用最为广泛。比如大家日常使用计算机时的一个常规操作:打开计算机,再打开浏览器,输入网址进入网页就开启了HTTP通信。

FTP是工作在应用层的网络协议,使得主机间可以共享文件,用于在两台设备之间传输文件(双向传输)。它也是一个客户端-服务端框架系统。用户可以通过一个支持FTP的客户端程序,连接到远程主机上的FTP服务端程序。

MQTT和COAP等轻量级、异步的通信协议便得到了物联网设备开发商的青睐,尤其是MQTT。MQTT在物联网以外的其他领域也得到了广泛的应用,比如许多公司在制作手机APP时,会使用MQTT来实现消息推送、即时聊天等功能。

图2 常用网络协议

2.2 常用TCP/IP协议栈

BSD协议栈:BSD协议栈是许多现代商业协议栈的起点,许多专业TCP/IP栈(如VxWorks内嵌的TCP/IP栈)都是基于BSD协议栈派生的。

uC/IP:uC/IP是由Guy Lancaster编写的一套基于uC/OS且开源的TCP/IP协议栈,也可移植到其他操作系统。

LwIP:LwIP(Light Weight IP)是瑞士计算机科学院的Adam Dunkels等开发的一套用于嵌入式系统的开源TCP/IP协议栈。LwIP的设计重点是在保持TCP协议主要功能的基础上减少对RAM的占用,一般只需要几十K的RAM和40K左右的ROM就可以运行,适合在低端嵌入式系统中使用。

uIP:uIP是专门为8位和16位控制器设计的一个非常小的TCP/IP栈。完全用C编写,因此可移植到各种不同的结构和操作系统上,一个编译过的栈可以在几KB ROM或几百字节RAM中运行。

3 网络协议的分层模型

TCP/IP是众多网络协议的集合,包括ARP、IP、ICMP、UDP、TCP、DNS、HTTP、FTP、MQTT等。这些协议按照功能,可以划分为几个不同的层次,如图3所示。

图3 TCP/IP的分层

TCP/IP协议栈中不同协议所完成的功能是不一样的,某些协议的实现要依赖于其他协议,依据这种依赖关系,可以将协议栈分层。在图1-1中,低层协议为相邻的上层协议提供服务,是上层协议得以实现的基础。

物理层,规定了传输信号所需要的物理电平、介质特征。

数据链路层,规定了数据帧能被网卡接收的条件,最常见的方式是利用网卡的MAC地址,发送方会在欲发送的数据帧的首部加上接收方网卡的MAC地址信息,接收方只有监听到属于自己的MAC地址信息后,才会去接收并处理该数据。

网络层,规定了主机的网络地址该如何定义,以及如何在网络地址和MAC地址之间进行映射,即ARP,还实现了数据包在主机之间的传递,而一台主机内部可能运行着多个网络程序。

传输层,可以区分数据包是属于哪一个应用程序的,可以说传输层实现了数据包端到端的传递。另外,数据包在传输过程中可能会出现丢包、乱序和重复的现象,网络层并没有提供应对这些错误的机制,而传输层可以解决这些问题,如TCP。

应用层,以下的各层完成了数据的传递,应用层则决定了你如何应用和处理这些数据。之所以会有许多应用层协议,是因为互联网中传递的数据种类很多、差异很大、应用场景十分多样。

4 协议层报文间的封装与拆封

在计算机网络中,协议层报文间的封装与拆封是数据在不同网络层之间传输的关键过程,涉及到数据的封装成帧、传输、以及在目标主机上拆封成原始数据。过程如下:

报文封装:

  1. 应用层:用户的数据首先在应用层生成,如HTTP请求、FTP命令等。

  2. 传输层封装:数据从应用层传递到传输层,例如TCP或UDP。传输层为数据添加了端口信息,创建了TCP段或UDP数据报。

  3. 网络层封装:传输层的数据被传递到网络层,如IP协议。网络层添加了源IP地址和目的IP地址,创建了IP数据报。

  4. 链路层封装:IP数据报被传递到链路层,如以太网。链路层添加了以太网头部和尾部,包括源MAC地址、目的MAC地址、以及错误检测信息等,形成以太网帧。

  5. 物理层传输:链路层的以太网帧通过物理媒介(如电缆、光纤、无线电波等)传输到目的地。

报文拆封:

  1. 链路层拆封:当以太网帧到达目的地后,链路层首先检查帧的完整性,然后去除以太网头部和尾部。

  2. 网络层拆封:链路层将去除链路层信息的数据传递给网络层,网络层检查IP数据报,并根据目的IP地址确定是否是为本地主机。如果是,则去除IP头部。

  3. 传输层拆封:网络层将数据传递给传输层,传输层去除TCP或UDP头部,恢复成原始的段或数据报。

  4. 应用层拆封:传输层将数据传递给应用层,应用层根据端口信息将数据传递给正确的应用程序,完成数据的最终拆封。

图4 TCP/IP协议栈各层的报文封装与拆封

5 WAN接口和LAN接口

WAN接口,即广域网接口,是连接到广域网(WAN)的设备或网络接口,它允许数据在不同地理位置的网络之间传输。WAN接口通常用于连接企业网络到互联网或进行远程分支机构之间的通信。它支持多种通信协议,如IP、帧中继、ATM等,以适应不同的数据传输需求。WAN接口可以是物理的,如通过路由器或调制解调器连接,也可以是虚拟的,如通过VPN(虚拟私人网络)实现的连接。

LAN口,即局域网接口,是网络设备上用于连接局域网内计算机、打印机、路由器等设备的标准以太网端口。它通常采用RJ-45物理连接器,支持不同速率的以太网通信,如10Mbps、100Mbps、1Gbps等。LAN口通过自动协商技术与连接设备匹配速率和双工模式,实现高效的数据传输。此外,LAN口还可以通过路由器或网关连接到广域网,如互联网,扩展网络的覆盖范围和功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1953303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅析JWT原理及牛客出现过的相关面试题

原文链接:https://kixuan.github.io/posts/f568/ 对jwt总是一知半解,而且项目打算写个关于JWT登录的点,所以总结关于JWT的知识及网上面试考察过的点 参考资料: Cookie、Session、Token、JWT_通俗地讲就是验证当前用户的身份,证明-…

记录|使用HslCommunication库进行写入Real数据的坑

项目场景: 现在已经通过HslCommunication连接上了PLC,需要对DB1.DBD10的位置处进行数据写入。 问题描述 但是进行将12.2写入指定位置DB1.DBD10时,发现无法从博图中实时检测到数据的写入。 下面是我当时错误的数据写入方法:【主…

Maven实战(一)- Maven安装与配置

Maven实战(一)- Maven安装与配置 文章目录 Maven实战(一)- Maven安装与配置1.下载安装包2.配置环境变量。3.安装目录分析4.设置HTTP代理5.镜像 前言: ​ 最近博主看完了《Maven实战》(许晓斌著)…

iOS collectionView 滑动出现空白

iOS collectionView 滑动出现空白 一个很常见的 banner 轮播,滑动的时候,有时候会出现空白,检查了下,发现代码没什么问题,上网查了也没啥结果,最后的解决方法是自定义layout解决 interface TMLoopViewLayo…

从0到1,AI我来了- (3)AI图片识别的理论知识-I

从上篇文章,我们分析通过Pytorch 封装的各种方法,解读了一遍图片识别训练到测试的流程。 这篇我们从理论上,理解下,图片是如何被识别的? 核心需要理解的内容有? 一张图片,如何被计算机读懂&a…

探索 Python 异步编程的利器:gevent 库

探索 Python 异步编程的利器:gevent 库 第一部分:背景介绍 在现代的软件开发中,异步编程模式因其在处理 I/O 密集型任务时的高效率而越来越受到重视。Python,作为一种动态、解释型的高级编程语言,其原生的异步编程支持…

如何判断IP是否属于网段10.134.208.0/20

首先想要判断IP是否属于网段,我们首先需要了解IP地址的组成结构: 网络IP地址的划分主要包括网络部分(网络地址)和主机部分,以及一个特殊的地址——广播地址。以下是详细的划分说明: 一、IP地址的组成 每…

中国式浪漫的源头之一:《楚辞》

文章目录 引言亦余心之所善兮,虽九死其犹未悔。惟草木之零落兮,恐美人之迟暮。沧浪之水清兮,可以濯吾缨。悲莫悲兮生别离,乐莫乐兮新相知。苟余心之端直兮,虽僻远其何伤。孰无施而有报兮,孰不实而有获?尺有所短,寸有所长。引言 楚辞中表里俱佳的文字,很有启发性。楚辞…

【学一点儿前端】本地或jenkins打包报错:getaddrinfo ENOTFOUND registry.nlark.com.

问题 今天jenkins打包一个项目,发现报错了 error An unexpected error occurred: "https://registry.nlark.com/xxxxxxxxxx.tgz: getaddrinfo ENOTFOUND registry.nlark.com". 先写解决方案 把yarn.lock文件里面的registry.nlark.com替换为registry.npmmi…

linux驱动--中断

中断号和中断的申请 中断号的添加-----定义设备节点,描述当前设备 通过设备树文件获取 /dts/xxxx.dts文件中进行设备的设置 在dts设备树文件中进行设备的定义,包括继承的设备,中断号的设置 需要对我们的dts设备树文件进行编译&#xff0…

Flink Doirs Connector 常见问题:Doris目前不支持流读

常见问题 Doris Source 在数据读取完成后,流为什么就结束了? 目前 Doris Source 是有界流,不支持 CDC 方式读取。 问题:对于 Flink Doris DataStream,Flink 想要在 流式读取 Doirs / 实时读 Doris,目前读…

网页的相关概念

什么是网页 网站是指在因特网上根据一定的规则,使用 HTML 等制作的用于展示特定内容相关的网页集合。 网页是网站中的一页,通常是 HTML 格式的文件,需通过浏览器来阅读。 网页是构成网站的基本元素,通常由图片、链接、文字、声…

MySQL表的增删查改(3)——复杂情况

1. 表的设计 三大范式: 一对一:如一个学生可以有一个学号,一个学号只能被一个学生拥有 一对多:如一个学生只能属于一个班级,但一个班级可以有多个学生(这种方案在MySQL中是不可行的,但在有些…

深入浅出mediasoup—关键帧请求

当丢包或者解码错误导致无法正确解码视频流,或者当一个新的接收者加入到视频通话时,需要一个关键帧来恢复和开始正常解码。关键帧请求机制是确保视频流在不可靠网络环境下能够恢复和维持高质量播放的关键技术之一,mediasoup 支持关键帧请求。…

一文掌握YOLOv1-v10

引言 YOLO目标检测算法,不过多介绍,是基于深度学习的目标检测算法中最出名、发展最好的检测器,没有之一。本文简要的介绍一下从YOLOv1-YOLOv10的演化过程,详细技术细节不过多介绍,只提及改进点,适合初学者…

每日OJ_牛客_HJ91 走方格的方案数

目录 牛客HJ91 走方格的方案数 解析代码 牛客HJ91 走方格的方案数 走方格的方案数_牛客题霸_牛客网 解析代码 本题为求取路径总数的题目,一般可以通过递归求解,对于复杂的问题,可以通过动态规划求解。此题比较简单,也可以通过递…

AI学习记录 - transformer的位置编码的理解

看完肯定懂,可能会更新 一看位置编码公式,感觉很懵逼 懵逼四点:(或者你还有其他不懂的点) 1、为什么使用正弦余弦公式?不可以使用其他公式? 2、为什么奇数位置使用余弦,偶数位置使…

向量数据库:从0到original paper

向量数据库相关概念 亿点点历史知识 LLM的模型发展历史,Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond1: 很多人都是从ChatGPT爆点后才逐渐了解到大模型,但在爆点的前几年大模型的发展已经开始了诸神之战。一…

网络服务综合项目(一键部署shell脚本)

目录 需求: 主机环境描述 注意: 项目需求: 代码讲解 配置本地仓库 安装软件包 配置防火墙 配置策略中的一个布尔值 配置web服务 配置网络仓库 配置DNS服务 配置NTP服务 配置MySQL服务 配置NFS服务 配置论坛服务 进入网站配置…

数据结构(稀疏数组)

简介 稀疏数组是一种数据结构,用于有效地存储和处理那些大多数元素都是零或者重复值的数组。在稀疏数组中,只有非零或非重复的元素会被存储,从而节省内存空间。 案例引入 假如想把下面这张表存入文件,我们会怎么做?…