Linux基础 (十三):计算机网络基础概论

一、网络基本概念

1.1 网络

        把独立自主的计算机通过传输介质和网络设备链接起来,就构成一个网络 ,网络是由若干结点和连接这些结点的链路组成,网络中的结点可以是计算机,交换机、 路由器等设备。 网络设备有:交换机、路由器、集线器 传输介质有:双绞线、同轴电缆、光纤。下图是一个简单的网络示意图:

1.2 互联网

         把多个网络连接起来就构成了互联网。目前最大的互联网就是我们常说的因特网。

1.3 IP 地址

 1.3.1 IP地址概念  

          IP 地址就是给因特网上的每一个主机(或路由器)的每一个接口分配的一个在全世界范围内唯一的标识符。IP 地址因其特殊的结构使我们可以在因特网上很方便地进行寻址

1.3.2 IP地址介绍

        IP 地址有分 IPV4 和 IPV6 两种类别格式,IPV4 是类似”A.B.C.D”的格式,它是 32 位 的,用“.”分成四个段,每个段是 8 个位(值为 0-255),用 10 进制表示。IPV6 地址是 128 位,格式类似”XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX”,用“:“分成 8 个 段,每个段 16 个位,用 4 个 16 进制数表示。

Windows平台可使用图像化界面查看:

windows在命令行窗口查看使用命令:ipconfig

Linux在命令行窗口查看使用命令:ifconfig

ip“127.0.0. 1’”代表本主机,是在本主机上进行测试用的。

1.3.3 IP地址的分类

          接下来描述的 IP 地址默认都指的是 IPV4 的地址。为了便于寻址,了解目标主机的位置,每个 IP 地址由网络号和主机号两个部分构成。就像是学校里面为了方便管理,为每个学生分配一个学号,由班级号和在这个班的编号组成,同一个物理网络上所有的主机都使用同一个网络号,只是主机号不同。

  1. A类地址的第一个字节(即网络号)范围是1到127,剩下的三个字节(即主机号)用于标识具体的主机。A类地址适用于大型网络,因为它们可以分配给大量主机。
  2. B类地址的前两个字节(即网络号)用于标识网络,剩下的两个字节(即主机号)用于标识主机。B类地址适用于中型规模的网络。
  3. C类地址的前三个字节(即网络号)用于标识网络,剩下一个字节(即主机号)用于标识主机。C类地址适用于小型网络,因为它们的主机数量相对较少。

1.4 MAC 地址

       MAC 地址(Media Access Control Address,媒体访问控制地址)是用于在网络上唯一标识网络设备的硬件地址它通常由设备的网络接口控制器(NIC)制造商分配,并嵌入到设备的硬件中。标准的 MAC 地址是一个 48 位的标识符,通常表示为 12 位十六进制数,如 "00:1A:2B:3C:4D:5E"。MAC 地址的前24位通常是制造商分配的组织唯一标识符(OUI),后24位是设备的唯一序列号。

1.5 IP地址和MAC地址的关系(面试题)

          有了mac地址还需要ip地址是因为:

  1. IP地址方便寻址
  2. MAC地址无法反应在网络中发生了变化

二、网络分层模型

2.1 网络分层模型的概念(面试题)

        网络分层模型(Network Layered Model)是一种将网络通信功能划分为若干层次的方法,每一层负责特定的任务,且各层之间通过定义良好的接口进行交互。这样的分层设计使得网络系统更易于理解、管理和扩展。最常见的网络分层模型有OSI(开放系统互连)模型和TCP/IP模型。

OSI模型(Open Systems Interconnection Model)

OSI模型由国际标准化组织(ISO)制定,分为七层,从上到下分别是:

  1. 应用层(Application Layer):提供应用程序与网络之间的接口,支持网络服务(如电子邮件、文件传输等)。
  2. 表示层(Presentation Layer):负责数据格式的转换,包括数据加密、解密和压缩。
  3. 会话层(Session Layer):管理会话的建立、维护和终止。
  4. 传输层(Transport Layer)提供端到端的通信控制,保证数据的可靠传输(如TCP协议)。
  5. 网络层(Network Layer):负责数据包的路由选择和转发(如IP协议)。
  6. 数据链路层(Data Link Layer):提供数据帧的传输,负责物理地址寻址、帧定界和错误检测(如以太网协议)。
  7. 物理层(Physical Layer):负责物理媒介上的比特传输,包括电缆、光纤等传输介质。

