Linux21 --- 计算机网络基础概论(网络基本概念、网络分层模型、网络应用程序通信流程)

news2024/11/27 0:32:31

一、网络基本概念

1、网络

网络是由若干结点和连接这些结点的链路组成,网络中的结点可以是计算机,交换机、
路由器等设备。
网络设备有:交换机、路由器、集线器
传输介质有:双绞线、同轴电缆、光纤

下图是一个简单的网络示意图:
在这里插入图片描述

2、互联网

把多个网络连接起来就构成了互联网。目前最大的互联网就是我们常说的因特网。
在这里插入图片描述

3、IP 地址

1)IP 地址:

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

2)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 进制数表示。

◼ IPV4 地址示例: “192.168.31.1”
◼ IPV6 地址示例:“2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b“

接下来描述的 IP 地址默认都指的是 IPV4 的地址。
为了便于寻址,了解目标主机的位置,每个 IP 地址由网络号主机号两个部分构成。
同一个物理网络上所有的主机都使用同一个网络号,只是主机号不同。

3)IP 地址组成:

在这里插入图片描述

4)IP 地址分类:

在这里插入图片描述
由于每类地址的开头是固定的,因此每类地址都有自己的范围:

◼ A 类:IP 地址范围为 0.0.0.0~127.255.255.255。
◼ B 类:IP 地址范围为 128.0.0.0~191.255.255.255。
◼ C 类:IP 地址范围为 192.0.0.0~223.255.255.255。
D 类和 E 类一般不使用。

5)查看自己的 ip 地址

使用命令“ifconfig”可以在 linux 查看自己的 ip 地址,如下图:
在这里插入图片描述
使用命令“ipconfig”可以在 windows 查看自己的 ip 地址

4、MAC 地址 (物理地址、硬件地址)

在局域网中,硬件地址又称为物理地址或者 MAC 地址,长度 48 位,是固化在计算机适配器的 ROM 中的地址。
因此假定连接在局域网上的一台计算机的适配器坏了而我们更换了一个新的适配器,那么这台计算机的局域网的“地址”也就改变了,虽然这台计算机的地理位置没有发生变化。
其次,当我们把一个笔记本从一个城市带到另一个城市时,虽然地理位置改变了,但是电脑在局域网中的“地址”仍然不变。由此可见,局域网上某个主机的“地址”根本不能告诉我们这台主机位于什么地方。在网络上方便的寻找某个主机,还得依靠 ip地址进行。

MAC 地址示例:

在这里插入图片描述

5、端口号

端口位运用程序的编号,当网络上一个数据传入,将这个数据传给那个基础4,通过端口。
在这个主机上,标识一个进程。

如果 IP 是用来定位街区的,那么端口就是对应于该街区中每一户的门牌号。在通讯过程中,数据通过各种通讯协议最终抵达设备(如计算机)后,这里的设备就相当于一个街区,而在设备计算机内部有很多程序在跑,数据进来之后,必须要给它一个对应的门牌号(即端口号),程序才方便进行后续操作。

端口号属于传输协议的一部分,因此我们可以说,数据通过 IP 地址发送对应的数据到指定设备上,而通过端口号把数据发送到指定的服务或程序上。

程序一般不止是监听指定的端口号,而且也会明确对应的传输协议。所以我们在进行数据传输的时候,既要指定对应的端口号,也要指定对应的通讯协议,很多人仅仅会说:程序 A 监听着 33001 端口,这个是不正确的,至少是不完全正确的。相应的,我们应该这样说:程序 A 使用 TCP 协议,监听 33001 端口,当然你也可以说:程序 A 使用 UDP 协议,监听 33001 端口。

指定传输协议和端口,显而易见的好处在于,当我们进行端口转发或者构建网络防火墙的时候,我们可以很方便的通过协议和端口进行隔离。以防止不可预见的意外发生。对于计算机来说,通过这种方式可以防止外网各种不必要的数据,进入本地局域网。

你可能会想,这么多端口号,如果大家都用同一个,那不是也有冲突。没错,这就需要一个专门的组织来管理它们,IANA( Internet Assigned Numbers Authority 即互联网号码分配局 ),它负责管理端口注册。大多数主流的程序,都有一个明确的已注册端口,比如常见的 FTP 监听 20、 21 端口,而 HTTP 服务监听 80 端口等。如果有一个程序想注册某个端口,那么 IANA 会先去查一查这个端口是否已被注册,如果已经被注册了,它则会拒绝申请。

端口号根据范围分为三种:

1 . Well-Known Ports(即公认端口号)

它是一些众人皆知著名的端口号,这些端口号固定分配给一些服务,
我们上面提到的 HTTP 服务、 FTP服务等都属于这一类。知名端口号的范围是:0-1023。

2 . Registered Ports(即注册端口)

它是不可以动态调整的端口段,这些端口没有明确定义服务哪些特定的对象。
不同的程序可以根据自己的需要自己定义,注册端口号的范围是:1024-49151。

3 . Dynamic, private or ephemeral ports(即动态、私有或临时端口号)

