嵌入式学习——Linux高级编程复习(网络编程)——day42

1. 协议

        通信双方约定的一套标准称为协议

2. OSI参考模型

        OSI模型是由国际标准化组织(ISO)制定的一个概念性的网络通信模型,它将网络通信的功能分为七个层次,从下至上分别为:

  1. 物理层(Physical Layer)物理介质链接
  2. 数据链路层(Data Link Layer)局域网内的数据传输
  3. 网络层(Network Layer)数据路由(IP地址)
  4. 传输层(Transport Layer)传输数据的方式(TCP、UDP)
  5. 会话层(Session Layer)是否需要建立会话链接
  6. 表示层(Presentation Layer)数据是否加密
  7. 应用层(Application Layer)传输的数据(a.out)

        每个层次都有明确的功能,提供特定的服务,并通过相邻层的接口与其交互。OSI模型为网络通信提供了一个逻辑分层的框架,便于理解、设计和故障排查,但它更多地作为一个理论模型存在,并未直接转化为实际的网络实现。

3. TCP/IP协议簇

        TCP/IP是一个实际使用的、更为实际的网络通信协议集合,它最初由美国国防部研发,用于互联网的通信。TCP/IP模型通常被简化为四层或五层结构,对应OSI模型的部分层次合并,具体为:

  1. 网络接口层(Link Layer) 或 物理层与数据链路层:负责实际的数据传输,包括物理媒介的控制和数据链路的建立。
  2. 网络层(Internet Layer):核心协议为IP(Internet Protocol),负责地址寻址和数据包的路由选择。
  3. 传输层(Transport Layer):主要协议有TCP(Transmission Control Protocol)和UDP(User Datagram Protocol),分别提供面向连接的可靠数据传输服务和无连接的数据传输服务。
  4. 应用层(Application Layer):包含多种协议,如HTTP、FTP、SMTP等,直接为用户提供服务,如文件传输、电子邮件、网页浏览等。

4. 应用层协议——FTP  TFTP  HTTP  SMTP  TELNET

        TCP/IP协议簇(Transmission Control Protocol/Internet Protocol)是一个分层的网络协议模型,它定义了互联网上数据传输的标准规则。应用层处于TCP/IP四层模型的最顶层,直接与用户的应用程序交互,为用户提供各种网络服务。以下是应用层中一些重要协议的详细信息:

4.1 HTTP

        1. 功能

        用于在万维网上传输数据,特别是网页的浏览。HTTP定义了客户端(通常是浏览器)和服务器之间请求与响应的消息格式和交互方式。

        2. 版本

         HTTP/1.0, HTTP/1.1, HTTP/2, HTTP/3。每个新版本都旨在提高效率和性能。

        3. 端口号

        默认80 (HTTP), 443 (HTTPS - 加密的HTTP)。

        端口号:唯一识别同一主机不同进程的号码
               (0 - 65535)(不要使用10000以内的,10000以内的是系统的)

4.2 HTTPS

        1. 功能

        是HTTP的安全版本,通过TLS/SSL协议对通信进行加密,保护数据的安全性和隐私。

        2. 端口

        默认443

4.3 DNS

        1. 功能:

        将人类可读的域名转换为IP地址,也提供其他与域名相关的信息,如MX记录(邮件交换记录)。

        2. 端口

        通常使用53(UDP/TCP)。

4.4 POP3

        1. 功能

         用于从邮件服务器下载邮件到本地客户端,并可选择删除服务器上的副本。

        2. 端口

        默认110 (非SSL), 995 (SSL)。

4.5 FTP

4.6 TFTP

4.7 SMTP

4.8 TELNET

5. 传输层协议——TCP、UDP

