【网络编程】网络基础概念

  • (꒪ꇴ꒪ ),Hello我是祐言QAQ
  • 我的博客主页:C/C++语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍
  • 快上🚘,一起学习,让我们成为一个强大的攻城狮!
  • 送给自己和读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!
  • 作者水平很有限,如果发现错误,请在评论区指正,感谢🙏


接上文

【网络编程】TCP/IP协议(互联网的基石)_祐言QAQ的博客-CSDN博客

第四部分:网络模型

4.1 探讨OSI模型和TCP/IP模型,比较它们之间的异同

OSI模型

        OSI模型(Open Systems Interconnection)是一种七层网络模型,用于描述计算机网络中的通信协议。它是一种理论上的模型,旨在标准化计算机网络的通信过程。以下是OSI模型的七个层次,自下而上排列:

  1. 物理层:负责传输原始比特流,处理硬件传输和电信信号。
  2. 数据链路层:处理数据帧的传输,提供数据的可靠传输和错误检测。
  3. 网络层:负责数据包的路由和寻址,实现不同网络之间的通信。
  4. 传输层:管理端到端通信,提供数据的可靠性和流量控制。
  5. 会话层:处理会话管理和同步,确保数据的正确顺序传输。
  6. 表示层:负责数据的编码和加密,以确保不同系统间的数据格式兼容。
  7. 应用层:提供应用程序接口,使应用程序能够访问网络服务。

TCP/IP模型

        TCP/IP模型是因特网使用的网络模型,也被称为互联网模型。它通常被划分为四个层次,如下所示:

  1. 物理层:与OSI模型的物理层类似,负责传输原始比特流。
  2. 数据链路层:与OSI的数据链路层相似,负责数据帧的传输和错误检测。
  3. 网络层:与OSI的网络层类似,负责数据包的路由和寻址。
  4. 传输层:与OSI的传输层类似,提供端到端通信和可靠性。

        在TCP/IP模型中,高层的功能通常包括在应用层,而OSI模型中这些功能分布在会话层、表示层和应用层中。因此,TCP/IP模型更加精简,适用于互联网通信。

4.2 说明每个模型的不同层次和功能

OSI模型

  1. 物理层:处理硬件传输和电信信号。
  2. 数据链路层:提供数据的可靠传输和错误检测。
  3. 网络层:负责数据包的路由和寻址,实现不同网络之间的通信。
  4. 传输层:管理端到端通信,提供数据的可靠性和流量控制。
  5. 会话层:处理会话管理和同步,确保数据的正确顺序传输。
  6. 表示层:负责数据的编码和加密,以确保不同系统间的数据格式兼容。
  7. 应用层:提供应用程序接口,使应用程序能够访问网络服务。

TCP/IP模型

  1. 物理层:负责传输原始比特流。
  2. 数据链路层:处理数据帧的传输和错误检测。
  3. 网络层:负责数据包的路由和寻址。
  4. 传输层:提供端到端通信和可靠性。

        TCP/IP模型将会话层、表示层和应用层的功能整合到了应用层中。这使得模型更加紧凑,适用于因特网通信。

        通过对比这两个模型,我们可以看出它们在层次划分和功能分布上的异同。在实际网络工程中,TCP/IP模型更常用,但了解OSI模型有助于深入理解网络协议的设计和原理。

第五部分:IP

5.1 基本概念

        IP(Internet Protocol,互联网协议)是计算机网络通信的基础协议之一。它负责将数据包从一个计算机传输到另一个计算机,无论它们在世界的哪个地方。以下是IP的一些基本概念:

  • 数据包寻址: IP协议使用IP地址来唯一标识网络中的每个设备。这些地址充当数据包的目标地址,确保数据包到达正确的目标。

  • 路由: IP协议还负责决定数据包如何从发送方传输到接收方。这包括选择正确的路径和中转节点以确保数据包的有效传递。

  • 无连接协议: IP是无连接协议,这意味着它在发送数据包之前不建立持久连接。每个数据包被独立处理,不需要维护连接状态。

  • 全球性: IP允许跨全球范围的通信。无论计算机位于世界的哪个地方,只要它们连接到因特网,就可以通过IP协议进行通信。

