常用网络协议的学习

article/2024/4/13 14:51:27

TCP/IP

TCP/IP的定义

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)是互联网的基本协议,也是国际互联网络的基础。

TCP/IP 不是指一个协议,也不是 TCP 和 IP 这两个协议的合称,而是一个协议族,包括多个网络协议,比如 IP、ICMP(互联网控制报文协议)、TCP、HTTP(超文本传输协议)、FTP(文件传输协议)等。

TCP/IP的分层结构

TCP/IP 协议族按照层次由上到下分成 4 层,分别是应用层传输层网络层(或称网际层)网络接口层(或称数据链路层)

TCP/IP在数据包设计上采用数据封装数据解封的策略,所谓封装就是在应用程序在发送数据的过程中,每一层都增加一些首部信息,这些信息用于和接收端同层次进行沟通。

在主机发送端,从传输层开始会把上一层的数据加上一个报头形成本层的数据,这个过程称为数据封装。在主机接收端,从最下层开始,每一层数据会去掉报头信息,该过程称为数据解封。其过程如下图所示。

TCP/IP协议通过分层的方式进行工作,每个层级负责特定的功能,上层利用下层提供的服务实现数据的传输和交互。

应用层包含了各种应用程序和协议,用于实现具体的网络服务

传输层主要负责端到端的数据传输和可靠性保证。

网络层主要负责数据包的传输和路由选择。它通过路由选择算法来选择最佳路径将数据包从源主机发送到目标主机。