顾名思义,这些端口号是不可以注册的,
这一段的端口被用作一些私人的或者定制化的服务,
当然也可以用来做动态端口服务,这一段的范围是:49152–65535。

————————————————
版权声明:本文为CSDN博主「正宗六脉神剑」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43837883/article/details/114313461

6、网络协议

网络协议就是一组网络规则的集合,是我们共同遵守的约定或标准。
常见的协议:

◼ HTTP:超文本传输协议
◼ FTP: 文件传输协议
◼ TELNET : 是 internet 远程登陆服务的标准协议。
◼ TCP : 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议
◼ UDP :用户数据报协议
◼ IP : Internet Protocol 简称 IP,又译为网际协议或互联网协议
◼ ICMP :因特网控制报文协议
◼ ARP : 地址解析协议,是根据 IP 地址获取 MAC 地址的协议
◼ RARP : 逆地址解析协议

二、网络分层模型

1、OSI 的 7 层模型与 tcp/ip 协议族体系 4 层结构

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2、数据链路层

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

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

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

3、网络层

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

网络层最核心的协议是 IP 协议(Internet Protocol,因特网协议)。IP 协议根据数据包的目的 IP 地址来决定何如投递它。如果数据包不能直接发送给目标主机,那么 IP 协议就是为它寻找一个合适的吓一跳路由器,并将数据包交付给该路由器来转发。多次重复这一过程,数据包最终到达目标主机,或者由于发送失败而被丢弃。可见,IP 协议使用逐跳的方式确定通信路径。

网络层另外一个重要的协议是 ICMP 协议(因特网控制报文协议)。它是 IP 协议的重要
补充,主要用于检测网络连接。

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

无状态是指通信双方不同步传输数据的状态信息,因此所有 IP 数据报的发送、传输和
接收都是相互独立、没有上下文关系的。这种服务最大的缺点是无法处理乱序和重复的 IP数据报。虽然 IP 数据报头部提供了一个标识字段用以唯一标识一个 IP 数据报,但它是被用来处理 IP 分片和重组的,而不是用来指示接收顺序的。无状态的优点是简单、高效。无须为保持通信状态而分配一些内核资源,也无须再每次通信时携带状态信息。

无连接是指 IP 通信双方都不长久地维持对方的任何信息。这样,上层协议每次发送数
据的时候,都必须明确指定对方的 IP 地址。不可靠是指 IP 协议不能保证 IP 数据报准确地到达接收端,它只是承诺尽最大努力。

IPV4 头部结构如下:
在这里插入图片描述

4、传输层

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

传输层协议主要有三个:TCP 协议、UDP 协议和 SCTP 协议

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

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

SCTP 协议(流控制传输协议)是一种相对较新的传输层协议,它是为了再因特网上传
输电话信号而设计的。这里暂时不讨论 SCTP 协议。

5、应用层

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

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

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

应急启动电源+充气一体式方案设计

汽车应急启动电源是为驾车出行的爱车人士和商务人士所开发出来的一款多功能便携式移动电源。它的特色功能是用于汽车亏电或者其他原因无法启动汽车的时候能启动汽车。同时将充气泵与应急电源、户外照明等功能结合起来,是户外出行必备的产品之一。 汽车应急启动电源应…

springboot源码编译报错Unable to start the daemon process

官方网址:GitHub - spring-projects/spring-boot: Spring Boot springboot版本: 报错截图: 报错代码: Unable to start the daemon process. This problem might be caused by incorrect configuration of the daemon. For examp…

jsp196ssm毕业设计选题管理系统hsg4361B6

本系统选用Windows作为服务器端的操作系统,开发语言选用Java,数据库选用Mysql,使用mybatis数据库连接技术,使用Myeclipse作为系统应用程序的开发工具,Web服务器选用Tomcat版本。 下面分别简单阐述一下这几个功能模块需…

pytest配置文件合集(一)-----------conftest.py应用

配置文件: 配置文件一般存在项目的根目录下,官方文档介绍了四种配置文件,每种文件有各自的用处。 pytest.ini:主配置文件,最常用,优先匹配配置项 tox.ini :可以理解为pytest.ini的另一种写法&…

接口测试方法论——WebSocket一点通

WebSocket是HTML5提供的一种能在单个TCP连接上进行全双工通信的协议。前面介绍过,HTTP是一种无状态、无连接、单向的应用层协议。 HTTP采用了请求/响应模型:通信请求只能由客户端发起,服务器负责对请求做出应答处理。但这会出现一个很严重的…

【Java集合】List接口常用方法及实现子类

文章目录List接口> List 接口的常用方法> List的三种遍历方式> List 排序练习※ ArrayList 使用注意事项※ ArrayList 底层结构※ Vector 底层结构※ LinkedList 底层结构 (双向链表和增删改查案例)> ArrayList 和 LinkedList 比较List接口 …

字节跳动岗位薪酬体系曝光,看完感叹:不服不行