5.2 IP地址分类

        IP地址是IPv4和IPv6两种版本的核心。它们用于标识设备在网络中的位置。以下是有关IP地址分类的信息:

IPv4地址

        IPv4采用32位地址,通常以四个十进制数表示(例如,192.168.0.1)。IPv4地址分为以下几个类别:

  • A类地址: 用于大型网络,其第一个字节范围为1-126。
  • B类地址: 用于中型网络,其第一个字节范围为128-191。
  • C类地址: 用于小型网络,其第一个字节范围为192-223。
  • D类地址: 用于多播(multicast)通信,范围为224-239。
  • E类地址: 保留用途,范围为240-255。

IPv6地址

        IPv6采用128位地址,通常以八组16进制数表示(例如,2001:0db8:85a3:0000:0000:8a2e:0370:7334)。IPv6地址的数量远远超过IPv4,以应对不断增长的网络需求。

5.3 子网掩码

        子网掩码用于划分IP地址空间,允许在一个网络中创建多个子网络(子网)。它决定了IP地址中哪些位用于网络标识,哪些位用于主机标识。子网掩码与IP地址结合使用,以确定一个设备是否在同一子网内。以下是子网掩码的一些关键概念:

  • 网络标识: 子网掩码中设定为1的位用于标识网络,剩余位用于主机。
  • 子网数量: 子网掩码的长度决定了网络中可以创建的子网数量。更长的子网掩码创建更多的子网,但每个子网的主机数量较少。
  • CIDR表示法: 为了简化子网掩码的表示,使用CIDR表示法(Classless Inter-Domain Routing)。例如,/24表示子网掩码中有24位设置为1,用于网络标识。

        子网掩码的使用允许网络管理员更好地组织和管理IP地址,以适应复杂的网络拓扑和需求。

第六部分:端口号

6.1 解释端口号的概念和作用

        端口号是计算机网络中的重要概念,用于标识计算机上运行的不同服务或应用程序。每个计算机都有数千个端口可用于网络通信。端口号的作用是确保数据包在源和目标计算机之间正确地路由到特定的应用程序或服务。

        在TCP/IP协议中,端口号是一个16位的整数,范围从0到65535。这个范围被分成三个主要部分:

  • 0到1023: 这些端口号被称为「知名端口」或「系统端口」。它们通常由标准化的网络协议使用,如HTTP(端口80)、FTP(端口21)和SSH(端口22)。

  • 1024到49151: 这些端口号被称为「注册端口」。它们可以被应用程序或服务动态分配,但通常与特定的服务相关。

  • 49152到65535: 这些端口号是「动态端口」或「私有端口」。它们通常被客户端应用程序使用,用于临时通信。

6.2 说明不同端口号的用途

        不同的端口号用于不同类型的网络服务。以下是一些常见的端口号及其用途的示例:

  • 端口80(HTTP): 用于提供Web服务。当你在浏览器中访问网站时,通常会使用HTTP协议通过端口80来传输网页数据。

  • 端口21(FTP): 用于文件传输协议(FTP)。FTP允许文件在客户端和服务器之间进行传输。

  • 端口22(SSH): 用于安全外壳协议(SSH)。SSH提供了加密的远程访问,通常用于安全地登录远程服务器。

  • 端口25(SMTP): 用于简单邮件传输协议(SMTP)。SMTP用于发送电子邮件。

  • 端口53(DNS): 用于域名系统(DNS)。DNS将域名转换为IP地址,以便在网络上查找主机。

  • 端口443(HTTPS): 用于超文本传输安全协议(HTTPS)。HTTPS是加密的HTTP协议,用于安全的Web通信,如在线银行和电子商务网站。

  • 端口3306(MySQL): 用于MySQL数据库服务器。MySQL是一种常用的数据库管理系统。

  • 端口8080: 通常用于代理服务器或Web应用程序的备用HTTP端口。

        这些只是一些示例,不同的应用程序和服务可能使用不同的端口号。端口号的正确使用确保了网络上各种应用程序的正常通信,并允许多个应用程序在同一台计算机上同时运行而不发生冲突。