TCP/IP模型(Transmission Control Protocol/Internet Protocol Model)

TCP/IP模型是互联网的核心协议,分为四层,从上到下分别是:

  1. 应用层(Application Layer):对应OSI模型的应用层、表示层和会话层,提供高层协议和网络服务(如HTTP、FTP、SMTP等)。
  2. 传输层(Transport Layer):提供主机之间的数据传输服务,常见协议有TCP和UDP。
  3. 网络层(Internet Layer)负责数据包的路由和转发,核心协议是IP
  4. 网络接口层(Network Interface Layer):对应OSI模型的数据链路层和物理层,负责实际的数据传输。

对比和应用

  • 层数:OSI模型有七层,TCP/IP模型有四层。
  • 标准化OSI模型是理论性的参考模型,而TCP/IP模型是实际应用中广泛使用的协议栈。
  • 灵活性:OSI模型的每一层定义明确且独立,有助于理解和设计新的协议。TCP/IP模型更注重实际应用和性能优化。

2.2 为什么要进行分层(面试题)

1. 简化复杂性

          网络通信涉及的功能和操作非常复杂,通过分层可以将复杂的任务分解成较小的、更易于管理和理解的模块。每一层只需关注特定的功能,而不需要了解整个系统的所有细节。

2. 模块化设计

         分层使得网络设计模块化,每一层可以独立开发、测试和修改,而不会影响其他层。这种模块化设计增强了系统的可维护性和可升级性。

3. 标准化

      通过定义各层的功能和接口,网络分层模型为不同厂商和开发者提供了统一的标准,使得不同设备和协议能够互操作。标准化促进了设备和技术的兼容性和互通性。

4. 促进互操作性

       不同厂商和不同技术的设备可以通过遵循相同的分层模型和标准协议进行通信。这种互操作性是互联网能够普及和发展的关键因素之一。

5. 故障隔离

        分层设计有助于故障隔离和问题诊断。当网络通信出现问题时,可以根据分层模型定位到具体层次,从而更迅速地找到并解决问题。

6. 分工明确

        每一层都有其明确的功能和职责,使得开发人员可以专注于特定层次的优化和改进。例如,传输层专注于数据的可靠传输,网络层专注于路由和数据转发。

8. 支持协议栈的实现 

        网络协议栈的实现可以遵循分层模型,通过调用下层提供的服务并向上层提供服务,使得整个协议栈的实现更加系统化和规范化。

2.3 端口号

        端口号(Port Number)是计算机网络中的一个重要概念,它是软件层面的, 用于区分同一台计算机上不同的网络服务和应用(标识一个应用程序(进程),区分数据包到达主机上的哪个进程,每个进程都有一个端口号)。它是一个16位的整数,范围从0到65535。3306 mysql,80 http协议。

工作原理

  • 当一台计算机向另一台计算机发送数据时,数据包中包含源IP地址、目标IP地址、源端口号和目标端口号。
  • 目标计算机使用目标端口号将数据包路由到相应的服务或应用程序。
  • 例如,当你在浏览器中访问一个网站时,浏览器会使用HTTP协议,通过目标端口80发送请求,服务器在端口80上监听并处理该请求。

2.4 数据链路层

     数据链路层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。 在计算机网络中由于各种干扰的存在,物理链路是不可靠的。因此,这一层的主要功能是在物理层提供的比特流的基础上,通过差错控制,使有差错的物理线路变为无差错的数据 链路,即提供可靠的通过物理介质传输数据的方法。 该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。

  1. MAC 子层的主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的 访问控制;
  2. LLC 子层的主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。

TCP/IP 协议体系结构中,数据链路层的功能描述为实现网卡接口的网络驱动程序,以 处理数据在物理媒介上的传输,不同的物理网络具有不同的电气特性,网络驱动程序隐藏了这些细节,为上层协议提供了一个统一的接口。这一层主要关注的三个基本问题是:封装成 帧,透明传输和差错检测。