5.1 UDP——用户数据报协议

        1. 定义

        UDP(User Datagram Protocol,用户数据报协议)是互联网协议套件中传输层的一个重要协议,它提供了一种无连接、不可靠、面向数据报的服务。与TCP(传输控制协议)相比,UDP更简单,开销更低,适用于对实时性和效率要求较高的应用场景。

        2. 基本特征

        (1)无连接

        UDP在数据传输前不需要建立连接,发送数据前无需握手过程,减少了通信前的延迟,使得数据能够迅速发送出去。

        (2)尽最大努力交付

        UDP不保证数据包一定能够到达目的地,也不保证数据包的顺序和重复处理,数据传输的可靠性由上层协议或应用程序自己来保证。

        (3)面向数据报

        UDP以数据报为单位进行传输,每个数据报都是独立的,包含完整的源地址、目的地址和数据,适合一次性传输少量数据或者对实时性要求高的数据。

        (4)头部开销小

        UDP的头部只有8个字节,相比TCP的头部要简单得多,这使得UDP传输的效率更高。

        (5)多播和广播支持

        UDP协议天然支持多播和广播,能够向多个目标地址同时发送数据,适用于需要一对多通信的场景,如视频直播、在线游戏等。

        3. 报文结构

        (1)源端口

        标识发送端的端口号,用于接收方回复

        (2)目的端口

        标识接收端的端口号,决定数据发送到哪个应用。

        (3)长度

        整个UDP报文的长度,包括头部和数据部分

        (4)校验和

        提供基本的错误检测,确保数据报在传输过程中没有被破坏。虽然简单,但并非所有实现都强制要求计算校验和。

        4. 应用场景

        (1)实时性要求高的应用

        如在线游戏、VoIP(网络电话)、视频会议等,这些应用需要即时响应,可以容忍一定程度的数据丢失。

        (2)广播或多播

        如系统广播消息、视频直播、股票报价等,这些服务需要将数据同时发送给多个接收者。

        (3)DNS查询

        虽然DNS也支持TCP,但大部分查询使用UDP,因为查询请求和响应都很小,且对实时性有一定要求。

        (4)数据包大小受限的环境

        在带宽有限或网络条件较差的环境下,UDP较小的头部开销和无连接特性使其更为高效。

        

5.2 TCP——传输控制协议

        1. 定义

        TCP(Transmission Control Protocol,传输控制协议)是互联网协议套件中的一种面向连接的、可靠的、基于字节流的传输层通信协议。

        2. TCP的特点和功能

        (1)面向连接

        在数据传输之前,TCP要求通信双方先通过三次握手建立连接。这确保了双方准备好进行数据传输,并为双方分配必要的资源。

        (2)可靠性

        TCP通过一系列机制确保数据的可靠传输,包括序列号、确认应答、重传机制、错误校验等。序列号用来标识发送的数据段,确保数据按顺序到达;确认应答(ACK)机制让接收方确认收到的数据;如果数据段丢失或损坏,发送方会重新发送。

        (3)流量控制

        TCP使用滑动窗口协议来控制发送方的速率,以防止接收方被过快的数据流淹没。接收方会告诉发送方其接收缓冲区的可用空间大小,发送方据此调整发送速率。

        (4)拥塞控制

        TCP还通过慢启动、拥塞避免、快速重传和快速恢复等算法来动态调整数据的发送速率,以应对网络拥塞的情况。

        (5)全双工通信

        TCP允许数据同时在两个方向上传输,即通信双方可以同时发送和接收数据,提高了通信效率。

        (6)基于字节流

        TCP将数据视为无结构的字节流,没有消息边界的概念。发送方可以连续不断地发送数据,接收方也可以按任意大小读取数据。

        3. TCP头部结构

        TCP头部包含了控制信息,用于指导数据的传输和确认过程,主要包括:

        (1)源端口号和目的端口号

        标识通信双方的应用进程

        (2)序号

        发送数据段中的第一个字节的编号,用于数据排序和重传控制。

        (3)确认号

        期望从对方接收到的下一个数据段的序号,用于确认数据接收。

        (4)头部长度

        (5)保留位

        (6)标志位

        (7)窗口大小

        (8)校验和

        (9)紧急指针

        4. 连接管理

        (1)三次握手

        建立连接时,客户端发送SYN包到服务器,服务器回应SYN+ACK包,客户端再回ACK包,完成连接建立。

        (4)四次挥手

        关闭连接时,一方发送FIN包,对方回应ACK,然后对方发送FIN包,最后收到ACK,连接彻底关闭。

        5. 应用场景

        TCP因其可靠性和有序性,适用于那些对数据完整性要求高的应用,如Web浏览(HTTP)、文件传输(FTP)、电子邮件(SMTP/POP3/IMAP)、远程登录(SSH)等。尽管TCP提供高度可靠性,但相比UDP(User Datagram Protocol),其开销更大,延迟较高,不适合实时性要求极高的应用,如在线游戏、VoIP等。

        6. 特点总结

                    1.安全、可靠
                    2.数据量大
                    3.占用资源开销大

        7. 连接流程总结

                三次握手建立链接
                数据传输过程中双方通过序列号和确认号保障数据传输完整性
                四次挥手结束链接