第七部分:字节序

7.1 介绍字节序(Endianness)的概念

        字节序(Endianness)是指多字节数据在内存中存储的顺序。它是由计算机体系结构决定的,用于确定在内存中存储多字节数据时,字节的排列顺序是从高位到低位(大端序)还是从低位到高位(小端序)。了解字节序对于在不同计算机之间正确地解释二进制数据非常重要。

7.2 解释大端序和小端序

大端序(Big Endian)

        在大端序中,最高有效字节(Most Significant Byte,MSB)存储在最低内存地址,而最低有效字节(Least Significant Byte,LSB)存储在最高内存地址。这意味着多字节数据的高位字节存储在低地址处,低位字节存储在高地址处。

小端序(Little Endian)

        在小端序中,最低有效字节(LSB)存储在最低内存地址,而最高有效字节(MSB)存储在最高内存地址。这意味着多字节数据的低位字节存储在低地址处,高位字节存储在高地址处。

        字节序的区别在网络通信和数据存储中具有重要性

  • 网络通信: 在网络通信中,不同计算机可能使用不同的字节序。如果发送方和接收方的字节序不匹配,解释数据时可能会产生错误。因此,在网络通信中,通常需要进行字节序的转换,以确保数据正确解释。

  • 数据存储: 计算机在存储多字节数据时通常采用其本地字节序。这意味着如果将数据存储在一个计算机上,然后将其传输到具有不同字节序的计算机,数据可能会被错误解释。因此,在存储和传输数据时,需要考虑字节序并进行适当的转换。

        综上所述,了解字节序的概念以及在网络通信和数据存储中的影响至关重要,特别是在跨不同计算机体系结构之间传输和处理数据时。确保数据在不同计算机之间正确解释是实现互操作性的关键因素。

第八部分:套接字socket

8.1 进程间的通信接口,特殊的文件描述符

        套接字(Socket)是一种用于实现进程间通信的接口,它允许不同计算机上的应用程序进行数据交换套接字允许应用程序通过网络或本地计算机上的进程进行通信,这种通信可以是双向的,可以传输数据、文件或者其他形式的信息。

        套接字的工作方式类似于文件描述符。它们可以被用于打开、读取、写入和关闭,使应用程序能够通过套接字与其他进程进行数据交换。套接字还允许应用程序实现各种不同的通信模式,包括面向连接的通信(如TCP套接字)和无连接的通信(如UDP套接字)。

8.2 套接字分类

        有不同类型的套接字,每种类型适用于不同的通信需求和场景。以下是两种常见的套接字类型:

TCP套接字

        TCP(Transmission Control Protocol)套接字是一种可靠的套接字类型,它提供面向连接的通信。以下是TCP套接字的一些特点:

  • 可靠性: TCP确保数据的可靠传输,它使用确认机制来确保数据的完整性和顺序传递。

  • 有序性: TCP保持数据的有序性,确保接收方按照发送顺序接收数据。

  • 面向连接: TCP在通信前需要建立连接,然后再进行数据传输,之后关闭连接。

  • 适用于可靠性要求高的应用: 由于其可靠性,TCP常用于需要确保数据完整性和顺序的应用,如Web浏览器、电子邮件等。