2.5  网络层

       网络层实现数据包的选路和转发。广域网或者说互联网通常使用众多分级的路由器来连接分散的主机或者局域网,因此,通信的两台主机一般不是直接相连的,而是通过多个中间结点(路由器)连接的。网络层的任务就是选择这些中间结点,以确定两台主机之间的通信路径。同时,网络层对上层协议隐藏了网络拓扑连接的细节,使得在传输层和网络应用程序看来,通信的双方是直接相连的。

网络层最核心的协议是 IP 协议(Internet Protocol,因特网协议)。IP 协议根据数据包的目 的 IP 地址来决定何如投递它。

       如果数据包不能直接发送给目标主机,那么 IP 协议就是为它寻找一个合适的下一跳路由器,并将数据包交付给该路由器来转发。多次重复这一过程,数 据包最终到达目标主机,或者由于发送失败而被丢弃。可见,IP 协议使用逐跳的方式确定通信路径。 网络层另外一个重要的协议是 ICMP 协议(因特网控制报文协议)。它是 IP 协议的重要补充,主要用于检测网络连接。

IP 协议为上层协议提供无状态、无连接、不可靠的服务。

  1. 无状态是指通信双方不同步传输数据的状态信息,因此所有 IP 数据报的发送、传输和 接收都是相互独立、没有上下文关系的。这种服务最大的缺点是无法处理乱序和重复的 IP 数据报。虽然 IP 数据报头部提供了一个标识字段用以唯一标识一个 IP 数据报,但它是被用来处理 IP 分片和重组的,而不是用来指示接收顺序的。无状态的优点是简单、高效。无须 为保持通信状态而分配一些内核资源,也无须再每次通信时携带状态信息。
  2. 无连接是指 IP 通信双方都不长久地维持对方的任何信息。这样,上层协议每次发送数据的时候,都必须明确指定对方的 IP 地址。
  3. 不可靠是指 IP 协议不能保证 IP 数据报准确地到达接收端,它只是承诺尽最大努力。

IPV4 头部结构如下:

2.6 传输层

        传输层为两台主机上的应用程序提供端到端的通信。与网络层使用的逐跳通信的方式不 同,传输层只关心通信的起始端和目的端,而不在乎数据包的中转过程。

传输层协议主要有三个:TCP 协议、UDP 协议和 SCTP 协议 ,TCP 协议(传输控制协议)为应用层提供可靠的、面向连接的和基于流的服务。

        TCP 协 议使用超时重传、确认应答等方式来确保数据包被正确的发送至目的端,因此 TCP 服务是可靠的。使用 TCP 协议通信的双方必须先建立 TCP 连接,并在内核中为该连接维持一些必 要的数据结构,比如连接状态,读写缓冲区等。当通信结束时,双方必须关闭连接以释放这些内核数据。TCP 服务是基于流的,基于流的数据没有边界(长度)限制,它源源不断地从 通信地一端流入另一端。发送端可以逐个字节地向数据流中写入数据,接收端可以逐个字节地将它们读出。TCP 协议报头:

UDP 协议(用户数据报协议)则与 TCP 协议完全相反,它为应用层提供不可靠、无连接、基于数据报地服务。“不可靠”意味着 UDP 协议无法保证数据从发送端正确地传送到目的端。如果数据在中途丢失,或者目的端通过数据校验发现数据错误而将其丢弃,则 UDP 协议只是简单地通知应用程序发送失败。因此,如果要使 UDP 协议可靠,那么应用程序通常要自己处理数据确认、超时重传等逻辑。UDP 是无连接的,即通信双发不保持一个长久的联系,因此应用程序每次发送数据都要明确指定接收端的地址。基于数据报的服务,是相对基于流的服务而言的。每次 UDP 数据报都有一个长度,接收端必须以该长度为最小单位 将其所有内容一次性读出,否则数据将被截断。 

2.7 应用层

        应用层负责处理应用程序的逻辑。

