当前位置:首页 > 公众号精选 > 嵌入式大杂烩
[导读]计算机网络体系结构计算机网络体系结构有:OSI的七层协议体系结构TCP/IP的四层协议体系结构五层协议的体系结构其中,OSI的七层协议体系结构理论虽然完整,但它既复杂又不实用。广泛应用的是TCP/IP四层体系结构。五层协议的体系结构只是为了介绍网络原理而设计的,实际应用的还是TC...



计算机网络体系结构

计算机网络体系结构有:


  • OSI的七层协议体系结构
  • TCP/IP的四层协议体系结构
  • 五层协议的体系结构



其中,OSI的七层协议体系结构理论虽然完整,但它既复杂又不实用。广泛应用的是TCP/IP四层体系结构。


五层协议的体系结构只是为了介绍网络原理而设计的,实际应用的还是TCP/IP四层体系结构。


TCP/IP协议族

1、TCP/IP协议模型

首先,我们需要知道一个协议族的概念。协议族是多个协议的统称。,TCP/IP就是一个协议族。


其包含IP、TCP、UDP、HTTP、FTP、MQTT等协议。TCP/IP协议模型:



(图片:《计算机网络》谢希仁、《TCP/IP协议详解》)


TCP/IP协议模型分四层,上层依赖于下层。


从下到上看:


(1)第一层链路层(网络接口层):

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


(2)网络层(网际层):

网络层实现了数据包在主机之间的传递 。相关协议:IP、ICMP等协议。


(3)传输层(运输层):

传输层可以区分数据包是属于哪一个应用程序的。相关协议:TCP、UDP协议。


(4)应用层

应用层提供特定的应用服务。相关协议:HTTP、MQTT、FTP等协议。


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


2、网络数据的发送与接收


(图片来源:野火《LWIP应用开发实战指南》)


发送数据时, 将数据向下交给传输层。传输层会在数据前面加上传输层首部(此处以 TCP 协议为例, 传输层首部为 TCP 首部,也可以是 UDP 首部), 然后向下交给网络层。


同样地,网络层会在数据前面加上网络层首部(IP 首部) ,然后将数据向下交给链路层, 链路层会对数据进行最后一次封装,即在数据前面加上链路层首部(此处使用以太网接口为例) ,然后将数据交给网卡。


数据的接收过程与发送过程正好相反,可以概括为 TCP/IP 的各层协议对数据进行解析的过程。


3、IP协议

(1)概念

IP 协议(Internet Protocol),又称之为网际协议, IP 协议处于 IP 层工作,它是整个TCP/IP 协议栈的核心协议,上层协议都要依赖 IP 协议提供的服务, IP 协议负责将数据报从源主机发送到目标主机。


IP 协议是一种无连接的不可靠数据报交付协议,协议本身不提供任何的错误检查与恢复机制。


(2)IP地址

在全球的互联网中,每个主机都要唯一的一个 IP 地址作为身份识别。每个 IP 地址长度为 32 比特(4 字节),使用点分十进制记法来表示,如192.168.0.1。


IP 地址划分为 5 大类,分别为 A、 B、 C、 D、 E 五类,每一类地址都觉定了其中 IP 地址的一部分组成(图片来源:野火《LWIP应用开发实战指南》):




(图片来源:野火《LWIP应用开发实战指南》)


(3)局域网、广域网

  • 局域网(Local Area Network, 缩写为 LAN),又称内网, 指覆盖局部区域(如办公室或楼层)的计算机网络。
查看本机内网IP:




  • 广域网(Wide Area Network,缩写为 WAN),又称广域网、外网、公网。是连接不同地区计算机以进行通信的网络。
查看本机外网IP:





  • 查看某网站IP:



  • 局域网与广域网示意图


(图片来源:野火《LWIP应用开发实战指南》)




无线路由器把电脑、手机等设备连接到局域网 LAN 上,并分配 IP 地址,即局域网 IP ,我们可以称之为 LAN-IP 。


路由器的地址就是运营商给我们的一个 IP 地址,这个 IP 地址是有效的,可以看做是 WAN-IP。


LAN-IP 是路由器分配给我们的 IP,那么我们想要跨越边界进入广域网中, 就需要将 LAN-IP 变成有效的的 IP 地址,也就是 WAN-IP,那么在路由器中就需要将IP 地址进行转换,完成 LAN-IP<—>WAN-IP 地址转换(NAT)。


当持有 WAN-IP 的 IP 包顺利到达下一个边界 Internet Gateway,这是通往互联网Internet 的最后一道关卡,即边界。


左边是广域网,右边是互联网, 也需要做 WAN-IP 与Global-IP(互联网公共 IP)的转换才能进入互联网中 。


