首页 > 系统相关 >Linux基础 (十三):计算机网络基础概论

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

时间:2024-06-05 21:03:18浏览次数:26  
标签:协议 IP Linux 基础 网络 TCP 计算机网络 地址 主机

一、网络基本概念

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协议完全相反,它为应用层提供不可靠、无连接、基于数据报的服务

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

标签:协议,IP,Linux,基础,网络,TCP,计算机网络,地址,主机
From: https://blog.csdn.net/weixin_47040031/article/details/139460631

相关文章

  • Studying-代码随想录算法训练营day1| 数组理论基础,704二分查找,27.移除元素
    第一天......
  • Linux容器架构
    1.Iaas:基础设施即服务Infrastructure-as-a-ServicePaas:平台即服务Platform-as-a-ServiceSaas:软件即服务Software-as-a-ServiceCaas:容器即服务介于IAAS和PAASIAAS,PAAS,SAAS这些服务,用于帮助人们更快实现目标(搭建环境,使用产品)从左到右,人们需要管理与维护的地方......
  • Flask Web开发基础:数据库与ORM实战
    FlaskWeb开发基础:数据库与ORM实战该文介绍了如何使用Flask、SQLAlchemy和SQLite实现数据库操作。首先,通过创建虚拟环境和安装flask-sqlalchemy(版本2.5.1)及sqlalchemy(版本1.4.47)来设置环境。接着,配置数据库URI,定义User和Movie模型类表示数据库表,并通过db.create_all......
  • 基于c语言的UDP客户端、服务端二合一基础代码
    基于c语言的UDP客户端、服务端二合一基础代码示意图:准备好了吗,以下是基础代码:/****************************************************************************************************************************************字节序:数据以字节流的方式进行传输,底层都是......
  • 嵌入式 Linux LED 驱动开发实验学习
    I.MX6U-ALPHA开发板上的LED连接到I.MX6ULL的GPIO1_IO03这个引脚上,进行这个驱动开发实验之前,需要了解下地址映射。地址映射MMU全称叫做MemoryManageUnit,也就是内存管理单元。在老版本的Linux中要求处理器必须有MMU,但是现在Linux内核已经支持无MMU的处理器了。M......
  • 基于c语言的TCP客户端、服务端基础代码
    基于c语言的TCP客户端、服务端基础代码基本流程:客户端:#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<stdio.h>#include<errno.h>#include<sys/socket.h>#include<netinet/in.h>#include<netinet/......
  • 【linux-IMX6ULL-pinctrl和gpio子系统】
    目录1.pinctrl子系统1.1pinctrl子系统简介1.2pinctrl子系统使用1.2.1追加pin节点1.2.2配置引脚信息节点2.GPIO子系统2.1GPIO子系统简介2.1gpio子系统API函数3.检查PIN是否被其他外设使用1.pinctrl子系统1.1pinctrl子系统简介  pinctrl和gpio子系......
  • 【Java基础】 迭代器
    文章目录前言一、迭代器的概念二、迭代器的使用 三、迭代器的优势四、迭代器的技巧 1.使用增强的for循环(for-each)2. 使用迭代器的泛型3.只在必要时获取迭代器4.考虑并发性5.避免同时修改和遍历集合总结前言迭代器是一种在Java中常用的设计模式,用于......
  • 【调试笔记-20240601-Linux-在 OpenWRT-23.05 上配置 frpc 实现内网穿透】
    调试笔记-系列文章目录调试笔记-20240601-Linux-在OpenWRT-23.05上配置frpc实现内网穿透文章目录调试笔记-系列文章目录调试笔记-20240601-Linux-在OpenWRT-23.05上配置frpc实现内网穿透前言一、调试环境操作系统:OpenWrt23.05.3调试环境调试目标二、调试步......
  • linux 测试磁盘读写压力
    目录linux测试磁盘读写压力确定唯一性验证写入速度验证读取速度linux测试磁盘读写压力新到两台服务器,上面均没有运行服务,服务器品牌不一样,现在我想测试一下两台服务器的磁盘读写速度来比较哪个服务器好。确定唯一性比如我sdb是数据盘,已经格式化为sdb1,挂载到了/data目录下......