三 、网络应用程序通信流程

      如下图,应用程序 A 要将数据”hello” 传给网络上另外一台主机上的应用程序 B, 数 据“hello”从应用层发送给传输层后,传输层在数据前面加上 tcp 协议或 udp 协议的报头, 将整条报文发给网络层,网络层添加自己的 IP 报头,再将整条数据发送给数据链路层。数据链路层将数据封装成能在网络中独立传输的数据单元,即数据帧。封装好的数据帧通过网络传输到另一台主机,然后再从下层依次拆包,将数据部分送往应用层。应用程序 B 就得到 了数据”hello”。

四、网路通信协议

       一组网络规则的集合,在特定的场景下,使用某一个协议,在网路的不同层,就会有不同的协议,重点介绍传输层的tcp协议和udp协议

  1. tcp协议:为应用层提供可靠的、面向连接的和基于流的服务
  2. udp协议:与tcp协议完全相反,它为应用层提供不可靠、无连接、基于数据报的服务

       至此,已经讲解完毕!篇幅较长,慢慢消化,以上就是全部内容!请务必掌握,创作不易,欢迎大家点赞加关注评论,您的支持是我前进最大的动力!下期再见!

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

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

相关文章

名字能化解命中的劫数,你可知道?

老师,是我们全社会都要尊重的职业,教书育人培养着优秀人才。然而,在她人生最脆弱的时候,学校却解除了与她的劳动关系,再次给她“致命一击”,她所遭受的不公待遇和供职学校的冷漠,引发了社会极大…

【Vue】——前端框架的基本使用

💻博主现有专栏: C51单片机(STC89C516),c语言,c,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux&#xf…

聊 · Flutter

曾经的团队是国内最早投入Flutter框架怀抱的团队,后来又有机会负责起了Flutter相关项目,翻回以前写的文章,感慨良多,这是其中的一篇关于这些内容的闲聊。 | 导语Flutter相关的技术资源官网和网友都有过系统且细致的整理&#xff0…

GIT安装以及详细操作流程

一、Git的安装 Git支持Linux、Windows和Mac系统,安装Git,可以到Git官方网站直接下载安装程序。 Git仓库的基本概念和流程 什么是版本库?版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所…

element-plus表格添加简单右键

实现如下 <template><main class"mainClass" > <el-table :data"tableData" style"width: 100%"row-contextmenu"rowContextmenu"cell-contextmenu"cellContextmenu"contextmenu.prevent><el-table-c…

【全开源】Shopro社区团购(小程序版)

邻里间的购物新选择 基于Fastadmin后端管理系统Uniapp客户端&#xff08;仅支持微信小程序&#xff09;开发&#xff0c;生鲜果蔬社区团购的不二之选、快速搭建社区团购平台、让你的产品走进上千个社区。线上团购线下自提&#xff0c;玩转社区消费新模式提供专业、优质的社区团…

openh264 编码命令行工具源码分析

openh264 OpenH264 是由 Cisco 公司发布的一个开源的 H.264 编码和解码器。它提供了命令行工具&#xff0c;可以用于对视频进行编码和解码操作。 使用说明 openh264 编码命令行工具可以使用命令行或 config 配置进行编码操作。编译和使用方法具体可以参考 Windows11编译open…

easyexcel将csv转为excel处理数字问题

使用easyexcel可以将csv格式的文件转为.xlsx文件&#xff0c;但是csv中有很多数字&#xff0c;比如&#xff1a;"123","12.34","-111"&#xff0c;默认情况下会将其作为字符串写入.xlsx文件&#xff0c;就如同下面一样&#xff0c;字符类型的数字…

国产SDI/功能与GV7600/GS2972类似

是一款传递数字标清和高清信号的数字视频发送器&#xff0c;功能与GV7600/GS2972类似&#xff0c;集成了线缆驱动器&#xff0c;可以使用 75 欧姆的同轴线缆传递525i&#xff0c;625i&#xff0c;720P&#xff0c;1080P。 支持的速率如下&#xff1a; 如需更多资料请留言哦&am…

【Spring框架全系列】SpringBoot_3种配置文件_yml语法_多环境开发配置_配置文件分类(详细)

文章目录 1.三种配置文件2. yaml语法2.1 yaml语法规则2.2 yaml数组数据2.3 yaml数据读取 3. 多环境开发配置3.1 多环境启动配置3.2 多环境启动命令格式3.3 多环境开发控制 4. 配置文件分类 1.三种配置文件 问题导入 框架常见的配置文件有哪几种形式&#xff1f; 比如&#xf…