(4)IP数据报

IP 数据报的格式如下所示:




(图片来源:野火《LWIP应用开发实战指南》)


各字段说明:


  • 版本号(4bit):是IP协议的版本,对于IPv4,该值为4;对于IPv6,该值为6 。
  • 首部长度(4bit):用于记录 IP 首部的数据的长度 。
  • 服务类型(8bit):包括:最小延时、最大传输、最大可靠性、最小消耗等。
  • 数据报长度(16bit):IP 数据报的总长度(首部加上数据区域),以字节为单位。
  • 标识(16bit):识别号,主机每发一次都会自动增加。
  • 标志(3bit):标记位,用于标记是否被分段。
  • 分片偏移量(13bit):表示当前分片所携带的数据在整个 IP 数据报中的相对偏移位置(以 8 字节为单位) 。
  • 生存时间(8bit):该字段用来确保数据报不会永远在网络中循环 。
  • 上层协议(8bit):指示了 IP 数据报的数据部分应交给哪个特定的传输层协议(TCP、UDP)。
  • 首部校验和(16bit):首部检验和用于帮助路由器检测收到的 IP 数据报首部是否发生错误。
  • 源IP地址(32bit)。
  • 目标IP地址(32bit)。
  • 选项:选项字段占据 0~40 个字节。
  • 数据。

4、UDP协议

UDP是 User Datagram Protocol 的简称, 中文名是用户数据报协议, 是一种无连接、不可靠的协议。


主要特点:


  • 无连接、不可靠。
  • 尽可能提供交付数据服务,出现差错直接丢弃,无反馈。
  • 支持一对一, 一对多, 多对一,多对多的交互通信。
  • 速度快, UDP 没有握手、确认、窗口、重传、拥塞控制等机制 。
  • 面向报文。
UDP 虽然有很多缺点, 但是也不排除其能用于很多场合, 因为在如今的网络环境下,UDP 协议传输出现错误的概率是很小的, 并且它的实时性是非常好, 常用于实时视频的传输,比如直播、网络电话等。


因为即使是出现了数据丢失的情况,导致视频卡帧,这也不是什么大不了的事情,所以, UDP 协议还是会被应用与对传输速度有要求,并且可以容忍出现差错的数据传输中。


(1)UDP报文




(图片来源:野火《LWIP应用开发实战指南》)


端口号的取值在0~65535 之间;16bit 的总长度用于记录 UDP 报文的总长度,包括 8 字节的首部长度与数据区域。相关文章:


【socket笔记】TCP、UDP通信总结


5、TCP协议

TCP协议(TransmissionControl Protocol,传输控制协议),是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一个连接,否则将无法发送数据。


TCP数据是会封装到IP数据当中,我们现在看看TCP协议的头部数据定义:




(图片来源:野火《LWIP应用开发实战指南》、《TCP/IP协议详解》


  • 16-bit source port number:16位源端口号
  • 16-bit destination prot number:16位目标端口号
  • 32-bit sequence number :32位顺序号
  • 32-bit acknowledgment number :32位应答号
  • 4-bit header length:4位头部长度
  • reserved(6 bit):保留位
  • URG:紧急标志位
  • ACK:应答标志位(表明应答号之前的数据接收成功)
  • PSH:不进行缓存直接推送到应用的标志位
  • RST:标志重连接的标志位
  • SYN:同步顺序号以初始化连接的标志位
  • FIN:发送数据完毕的标志位(表明不会再发送数据过来)
  • 16-bit window size:窗口大小(用于控流)
  • 16-bit TCP checksum:检验(检验传输的数据是否正确)
  • 16-bit urgent pointer:当URG标志被设置时有效,传送紧急数据。
下面看一下TCP协议的一些特性:


(1)确认与重传

TCP 提供可靠的运输层, 但它依赖的是 IP 层的服务, IP 数据报的传输是无连接、 不可靠的,因此它要通过确认来知道接收方确实已经收到数据了。


但数据和确认都有可能会丢失, 因此 TCP 通过在发送时设置一个超时机制(定时器)来解决这种问题, 如果当超时时间到达的时候还没有收到对方的确认,它就重传该数据。


(2)缓冲机制

在发送方想要发送数据的时候, 由于应用程序的数据大小、 类型都是不可预估的, 而TCP 协议提供了缓冲机制来处理这些数据。


如在数据量很小的时候, TCP 会将数据存储在一个缓冲空间中, 等到数据量足够大的时候在进行发送数据, 这样子能提供传输的效率并且减少网络中的通信量。


而且在数据发送出去的时候并不会立即删除数据,还是让数据保存在缓冲区中,因为发送出去的数据不一定能被接收方正确接收,它需要等待到接收方的确认再将数据删除。


(3)全双工通信

在 TCP 连接建立后,那么两个主机就是对等的,任何一个主机都可以向另一个主机发送数据,数据是双向流通的,所以 TCP 协议是一个全双工的协议。


(4)流量控制

TCP 提供了流量控制服务(flow-control service)以消除发送方使接收方缓冲区溢出的可能性。


流量控制是一个速度匹配服务,即发送方的发送速率与接收方应用程序的读取速率相匹配, TCP 通过让发送方维护一个称为接收窗口(receive window)的变量来提供流量控制。


(5)差错控制

除了确认与重传之外, TCP 协议也会采用校验和的方式来检验数据的有效性,主机在接收数据的时候,会将重复的报文丢弃,将乱序的报文重组。


发现某段报文丢失了会请求发送方进行重发,因此在 TCP 往上层协议递交的数据是顺序的、无差错的完整数据。


关于TCP协议的一些其它内容如三次握手、四次挥手、示例等可以看以下文章:


C语言、嵌入式应用:TCP通信实例分析


【面试必考】TCP协议“三次握手”与“四次挥手”


【socket笔记】TCP、UDP通信总结


6、HTTP协议

HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写, 是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传输协议。


它是基于TCP/IP 协议通信的,因此它也是基于客户端-服务器模型运作的,是一个应用层协议,可以用它来传输服务器的各种资源,如文本、图片、音频等。


HTTP 协议的特点:


  • 简单:当客户端向服务器请求服务时,只需传送请求方法和路径即可获取服务器的资源, 请求方法常用的有 GET、 HEAD、 POST等, 每种方法规定了客户端与服务器通信的类型不同。
  • 快捷:由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。
  • 灵活:HTTP 允许传输任意类型的数据对象, 传输的类型由 Content-Type加以标记。
  • 无连接:简单来说就是每进行一次 HTTP 通信,都要断开一次 TCP 连接 。可随着 HTTP 的普及,文档中包含大量图片的情况多了起来,每次请求完都要断开 TCP 连接,无疑增加通信量的开销为了解决 TCP的连接问题, HTTP1.1提出了持久连接的方法。
  • 无状态: 无状态是指协议对于事务处理没有记忆能力。但其实这种无状态对于用户来说也是不友好的(比如:很多网站必须要记住已经登陆过的用户,总不能每刷新一次页面就要求用户重新输入帐号密码),因此为了解决无状态的问题,引入了 Cookie 技术,这是一种可以让服务器知道用户上一次做了什么操作,并且记录下来。

(1)URL 与资源

URL全称是 Uniform Resource Locator, 中文叫统一资源定位符, 是互联网上用来标识某一处资源的绝对地址,使用它我们就必然能找到资源,除非资源已经被转移了。


URI(Uniform Resource Identifiers)是一个通用的概念,由两个子集组成,分别是 URL 和 URN, URL 是通过资源的位置来标识资源,而 URN 更高级一点,只需通过资源名字即可识别资源,与他们所处的位置是无关的,目前暂时还未推广 URN。


URL的通用格式如下(绝大部分的 URL 是不会包含所有组件的内容的 ):




(图片来源:野火《LWIP应用开发实战指南》)


(2)HTTP报文

① 请求报文:




(图片来源:野火《LWIP应用开发实战指南》)


  • method (方法):HTTP 请求报文的起始行以方法作为开始,方法用来告知服务器要做些什么, 常见的方法有GET、 POST、 HEAD` 等 。


  • 请求 URL(request-URL) :指定了所请求的资源。


  • 版本(version):指定报文所使用的 HTTP 协议版本 。


② 应答报文:




(图片来源:野火《LWIP应用开发实战指南》)


  • 状态码(status):这是在 HTTP 应答报文中使用的。不同状态码代表不同的含义:


(图片来源:野火《LWIP应用开发实战指南》)


实例:




7、MQTT协议

MQTT 协议全称是 Message Queuing Telemetry Transport,翻译过来就是消息队列遥测传输协议,它是物联网常用的应用层协议。


其运行在 TCP/IP 中的应用层中,依赖 TCP 协议,因此它具有非常高的可靠性,同时它是基于 TCP 协议的<客户端-服务器>模型发布/订阅主题消息的轻量级协议。


(1)MQTT通信模型



(图片来源:野火《LWIP应用开发实战指南》)


MQTT协议是基于客户端-服务器模型,在协议中主要有三种身份:发布者(Publisher)、服务器(Broker)以及订阅者(Subscriber)。


MQTT 消息的发布者和订阅者都是客户端,服务器只是作为一个中转的存在,将发布者发布的消息进行转发给所有订阅该主题的订阅者。


MQTT 客户端的功能:


  • 发布消息给其它相关的客户端。
  • 订阅主题请求接收相关的应用消息。
  • 取消订阅主题请求移除接收应用消息。
  • 从服务端终止连接。
MQTT 服务器常被称为 Broker(消息代理) 。它的功能有:


  • 接受来自客户端的网络连接请求。
  • 接受客户端发布的应用消息。
  • 处理客户端的订阅和取消订阅请求。
  • 转发应用消息给符合条件的已订阅客户端(包括发布者自身)。

(2)MQTT消息

MQTT所发的消息包含:主题 内容,客户端可以订阅任意主题,若有其它客户端发布主题时符合所订阅的主题,就会由网关发送到客户端。


什么是主题?


MQTT 服务器为每个连接的客户端(订阅者)添加一个标签,该标签与服务器中的所有订阅相匹配, 服务器会将消息转发给与标签相匹配的每个客户端。这样的一个标签就是主题。


实例:




服务质量:


MQTT提供三种服务质量(Quality of Service,简写QoS),供开发者根据不同的情景选择不同的服务级别:


  • QoS0:最多发送一次消息,在消息发送出去后,接收者不会发送回应,发送者也不会重发消息。


  • QoS1:最少发送一次消息(消息最少需要送达一次,也有可送达多次), QoS 1的 PUBLISH 报文的可变报头中包含一个报文标识符,需要 PUBACK 报文确认。


  • QoS2:这是最高等级的服务质量,消息丢失和重复都是不可接受的。只不过使用这个服务质量等级会有额外的开销,这个等级常用于支付中,因为支付是必须有且仅有一次成功,总不能没给钱或者给了多次钱吧。



以上就是本次分享的一些计算机网络基础知识,计算机网络的内容很多,一篇文章不可能全部覆盖,以上也仅仅是一些概括性地抽取一些表层内容过来分享,需要阅读相关书籍来加深学习。


内容来源

  • 野火《LWIP应用开发实战指南》


  • 计算机网络》谢希仁


  • 《TCP/IP协议详解》


  • https://www.scaugreen.cn/



往期推荐:


这可能是你离大厂最近的一次


一份硬核的QT开发经验及资料分享,长文收藏!


分享一个简洁易用的嵌入式操作系统内核



点击阅读原文,查看更多分享



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

摘要:对水利水电设计单位的网络信息化建设现状进行了分析,阐述了信息化建设的基本原则,重点提出了计算机网络信息化建设的相关要求,以进一步提高水利水电设计单位的网络信息化建设水平。

关键字: 水利水电设计 计算机网络 信息化建设

防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。防火墙技术的功能主要在于及时发现并处理计算机网络运行时可能存...

关键字: 防火墙 数据传输 计算机网络

在计算机网络中,路由表或称路由择域信息库(RIB)是一个存储在路由器或者联网计算机中的电子表格(文件)或类数据库。路由表存储着指向特定网络地址的路径(在有些情况下,还记录有路径的路由度量值)。路由表中含有网络周边的拓扑信...

关键字: 路由表 计算机网络 数据包传输

计算机网络的拓扑结构是指网络中包括计算机在内的各种网络设备(如路由器、交换机等)实现网络互连所展现出来的抽象连接方式。

关键字: 拓扑结构 计算机网络 树形

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

关键字: 计算机网络 操作系统 资源共享

摘 要 :新经济的加速发展对工程型人才培养提出了新的要求,物联网工程作为典型的新工科建设专业需要不断探索专业建设的新方法。讨论了传统计算机网络课程存在的问题及需要改进的方向,探索了以创新型工程人才培养为导向的计算机网络课...

关键字: 新工科 物联网工程 创新型工程人才 计算机网络 课程改革 空间映射

当我每了解一个新技术或者新框架的时候,我都想要先把名字概念弄懂是什么,可见概念对于我们的帮助非常大。计算机网络中的概念也是非常庞杂,理解起来比较困难,所以这里,我给大家汇总了计算机网络中89个常见的概念,希望对你有所帮助...

关键字: 计算机网络

当我每了解一个新技术或者新框架的时候,我都想要先把名字概念弄懂是什么,可见概念对于我们的帮助非常大。计算机网络中的概念也是非常庞杂,理解起来比较困难,所以这里,我给大家汇总了计算机网络中89个常见的概念,希望对你有所帮助...

关键字: 计算机网络

程序员不要总停留在应用层面的CRUD,对于计算机底层的一些知识,也是需要了解的。

关键字: 计算机网络 程序员 TCP

嵌入式大杂烩

461 篇文章

关注

发布文章

编辑精选

技术子站

关闭