6. 网络层协议

6.1 定义

        网络层(Network Layer)是OSI模型和TCP/IP模型中的第三层,主要负责数据包的路由选择和转发,确保数据能够从源主机传输到目标主机。网络层协议关注的是将数据从一个网络传递到另一个网络,这是通过逻辑寻址和路径选择来实现的。

6.2 分类

        以下是几种常见的网络层协议分类

        1. IP(Internet Protocol,互联网协议)

        (1)IPv4

        目前互联网上最广泛使用的版本,提供32位地址空间,采用点分十进制表示法。支持无连接的数据报服务,不保证数据包的顺序和可靠性。

        (2)IPv6

        为了解决IPv4地址耗尽问题而设计的新版本,提供128位地址空间,拥有更大的地址容量、更好的安全性以及改进的路由和配置选项。

        2. ICMP(Internet Control Message Protocol,互联网控制消息协议)

        3. IGP(Interior Gateway Protocol,内部网关协议)

        4. EGP(Exterior Gateway Protocol,外部网关协议)

        5. NDP(Neighbor Discovery Protocol,邻居发现协议)

        6. MPLS(Multiprotocol Label Switching,多协议标签交换)

6.3 IPv4协议

        1. 定义

        IPv4(Internet Protocol version 4,互联网协议第4版)是互联网协议的一个版本,它是目前互联网上最广泛使用的网络层协议。

        2. 地址结构与表示

        IPv4使用32位(4字节)的地址空间,这允许有大约42亿(232232)个唯一的地址。IPv4地址通常以点分十进制表示法表示,即四个十进制数字,每个数字范围从0到255,数字之间以点(.)分隔。例如,192.168.1.1 是一个常见的IPv4地址。

        IP:192.168.0.189        管理员模式

        IP地址 = 网络位 + 主机位

        网络位:IP地址所在的网段

        主机位:在局域网内的主机编号

        子网掩码:搭配IP地址使用,区分IP地址中的网络位和主机位

                          子网掩码是1的部分对应IP地址网络位
                          子网掩码是0的部分对应IP地址主机位

        网段号:网络位不变,主机位全为0的IP地址192.168.0.0

        广播号:网络位不变,主机位全为1的IP地址(给广播号发送一个信息,所有的IP地址都能搜到)192.168.0.255

        3. 地址分类

        IPv4地址被划分为五类,A、B、C、D、E类,其中A、B、C类为主要分配给主机和网络使用的地址,D类用于多播,E类保留用于特殊用途。每类地址的网络号和主机号部分的长度不同,决定了网络规模的大小。

        (1)A类:1.0.0.0 - 126.255.255.255

        管理大规模网络

       子网掩码:255.0.0.0

        (2)B类:128.0.0.0 - 191.255.255.255

        管理大中规模网络

        子网掩码:255.255.0.0

        (3)C类:192.0.0.0 - 223.255.255.255

         管理中小规模网络

        子网掩码:255.255.255.0

        (4)D类:224.0.0.0 - 239.255.255.255

        用于组播传输(给一组人传输数据)

        (5)E类:240.0.0.0 - 255.255.255.254

        用于科研实验

        补充:

        (1)公有IP地址:能够直接上网的IP地址(路由器)
                 私有IP地址:不能直接上网的IP地址(个人主机)

        (2)MAC地址:网卡地址  物理地址(此地址不会重复,是唯一的)

        (3)IP地址是为了找某一个网段、MAC地址是为了找在局域网中找到某一个主机

                  端口号:唯一识别同一主机不同进程的号码
                  (0 - 65535)(不要使用10000以内的,10000以内的是系统的)

        (4)

        

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

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