python11 序列的相关操作

枚举遍历 序列的相关操作 text "hello,python" # in 判断字符是否在序列中&#xff0c;存在返回true,否则返回false print(p是否存在:,(p in text)) print(a是否存在:,(a in text)) # not in 判断字符不在序列中&#xff0c;不存在返回true,否则返回false print(p不…

2024年数字化经济与金融创新国际学术会议(ICDEFI 2024)

2024年数字化经济与金融创新国际学术会议&#xff08;ICDEFI 2024&#xff09; 会议简介 2024年数字经济与金融创新国际学术会议即将召开。此次会议旨在汇集全球数字经济与金融创新领域的专家学者&#xff0c;共同探讨数字经济的发展趋势以及金融创新的路径。与会者将分享前沿…

如何理解 Java 8 引入的 Lambda 表达式及其使用场景

Lambda表达式是Java 8引入的一项重要特性&#xff0c;它使得编写简洁、可读和高效的代码成为可能。Lambda表达式本质上是一种匿名函数&#xff0c;能够更简洁地表示可传递的代码块&#xff0c;用于简化函数式编程的实现。 一、Lambda表达式概述 1. 什么是Lambda表达式 Lambd…

【STM32】STM32F103C6T6标准外设库

1、标准外设库获取 第一步&#xff0c;首先获取标准外设库&#xff0c;可以从官网进行下载。 https://www.st.com.cn/zh/embedded-software/stm32-standard-peripheral-libraries.html 根据自己的型号选择不同的系列&#xff0c;我这里选择是STM32F1系列 下载最新版本V3.6&a…

【QT5】<总览二> QT信号槽、对象树及样式表

文章目录 前言 一、QT信号与槽 1. 信号槽连接模型 2. 信号槽介绍 3. 自定义信号槽 二、不使用UI文件编程 三、QT的对象树 四、添加资源文件 五、样式表的使用 六、QSS文件的使用 前言 承接【QT5】&#xff1c;总览一&#xff1e; QT环境搭建、快捷键及编程规范。若存…

【最新鸿蒙应用开发】——一篇搞懂什么是UIAbility

UIAbility组件 UIAbility组件是一种包含UI的应用组件&#xff0c;UIAbility组件是系统调度的基本单元&#xff08;最小单元&#xff09;&#xff0c;为应用提供绘制界面的窗口&#xff0c;主要用于和用户交互。一个应用可以包含一个或多个UIAbility组件。 UIAbility的设计理念…

AI大模型应用开发实践:5.快速入门 Assistants API

快速入门 Assistants API Assistants API 允许您在自己的应用程序中构建人工智能助手。一个助手有其指令,并可以利用模型、工具和知识来回应用户查询。 Assistants API 目前支持三种类型的工具: 代码解释器 Code Interpreter检索 Retrieval函数调用 Function calling使用 P…

Java同步与线程安全,同步方法、同步块和java.util.concurrent包的使用

Java的同步与线程安全是并发编程中至关重要的部分。在多线程环境下&#xff0c;确保数据的一致性和避免竞态条件&#xff08;race condition&#xff09;是程序设计的关键。 一、Java中的线程安全 线程安全&#xff08;Thread Safety&#xff09;是指多线程环境下&#xff0c…

一键开启:盲盒小程序里的梦幻奇遇

在繁忙的都市生活中&#xff0c;每个人心中都藏着一个关于奇遇的梦想。如今&#xff0c;我们为您精心打造了一款盲盒小程序——“梦幻奇遇”&#xff0c;只需一键开启&#xff0c;就能带您走进一个充满无限惊喜和梦幻色彩的奇幻世界。 一、神秘盲盒&#xff0c;惊喜连连 “梦幻…

gitlab之cicd的gitlab-runner集成-dockerfile构建环境

目录 概述离线资源docker-compose问题 docker-compose问题1问题2 gitlab-runner集成gitlab 概述 cicd引文目录是想通过dockerfile构建 maven、jdk、docker环境的 gitlab-runner 运行环境。但docker最后测试的时候有点问题&#xff0c;且最后使用 kubectl 时有麻烦&#xff0c;所…