曾经的互联网是PC的时代,随着智能手机的普及,移动互联网开始飞速崛起。而字节跳动抓住了这波机遇,2015年,字节跳动全面加码短视频,从那以后,抖音成为了字节跳动用户、收入和估值的最大增长引擎。 自从字节…

postgresql源码学习(51)—— 提交日志CLOG 提交日志CLOG 原理 用途 管理函数

一、 CLOG是什么 CLOG(commit log)记录事务的最终状态。 物理上,是$PGDATA/pg_xact目录下的一些文件逻辑上,是一个数组,下标为事务id,值为事务最终状态1. 事务最终状态 clog.h中定义了4种事务状态 /** …

Android开发:Fragment中优雅使用ViewBinding【Java】

目录 前言 官网示例 封装 前言 ViewBinding可以帮助我们减少代码中的大部分findViewById,官网中提到了它的优点和缺点: Null 安全:由于视图绑定会创建对视图的直接引用,因此不存在因视图 ID 无效而引发 Null 指针异常的风险…

Kotlin小知识之高阶函数

文章目录高阶函数定义高阶函数函数类型高阶函数示例内联函数内联函数的作用内联函数的用法noinline与crossinline高阶函数 定义高阶函数 高阶函数和Lambda的关系是密不可分的.像接受Lambda参数的函数就可以称为具有函数式编程风格的API了当我们想要定义自己的函数式API那就得…

使用 Learner Lab - 使用 AWS Lambda 将图片写入 S3

使用 Learner Lab - 使用 AWS Lambda 将图片写入 S3 AWS Academy Learner Lab 是提供一个帐号让学生可以自行使用 AWS 的服务,让学生可以在 100 USD的金额下,自行练习所要使用的 AWS 服务,以下使用 AWS Lambda 将图片写入 S3。 如何进入 Le…

Git源码(Linus 2005 年提交的最初版本)阅读笔记

Linus 发疯文学欣赏 Git 是 Linux 之父 Linus Torvalds 于2005年开发的用于帮助管理 Linux 内核开发的开源版本控制软件。 美好的一天从阅读 Linus 的发疯文学开始。 (1) Linus 教你学习 Git (2) Linus 评价 CVS (Concurrent Version System) (3) 独一无二的 Linus 调侃结束&a…

手把手教你写一个生成yapi接口代码Chrome 扩展插件

前言 公司想开发个公众号,想在公众号里做业务,也不是做小程序,但是以后也可能做小程序。emm,就是这么随意。所以就找个到了uniapp,说是可以开发一套代码,多平台运行。开发语法还是vue,感觉也没…

RabbitMQ消息队列——快速入门

目录 1、MQ介绍 1.1、什么是MQ? 1.2、MQ的能够解决的问题 1.2.1、削峰填谷 1.2.3、异步处理 1.3、MQ的选择 1.3.1、Kafka 1.3.2、ActiveMQ 1.3.3、RocketMQ 1.3.4、RabbitMQ 2、RabbitMQ的介绍 2.1、RabbitMQ的概述 2.2、AMQP 2.3、JMS 2.4、RabbitMQ…

关系抽取:传统:UniRel: Unified Representation and Interaction for Joint Relational

针对传统下的三元组抽取提出的一种方法,在NYT和webNLG数据集上,再次刷新榜单。 本来对这个结果不是很确定,但作者公布了源码,we can reformulate it . 很少在看到这种文章了吧。 Core idea 换了一种解释思路。 从entity-entity的…

ARM汇编之乘法指令

ARM汇编之乘法指令前言 首先,请问大家几个小小问题,你清楚: 乘法指令有哪些种类呢?ARM乘法指令具体的使用场景又有哪些? 今天,我们来一起探索并回答这些问题。为了便于大家理解,以下是本文的…

精准诊断,精确治疗,智芯传感ZXPA侵入式压力传感器为心血管疾病患者带来福音

近日,据联合国《世界人口展望2022》报告显示,地球人口已正式步入“80亿时代”!人口数量增加,从一个侧面反映了人类文明的进步。此外,随着人类预期寿命增加,加上生育率下降,将加剧全球人口老龄化…

基于模型的聚类和R语言中的高斯混合模型

介绍 四种最常见的聚类方法模型是层次聚类,k均值聚类,基于模型的聚类和基于密度的聚类 . 最近我们被客户要求撰写关于聚类的研究报告,包括一些图形和统计输出。 可以基于两个主要目标评估良好的聚类算法: 高组内相似性低组间相…

小程序中的自定义组件以及组件通信、数据共享、插槽、behaviors

一、创建组件和使用自定义组件 1.创建组件 ①在项目的根目录中,鼠标右键,创建components -> 文件夹 ②在新建的components -> 文件夹上,鼠标右键,点击“新建Component ③键入组件的名称之后回车,会自动生成组件对应的4个…

卡尔曼滤波Kalman Filtering:介绍

本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记。 控制理论(control theory)是工程学的分支之一,主要应对工程系统控制的问题。比如控制汽车发动机的功率输出,稳定电动机的转速,控制“反应速率”&#x…