相关文章

百度一下首页制作(HTML+CSS)

部分代码展示&#xff1a; <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>百度一下&#xff0c;你就知道</title><style type"text/css">/*清除元素默认性质*/body { margin: 0;padding: 0;list-…

前端传进来的单选值是0,到了后端加了个逗号

如上图所示&#xff0c;标记的var的值org和id的值orgOrNot不能一样&#xff0c;如果一样&#xff0c;通过id获取&#xff08;#(“#orgOrNot”).find(“option:selected”).val()&#xff09;时候就会出现这种情况 改成如下情况&#xff0c;区别开id

java基础·小白入门(三)

目录 类的继承基本概念方法覆盖Object类 抽象类接口枚举和包枚举 包 类的继承 基本概念 继承是一种由已有的类创建新类的机制。在Java中&#xff0c;通过关键字extends继承一个已有的类&#xff0c;被继承的类称为父类&#xff08;超类&#xff0c;基类&#xff09;&#xff…

C++语法17 利用for循环进行求和与求积

语法阶段已经更新到第17章了&#xff0c;前面的知识你都学会了吗&#xff1f;如果还没有学习前面的知识&#xff0c;请点击语法专栏进行[http://t.csdnimg.cn/7EcJm]学习哦&#xff01; 目录 循环求和 整数求和 解析 参考代码 分数求和 解析 参考代码 偶数求和 解析 参…

opencv学习笔记(1)

图像&视频的加载与展示 如何通过OpenCV创建显示窗口 namedWindow():创建一个窗口&#xff0c;并给窗口起一个名字&#xff0c;当起好名字后&#xff0c;可以选择显示哪个窗口 imshow()&#xff1a;显示窗口 &#xff0c;第一个参数是窗口的名字&#xff0c;如果没有会自动…

代码随想录训练营第十四天 226翻转二叉树 101对称二叉树 104二叉树的最大深度 111二叉树的最小深度

第一题&#xff1a; 原题链接&#xff1a;226. 翻转二叉树 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 递归法&#xff1a;使用中序遍历的操作&#xff0c;中左右&#xff0c;在遍历到中间节点的时候对它左右节点进行交换。 代码如下&#xff1a; /*** Def…

BC-Linux 8.6最小化安装的服务器启用GNOME图形化界面

本文记录了BC-Linux 8.6最小化安装的服务器如何启用GNOME图形化界面的过程。 一、服务器环境 1、系统版本 [rootlocalhost ~]# cat /etc/os-release NAME"BigCloud Enterprise Linux" VERSION"8.6 (Core)" ID"bclinux" ID_LIKE"rhel fe…

在VScode中创建PHP环境

一、下载PHP Server 和 PHP Debug这两个扩展 二、下载完成之后&#xff0c;在VScode中&#xff0c;打开我们写代码的文件 这里是我事先创建好的一些文件&#xff0c;本次环境搭建只需要创建一个.php后缀的文件即可。 先选中.php文件&#xff0c;再点击文件。 点击首选项&#x…

AI之Lambda index

简介 Lambda index 是一个用于衡量语言模型性能的指标,它主要评估模型在生成文本时的语言连贯性和逻辑性。它是由 OpenAI 在发布 GPT-3 模型时提出的。 具体来说,lambda index 反映了模型生成的文本中单词与上下文的关联程度。它的计算方式如下: 1、给定一个文本序列 X (x1…

使用npm发布自己的插件包

文章目录 1. 准备工作1.1 拥有一个npm账号1.2 准备你的插件代码1.3 编写package.json文件 2. 本地测试3. 发布到npm3.1 登录npm3.2 发布插件3.3 更新插件 4. 注意事项 在JavaScript和Node.js的生态系统中&#xff0c;npm&#xff08;Node Package Manager&#xff09;是一个非常…

游戏中的寻路算法研究

1)Unity NavMesh研究 思考&#xff1a;毫无疑问&#xff0c;unity中自带的navmesh寻路是比较健全的&#xff0c;无奈在服务器中无法使用&#xff0c;这样子我们没办法做怪的导航&#xff0c;但是可以先体验下都有哪些api&#xff0c;并且可以可视化的看效果。 1)打开导航网格…