数据链路层下面就是实体线路(比如以太网络、光纤网络等)。数据链路层有以太网、令牌环网等标准,负责网卡设备的驱动、帧同步(就是从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。交换机可以在不同的数据链路层的网络之间(比如十兆以太网和百兆以太网之间、以太网和令牌环网之间)转发数据帧,由于不同数据链路层的帧格式不同,交换机要将进来的数据报拆掉报头重新封装之后再转发。

TCP协议

TCP协议的定义

TCP协议,全称为Transmission Control Protocol,即传输控制协议,是一种面向连接的、可靠的基于字节流传输层通信协议。

TCP协议的使用

应用程序在使用TCP之前,必须先建立TCP连接;在使用完TCP协议后,要断开连接。

TCP协议通过三次握手来建立数据通讯的连接,通过四次挥手来断开数据通讯的连接。

TCP的三次握手

第1次握手:客户端发送一个带有SYN(synchronize)标志的数据包给服务端;
第2次握手:服务端接收成功后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了;
第3次握手:客户端再回传一个带有ACK标志的数据包,表示我知道了,握手结束。

举个例子:

一个男人向一个女人表白,说:我喜欢你,做我女朋友吧!

女人回复说:好啊!我愿意。

男人听到后,说:太好了,我们现在去约会。

TCP的四次挥手

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN 只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据

第1次挥手:客户端发送一个FIN,用来关闭客户端到服务端的数据发送,客户端进入FIN_WAIT_1状态;
第2次挥手:服务端收到FIN后,发送一个ACK给客户端,服务端进入CLOSE_WAIT状态;
第3次挥手:服务端发送一个FIN,用来关闭服务端到客户端的数据发送,服务端进入LAST_ACK状态;
第4次挥手:客户端收到FIN后,客户端t进入TIME_WAIT状态,接着发送一个ACK给服务端服务端进入CLOSED状态,完成四次挥手。

举个例子:

男人对女人说:你性格太差了,我们分手吧!

女人回复:好,等我收拾完东西,我们就分手!

收拾好东西后,女人说:我收拾好了,我们分手吧!

男人说:好,慢走不送。

UDP协议

UDP是一种无连接的、不可靠的传输层协议,它不保证数据传输的可靠性,但是具有传输速度快开销小等特点。UDP协议主要用于需要快速传输数据且对数据的可靠性要求不高的场景,如在线游戏,分布式系统信息的传输(短距离的传输 UDP 的传输的效率是很高的)。


UDP的特点

无连接性:UDP不需要在发送数据之前建立连接,因此发送端和接收端之间没有建立和维护连接的开销。每个UDP数据报都是独立的,不会与其他数据报之间有任何关系。

不可靠:UDP协议不保证数据传输的可靠性,因为它不提供重传机制、异常处理等功能,如果数据在传输过程中出现丢失或错误,UDP协议也不会进行任何处理。

支持广播和多播:UDP协议支持广播和多播,可以将数据同时发送给多个主机。

MQTT协议

MQTT协议是一种基于发布/订阅模式轻量级通讯协议,适合硬件性能较低或网络状况不佳的远程设备。它的优点在于能够以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。该协议构建于TCP/IP协议上。

如下图所示,MQTT协议采用客户端-服务器架构,客户端可以发布消息到特定的主题,而服务器负责将消息路由到订阅了这些主题的客户端。

HTTP协议

HTTP协议:全称为Hyper Text Transfer Protocol(超文本传输协议)。HTTP协议是用于从(WWW:World Wide Web,简称万维网)服务器传输超文本到本地浏览器应用层传输协议。

HTTP协议是基于TCP/IP协议来传递数据的。

HTTP 协议是一个无状态的应用层协议,即不会保存客户端与服务器之间的历史记录,每个请求都是独立的。其主要特点如下:

基于请求响应模式:HTTP 协议采用客户端-服务器架构模式,客户端向服务器发送请求,服务器返回相应的响应。

支持多媒体传输:HTTP 协议可以传输多种类型的数据,如 HTML、XML、JSON、图片、音频、视频等。这使得 HTTP 协议成为一种通用的网络传输协议,适用于各种不同类型的应用场景。

无连接:HTTP 协议是一个无连接协议,每个请求都是独立的,服务器处理请求后立即关闭连接。这样可以节省资源,但也带来了一些缺点,如需要重新建立连接、重复发送相同的头部信息等。

COAP 协议

CoAP(Constrained Application Protocol,受限应用协议)是一种专为物联网(IoT)设备和资源受限网络设计应用层协议。它旨在让小型设备能够接入互联网,因为对于这些设备来说,实现TCP和HTTP协议是一个过高的要求。

CoAP协议是一个应用层协议,基于传输层UDP而开发,而MQTT/HTTP协议则是基于TCP开发的。它采用了与HTTP类似的特征,同时又弥补了UDP传输的不可靠性。但是,CoAP的可靠性主要针对的是单播通信,对于组通信的可靠性保障尚不够完善。对于物联网小型设备而言,CoAP协议是一个极佳的选择,CoAP这种轻量级协议可以很好地适配资源受限的设备和场景。

CoAP的特点

轻量级:CoAP协议的设计非常简单,使用的头部和选项字段较少,占用的网络带宽和资源较少。这使得它非常适合在资源受限的设备和网络中使用。

基于UDP:CoAP通常在UDP上运行,而不是TCP。这使得它更适用于无连接、低延迟和高效率的通信。此外,CoAP还支持对消息的可靠性传输。

低能耗和低带宽消耗:CoAP协议针对资源受限设备和网络进行了优化,具有低能耗和低带宽消耗的特性。

支持IP多播:允许一对多的通信,这对于物联网中的多个设备同时接收更新非常有用。

EDP协议

EDP(Enhanced Device Protocol)是一种专为物联网领域设计的协议,由OneNET平台根据物联网的特点定制。它是一种基于TCP/IP协议栈的完全公开的协议,可以广泛应用于家居、交通、物流、能源以及其他行业应用中。


http://www.ngui.cc/article/show-1927542.html

相关文章

马立新出席生物发酵产品纯化工艺优化实现碳中和目标

演讲嘉宾:马立新 销售经理 诺华赛分离技术(上海)有限公司 演讲题目:绿色蝶变:生物发酵产品纯化工艺优化助推实现碳中和目标 Optimizing Bio-fermentation Product Purification for Carbon Neutrality 2024节能环…

ssm274办公自动化管理系统

** 🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅** 一 、设计说明 1.1课题背…

天猫礼品怎么设置

天猫礼品如何设置:详细步骤与实用建议 在天猫购物时,设置礼品选项可以为购买过程增添一份惊喜与个性化。无论是为自己购买还是为他人送礼,设置礼品都能让购物体验更加独特。那么,天猫礼品该如何设置呢?本文将为您提供…

C# 获取类型 Type.GetType()

背景 C#是强类型语言,任何对象都有Type,有时候需要使用Type来进行反射、序列化、筛选等,获取Type有Type.GetType, typeof(),object.GetType() 等方法,本文重点介绍Type.GetType()。 系统类型/本程序集内的类型 对于系…

学生成绩管理系统(C语言课设 )

这个学生成绩管理系统使用C语言编写,具有多项功能以方便管理学生信息和成绩。首先从文件中读取数据到系统中,并提供了多种功能(增删改查等)选项以满足不同的需求。 学生成绩管理系统功能: 显示学生信息增加学生信息删除学生信息…

跨域引起的两个接口的session_id不是同一个

来源场景: RequestMapping(“/captcha”)接口设置了SESSION_KEY,也能获取到,但是到了PostMapping(“/login”)接口就是空的,由于跨域导致的两个session_id不是同一个 /*** 系统用户 前端控制器*/ Controller CrossOrigin(origins…

数电学习笔记——逻辑代数的基本定理

目录 一、带入定理 二、反演定理 三、对偶定理 一、带入定理 在任何一个包含变量A的逻辑等式中,若以另外一个逻辑式代入式中所有A的位置,则等式仍然成立。 例1:(AB)AB 将(BC)带入等式中所…

2024年华为OD机试真题-高效货运-Python-OD统一考试(C卷)

题目描述: 1.老李是货运公司承运人,老李的货车额定载货重量为wt 2.现有两种货物,货物A单件重量为wa,单件运费利润为pa,货物B单件重量为wb,单件运费利润为pb 3.老李每次发车时载货总重量刚好为货车额定载货重…

4 局域网基础(2)

1.交换机的交换方式 交换机的交换方式主要有3种类型:直接交换、存储转发交换与改进直接交换。 1.1 直接交换方式 在直接交换(CutThrough)方式中,交换机只要接收并检测到目的地址字段,立即将该帧转发出去,而不进行差错校验。帧出错…

Java 广度优先搜索(Breadth-First Search,BFS)

广度优先搜索 遍历意味着访问图的所有节点。广度优先遍历或广度优先搜索是一种用于搜索图或树数据结构的所有顶点的递归算法。 广度优先搜索算法 标准 BFS 实现将图的每个顶点归入以下两个类别之一: 访问过未访问过 该算法的目的是将每个顶点标记为已访问&#xff0…