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

目录

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://xiahunao.cn/news/3267794.html

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

相关文章

【用最少数量的箭引爆气球】python刷题记录

R2-贪心篇. 求最小,那就尽可能地假设更多的气球y值不相同咯。 不对,气球除了y值我们随便摆,所以找尽可能多重叠的,就作为同一只箭。 class Solution:def findMinArrowShots(self, points: List[List[int]]) -> int:#贪心策略…

高性能 Java 本地缓存 Caffeine 框架介绍及在 SpringBoot 中的使用

在现代应用程序中,缓存是一种重要的性能优化技术,它可以显著减少数据访问延迟,降低服务器负载,提高系统的响应速度。特别是在高并发的场景下,合理地使用缓存能够有效提升系统的稳定性和效率。 Caffeine 是一个高性能的…

宝塔单ip,新建多站点

报错如上: 那么如何新建多站点呢 先随便写个名字上去,然后再重新绑定别的端口… 这个时候访问99端口即可 。 如果是有域名,则不需要这样做 、直接80端口也可以多站点

OSPF配置与分析

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 一、相关知识 开放最短路径优先(Open Shortest Path First,OSPF)基于链路状态算法,是一个内部网关协议…

gitee设置ssh公钥密码避免频繁密码验证

gitee中可以创建私有项目,但是在clone或者push都需要输入密码, 比较繁琐。 公钥则可以解决该问题,将私钥放在本地,公钥放在gitee上,当对项目进行操作时带有的私钥会在gitee和公钥进行验证,避免了手动输入密…

三目操作符

双目操作符有、-、*、/、% 单目操作符有--、、、- 三目操作符有表达式1&#xff1f;表达式2&#xff1a;表达式3 如果表达式1为真则表达式2计算否则表达式3计算&#xff0c;计算结果为整个表达式的结果 #include<stdio.h> int main() {int a 0;int b 0;scanf(&quo…

Web开发:使用数据库工具Navicat技巧合集

1.EXCEL批量导入数据 打开Navicat准备导入数据&#xff0c;点击导入 选择excel 字段名行应该写0&#xff08;下图错误&#xff09; 下一步&#xff0c;表已经用语法建好了&#xff0c;因此不用打勾 配置好字段&#xff0c;下一步&#xff0c;点击开始即可。 2.数据表从一个服…

R包:plot1cell单细胞可视化包

介绍 plot1cell是用于单细胞数据seurat数据对象的可视化包。 安装 ## You might need to install the dependencies below if they are not available in your R library. bioc.packages <- c("biomaRt","GenomeInfoDb","EnsDb.Hsapiens.v86&qu…

【React 】开发环境搭建详细指南

文章目录 一、准备工作1. 安装 Node.js 和 npm2. 选择代码编辑器 二、创建 React 项目1. 使用 Create React App2. 手动配置 React 项目 三、集成开发工具1. ESLint 和 Prettier2. 使用 Git 进行版本控制 在现代前端开发中&#xff0c;React 是一个非常流行的框架&#xff0c;用…

与众不同的社交体验:Facebook的新功能与新变化

在快速变化的社交媒体领域&#xff0c;Facebook不断引入创新功能和变化&#xff0c;以满足用户日益增长的需求&#xff0c;并提供与众不同的社交体验。从增强现实到数据隐私&#xff0c;Facebook的新功能和更新正在塑造一个全新的社交平台。本文将深入探讨这些新功能和变化&…

昇思25天学习打卡营第33天|共赴算力时代

文章目录 一、平台简介二、深度学习模型2.1 处理数据集2.2 模型训练2.3 加载模型 三、共赴算力时代 一、平台简介 昇思大模型平台&#xff0c;就像是AI学习者和开发者的超级基地&#xff0c;这里不仅提供丰富的项目、模型和大模型体验&#xff0c;还有一大堆经典数据集任你挑。…

字节跳动推出端到端同声传译智能体;OpenAI 搜索引擎 SearchGPT 登场丨 RTE 开发者日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

2024算法、高性能计算与人工智能国际学术会议(AHPCAI 2024)

2024算法、高性能计算与人工智能国际学术会议&#xff08;AHPCAI 2024&#xff09; 2024 International Conference on Algorithms, High Performance Computing and Artificial Intelligence 2024年8月14-16日 | 中国-郑州 2024中国算力大会正在发起“算力中国最佳学术论文…

企业组织机构代码查询入口直达词令是什么?

企业组织机构代码查询入口直达词令是什么&#xff1f; 1、手机安装&#xff0c;打开词令关键词口令直达工具&#xff1b; 2、输入词令「组织机构代码查询」关键词直达口令&#xff1b; 3、搜索直达词令关联的目标企业组织机构代码查询入口&#xff1b; 4、输入营业执照上的18位…

基于DMASM镜像的DMDSC共享存储集群部署

DMv8镜像模式共享存储集群部署 环境说明 操作系统&#xff1a;centos7.6 服务器&#xff1a;2台虚拟机 达梦数据库版本&#xff1a;达梦V8 安装前准备工作 参考文档《DM8共享存储集群》-第11、12章节 参考文档《DM8_Linux服务脚本使用手册》 1、系统环境(all nodes) 1…

黄景仁,笔墨间的一抹清寒

黄景仁&#xff0c;字汉镛&#xff0c;一字仲则&#xff0c;号鹿菲子&#xff0c;生于乾隆十四年&#xff08;公元1749年&#xff09;&#xff0c;卒于乾隆四十八年&#xff08;公元1783年&#xff09;&#xff0c;享年仅35岁。他是宋代大诗人黄庭坚的后裔&#xff0c;出生于常…

【C++】初识C++基础篇·一(命名空间,函数重载,缺省参数,引用);

文章目录 前言1.输入与输出输出输入cin和scanf的对比 2.命名空间2.1namespace存在的意义2.2namespace的使用3.缺省参数4.函数重载重载函数的调用规则 5.引用 前言 我们先通过一段简单的代码来拉开C的序幕&#xff1b; //text.cpp #include<iostream> #include<stdio…

链路聚合加单臂路由

一、实验目的及拓扑 实验目的&#xff1a;在路由器及交换机之间建立链接聚合&#xff0c;交换机接入两台主机并通过路由器子接口自动分配IP地址&#xff0c;通过单臂路由实现两台主机互联 二、基本配置 1、交换机配置 [S1]vlan batch 10 20 [S1-Eth-Trunk1]dis th # interf…

matlab simulink 混合式VTOL-UAV动力学模型

1、内容简介 略 可以交流、咨询、答疑 2、内容说明 略混合式VTOL UAV是简单的将四旋翼和固定翼无人机结合在一起,不仅具备四旋翼飞行器的垂直起降,可悬停的特点,还具备固定翼飞行器的航程远,平飞速度快等特点,具有很重要的应用价值,在该飞行器布局中,四旋翼负责提供升力,工作…