【课程系列05】某心科技AI大模型微调实战营-应用篇

网盘链接 链接: https://pan.baidu.com/s/1oARULXsXn8frkqq4ZKHBLA --来自百度网盘超级会员v6的分享 课程收获 课程内容涉及大模型的介绍、Transformer、Encoder、高级微调技术、Alpaca、AdaLoRA、QLoRA、Prefix Tuning和Quantization等主题 课程截图

龙芯LS2K0300久久派上手体验

介绍 芯片 龙芯2K0300芯片是一款基于LA264处理器核的多功能SoC芯片&#xff0c;可广泛适用于工业控制、通信设备、信息家电和物联网等领域&#xff1b;该芯片采用高集成度设计&#xff0c;可提供丰富的功能接口&#xff0c;满足多场景应用需求&#xff0c;同时支持低功耗技术…

VMware 虚拟机共享宿主机文件夹

一、背景 在虚拟机中&#xff0c;需要写文件到宿主机的文件系统中 宿主机的文件共享给虚拟机使用 这些场景就涉及到VM的虚拟机怎么访问宿主机的磁盘文件夹 二、软件背景 宿主机&#xff1a;window机器&#xff0c;本文是win7 虚拟软件&#xff1a;VMware12.5.6&#xff0…

小山菌_代码随想录算法训练营第二十七天| 93.复原IP地址 、

93.复原IP地址 文档讲解&#xff1a;代码随想录.复原IP地址 视频讲解&#xff1a;回溯算法如何分割字符串并判断是合法IP&#xff1f;| LeetCode&#xff1a;93.复原IP地址 状态&#xff1a;已完成 代码实现 class Solution { private:vector<string> result; // 记录结…

基于自编码器的滚动轴承异常检测方法(NASA-IMS数据,Python)

代码较为简单。 import numpy as np import pandas as pd from tensorflow import keras from tensorflow.keras import layers from matplotlib import pyplot as plt df_stats_Ch1_test2 pd.read_csv("estadisticos_test2_ch1.csv" , sep ,) X_Ch1 df_stats_Ch…

移植案例与原理 - HDF驱动框架-驱动配置(2)

1.2.7 节点复制 节点复制可以实现在节点定义时从另一个节点先复制内容&#xff0c;用于定义内容相似的节点。语法如下&#xff0c;表示在定义"node"节点时将另一个节点"source_node"的属性复制过来。 node : source_node示例如下&#xff0c;编译后bar节点…

5分钟了解单元测试

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、什么是单元测试&#xff1f; 单元测试是指&#xff0c;对软件中的最小可测试单元在与程序其…

​海康威视 isecure center 综合安防管理平台任意文件上传漏洞

文章目录 前言声明一、漏洞描述二、影响版本三、漏洞复现四、修复方案 前言 海康威视是以视频为核心的智能物联网解决方案和大数据服务提供商,业务聚焦于综合安防、大数据服务和智慧业务。 海康威视其产品包括摄像机、多屏控制器、交通产品、传输产品、存储产品、门禁产品、消…

项目五 OpenStack镜像管理与制作

任务一 理解OpenStack镜像服务 1.1 •什么是镜像 • 镜像通常 是指一系列文件或一个磁盘驱动器的精确副本 。 • 虚拟机 所使用的虚拟磁盘&#xff0c; 实际上是 一种特殊格式的镜像文件 。 • 云 环境下尤其需要 镜像。 • 镜像 就是一个模板&#xff0c;类似于 VMware 的虚拟…