UDP套接字

        UDP(User Datagram Protocol)套接字是一种无连接的套接字类型,它提供低延迟的通信。以下是UDP套接字的一些特点:

  • 无连接: UDP不需要在通信前建立连接,数据包可以立即传输。

  • 低延迟: 由于无连接性质,UDP通常具有较低的延迟,适用于实时通信。

  • 不可靠性: UDP不提供数据的可靠性传输,数据包可能会丢失或乱序。

  • 适用于实时应用: 由于其低延迟特性,UDP常用于音频、视频流传输以及在线游戏等需要快速传输的应用。

        选择TCP或UDP套接字取决于应用程序的需求。如果应用程序需要可靠性和有序性,TCP是更好的选择。如果应用程序更关注低延迟和快速传输,UDP可能更适合。因此,了解套接字类型的特点和适用场景对于有效地设计和开发网络应用程序至关重要。

        更多C/C++语言Linux系统数据结构ARM板实战相关文章,关注专栏:

   手撕C语言

            玩转linux

                    脚踢数据结构

                            系统、网络编程

                                     探索C++

                                             6818(ARM)开发板实战

📢写在最后

  • 今天的分享就到这啦~
  • 觉得博主写的还不错的烦劳 一键三连喔~
  • 🎉🎉🎉感谢关注🎉🎉🎉

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

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

相关文章

【python】TCP socket服务器 Demo

目录 一、单线程服务器 二、多线程服务器 三、多线程服务器(发送和接收分离) 一、单线程服务器 说明:只能连接一个客户端 import socket,binascii# 创建一个 TCP 套接字 server_socket socket.socket(socket.AF_INET, socket.SOCK_STRE…

智能网联汽车电子电气架构

关键核心技术名称: 智能网联汽车电子电气架构 必要性和国内外技术成熟性简介 随着汽车智能化、网联化的发展趋势,车辆的电子化程度逐渐提高,车载传感器和控制器的数量越来越多,要求必须开发满足智能网联汽车新需求的新一代电子…

计算机组成原理知识——CPU结构组成和功能、堆栈、RISC、

文章目录 前言一、CPU组成二、指令执行步骤1、取指Instruction Fetch/IF2、译码Instruction decode/ID3、访存Memory/MEM4、执行Execute/EX5、写回Writeback/WB 三、冯诺依曼结构和哈佛结构四、数据结构中的堆栈 VS 程序内存中的堆区和栈区1、数据结构的堆栈2、C语言程序的内存…

nas汇编程序的调试排错方法

nas汇编程序的调试排错方法: 1、查找是哪一步错了 2、查看对应的*.lst文件,本例中是"asmhead.lst" 3、根据*.lst文件的[ERROR #002]提示查看源码,改错。 4、重新运行编译,OK 1、查找是哪一步错了: nask.ex…

基于任务队列的机器学习服务实现

将机器模型部署到生产环境的方法有很多。 常见的方法之一是将其实现为 Web 服务。 最流行的类型是 REST API。 它的作用是全天候(24/7)部署和运行,等待接收来自客户端的 JSON 请求,提取输入,并将其发送到 ML 模型以预测…

SpringBoot / Vue 对SSE的基本使用(简单上手)

一、SSE是什么? SSE技术是基于单工通信模式,只是单纯的客户端向服务端发送请求,服务端不会主动发送给客户端。服务端采取的策略是抓住这个请求不放,等数据更新的时候才返回给客户端,当客户端接收到消息后,…

大前端面试注意要点

前端面试:从IT专家角度全面解析 在数字时代,前端开发工程师的角色变得越来越重要。随着网站和应用程序的复杂性和交互性越来越高,对具有专业技能的前端开发人员的需求也在不断增长。对于正在寻找前端开发职位的开发者,或者正在寻…

http请求头部(header)详解

目录 常见的请求头部字段 GET方法的使用方法: POST方法的使用方法: Accept字段的使用方法 Content-Type字段的使用 总结 在互联网协议中,HTTP请求头部(header)是一个非常重要的组成部分。它们是客户端和服务器之…

软件架构设计(八) 基于架构的软件开发方法

1、基于架构的软件设计(ABSD) ABSD虽然在日常生活中并不常见,但是在考试中却是极为常见的,因此仍然是我们的重点学习知识点。 1.1、基本概念 特点 基于架构的软件设计(Architecture-Based Software Design,ABSD),这个开发方法是架构驱动。 即强调由业务、质量和功…

【python自动化】七月PytestAutoApi开源框架学习笔记(一)

前言 本篇内容为学习七月大佬开源框架PytestAutoApi记录的相关知识点,供大家学习探讨 项目地址:https://gitee.com/yu_xiao_qi/pytest-auto-api2 阅读本文前,请先对该框架有一个整体学习,请认真阅读作者的README.md文件。 本文…

【嵌入式软件C编程】主函数free子函数malloc地址的两种方式以及注意事项

本文档主要记录嵌入式C语言在子函数中应用malloc函数的方式,在实际项目中内存管理特别重要 一般在主函数中(main)使用malloc函数,然后在通过free函数进行释放内存,但有时候如果必须在子函数长调用malloc函数该怎样进行…

基于VueCli创建自定义项目

1.安装脚手架 (已安装) npm i vue/cli -g2.创建项目 vue create hm-exp-mobile选项 Vue CLI v5.0.8 ? Please pick a preset:Default ([Vue 3] babel, eslint)Default ([Vue 2] babel, eslint) > Manually select features 选自定义手动选择功能 选择vue的版本 3.x …

电脑黑屏只有鼠标箭头?4个正确处理方法记得收藏!

“我刚刚在用电脑办公呢,突然之间电脑就黑屏了,只剩下一个鼠标箭头。这是什么原因引起的呢?怎么解决电脑黑屏的问题呀?求解答!” 不知道朋友们有没有遇到过在使用电脑时,突然电脑就黑屏了并且只剩下鼠标箭头…

国内免费无限制的chatgpt导航和ai画画

非常实用的AI网址导航,其实际使用体验非常便捷。该导航系统不仅提供了全面的网站分类和搜索功能,还对每个网站进行了精准的评估和排序。推荐高质量的网站资源,并实时检测网站的安全性,保障用户的上网安全。 总的来说&#xff1a…

RHCA之路---EX280(8)

RHCA之路—EX280(8) 1. 题目 On master.lab.example.com using the template file in http://materials.example.com/exam280/gogs as a basis, install an application in the ditto project according to the following requirements: All of the registry entries must poi…

微信小程序源码【195套】【源码导入视频教程+源码导入文档教程+详细图文文档教程】

一、项目说明 盒马鲜生.zip 轻客洗衣.zip 云文档.zip 仿ofo共享单车.zip 仿美团外卖.zip 仿饿了么.zip 灵犀外卖.zip 小契约(交友互动小程序).zip 信息科技公司展示小程序.zip 华云智慧园区.zip 房地产公司展示.zip 企业OA系统小程序.zip 优惠券卡卷小程…

整理mongodb文档:事务(一)

个人博客 整理mongodb文档:事务(一) 原文链接,个人博客 求关注,本文主要讲下怎么在mongose下使用事务,建议电脑端看 文章概叙 本文的开发环境为Nodejs,在‘单机模式’讲解最基本的事务概念。并没有涉及分片以及集群&#xff0…

ESP32C3 LuatOS RC522②写入字符串

编写了字符串转16进制表函数 -- 将字符串转换为十六进制表 local function stringToHexTable(str)local hexTable {}local maxLength 16 -- 最大长度为16个元素-- 将字符串转换为十六进制for i 1, #str doif i > maxLength thenbreakendlocal hex string.format("…

QT第一天

创建登录界面 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->setFixedSize(700,800);//1.实例化一个标签,设置上面界面QLabel *lab1 new QLabel(th…

ElementUI浅尝辄止16:Tag 标签

用于标记和选择。 1.如何使用&#xff1f; 由type属性来选择tag的类型&#xff0c;也可以通过color属性来自定义背景色。<el-tag>标签一</el-tag> <el-tag type"success">标签二</el-tag> <el-tag type"info">标签三</e…