计算机网络——初识网络

news2024/11/14 13:56:32

一、局域网与广域网

1.局域网(LAN)

        局域网:即Local Area Network,简称LAN。Local即标识了局域⽹是本地,局部组建的⼀种私有⽹络。局域⽹内的主机之间能⽅便的进⾏⽹络通信,⼜称为内⽹;局域⽹和局域⽹之间在没有连接的情况下,是⽆法通信的。以下是实现局域网的几种方式:

(1)基于网线直接连接,如图1.1.1所示:

图1.1.1 基于网线直接连接

(2)基于集线器组建,如图1.1.2所示:

         要注意的是,集线器是把一个网口扩展成多个,扩展出的网口之间会有冲突,所以同一时刻只有一条路能通,相比之下,交换机则是扩展出这些路线,各个网口之间互不影响。

图1.1.2 基于集线器组建

(3)基于交换机组建,如图1.1.3所示:

图1.1.3 基于交换机组建

(4)基于交换机和路由器组建,如图1.1.4所示:

图1.1.4 基于交换机与路由器组建

2.广域网(WAN)

        广域网:即Wide Area Network,简称WAN。通过路由器,将多个局域⽹连接起来,在物理上组成很⼤范围的⽹络,就形成了⼴域⽹。⼴域⽹内部的局域⽹都属于其⼦⽹。其大致的实现逻辑可参考图1.2所示的方式:

图1.2 广域网搭建

二、网络通信基础

1.IP地址

        IP地址描述了一个设备在网络上的位置,在生活中,我们地址的地址例如:XXX省XXX市XXX区XXX小区这样来进行描述,在计算机中则是通过数字来进行描述地址(IP地址),IP地址是一个32位的二进制数,通常被分割成4个“8位二进制数”(也就是4个字节),为了方便表示,往往把IP地址表示成“点分十进制”的方式,使用3个.把四个字节分成四部分,每部分取值范围是0~255。例如:192.168.0.100。

2.端口号

        IP地址描述了主机在网络中的位置,那么端口号则是描述一个主机上的哪个应用程序,有了IP地址可以确定主机,但是一个主机上可以存在很多个程序在使用网络,这时候当主机收到网络数据时就需要区分出这个网络数据是要交给哪个应用程序的,这就像发送快递时,我们不仅需要指定收货地址(IP地址),还需要指定收获人(端口号)。

        每个程序在进行网络通信过程中都有一个端口号,这个端口号可以是用户手动指定,也可以系统自动分配,但是一个主机上程序之间的端口号不能冲突,这个端口号是一个0~65535的整数。

3.认识协议

        在有了IP地址与端口号后,我们可以确定网络中唯一的主机的唯一程序(进程),但是还是存在一个问题,网络通信是基于二进制0/1数据来传输的,如何描述对方我们发送的数据是什么样的呢?

        网络通信传输的数据类型有很多种:图片、音乐、视频、文本等,同一个类型数据格式也可能不同,这时候就需要协议来规定双方在网络传输过程中的数据格式了。

        协议:⽹络协议的简称,⽹络协议是⽹络通信(即⽹络数据传输)经过的所有⽹络设备都必须共同遵 从的⼀组约定、规则。如怎么样建⽴连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能 相互通信交流。

        例如市面上有很多不同形状的灯管,但是他们和灯座上的接口是一定能对应上的,这是因为所有生产灯管的厂商都统一遵循灯管与灯座之间的规格,所以可以确保任意灯管与灯座之间的搭配是可行的,这就是现实生活中协议的一种体现。

4.网络通信五元组

        在TCP/IP协议中,⽤五元组来标识⼀个⽹络通信:

        1. 源IP:标识源主机。

        2. 源端⼝号:标识源主机中该次通信发送数据的进程。

        3. ⽬的IP:标识⽬的主机。

        4. ⽬的端⼝号:标识⽬的主机中该次通信接收数据的进程。

        5. 协议号:标识发送进程和接收进程双⽅约定的数据格式。

三、协议分层

1.分层的好处

        对于⽹络协议来说,往往分成⼏个层次进⾏定义。 分层的初心是为了让复杂的一个协议变成简单的多个协议,并且还附带了很多好处:

  • 上层协议直接使用下层协议即可,不需要了解下层协议的细节;

例如这里我们打电话,我们只要会说汉语就可以,并不需要了解电话的工作原理。  

  • 某一层的协议进行替换之后,对于其他层没有什么影响。

例如下图,当我们语言协议发生变化,或者电话协议发生变化,并不会影响我们的使用 

2.OSI七层模型

        OSI:即Open System Interconnection,开放系统互连

  • OSI 七层⽹络模型是⼀个逻辑上的定义和规范:把⽹络从逻辑上分为了7层。
  • OSI 七层模型是⼀种框架性的设计⽅法,其最主要的功能使就是帮助不同类型的主机实现数据传 输;

        OSI七层模型划分为以下七层:

 

        OSI 七层模型既复杂⼜不实⽤:所以OSI七层模型没有落地实现。实际组建⽹络时,只是以OSI七层模型设计中的部分分层,也即是以下TCP/IP五层模型来实现。  

3.TCP/IP五层模型

        TCP/IP是⼀组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP通讯协议采⽤了5层的层级结构,每⼀层都呼叫它的下⼀层所提供的⽹络来完成⾃⼰的需求。

  • 应⽤层:负责应⽤程序间沟通,如简单电⼦邮件传输(SMTP)、⽂件传输协议(FTP)、⽹络远 程访问协议(Telnet)等。我们的⽹络编程主要就是针对应⽤层。
  • 传输层:负责两台主机之间的数据传输。如传输控制协议(TCP),能够确保数据可靠的从源主机发 送到⽬标主机。
  • ⽹络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识⼀台主机,并通过路由表 的⽅式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)⼯作在⽹路层。
  • 数据链路层:负责设备之间的数据帧的传送和识别。例如⽹卡设备的驱动、帧同步(就是说从⽹线上 检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就⾃动重发)、数据差错校验等⼯作。 有以太⽹、令牌环⽹,⽆线LAN等标准。交换机(Switch)⼯作在数据链路层。
  • 物理层:负责光/电信号的传递⽅式。⽐如现在以太⽹通⽤的⽹线(双绞线)、早期以太⽹采⽤的的同 轴电缆(现在主要⽤于有线电视)、光纤,现在的wifi⽆线⽹使⽤电磁波等都属于物理层的概念。物理 层的能⼒决定了最⼤传输速率、传输距离、抗⼲扰性等。集线器(Hub)⼯作在物理层。

4.网络设备所处分层

(1)主机

        它的操作系统内核实现了从传输层到物理层的内容,也就是TCP/IP五层模型的下四层

(2)路由器(传统)

        它实现了从网络层到物理层,也就是TCP/IP五层模型的下三层

(3)交换机(传统)

        它实现了从数据链路层到物理层,也就是TCP/IP五层模型的下两层

(4)集线器

        它只实现了物理层

        当然,随着现在网络设备技术的不断发展,也出现了许多3层或4层的交换机,4层路由器,所以上述的说的网络设备都是传统意义上的交换机和路由器。

5.封装与分用

        封装与分用是网络传输数据过程中最核心的流程,这里我们以QQ发送与接收信息的过程来模拟封装与分用的步骤。

(1)封装

①应用层(应用程序)

        在应用层中所用到的应用层协议往往是实现这个程序的程序员自己定义的,例如QQ从消息输入框中获取到用户输入的hello就把这个字符串构造成一个应用层数据包,这样一个应用层数据包就是按照QQ这个程序自定义的应用层协议约定的格式来构造的。

应用层封装

        应用程序会调用操作系统提供的api,把这个数据包交给传输层。 

② 传输层

        传输层把应用层传来的数据作为一个整体再根据传输层的协议构造成一个传输层数据包,传输层中涉及到的协议最主要的就是TCP协议UDP协议,这里假定使用的是UDP协议进行通信,构造出来的数据包就是一个UDP数据包。

传输层封装

         像上面添加报头的过程就叫做“封装”,其实就是字符串的拼接,只不过报头有一定的数据结构,这里的UDP报头虽然不能保护数据,但是可以起到“贴标签”的类似效果,对于UDP报头最主要的信息就是源端口目的端口

        拼好的传输层数据包就可以交给下一层网络层继续进行封装了。(交给下层,指的是下层协议提供一组api,上层调用这个api(函数),并且把刚才构造好的数据通过参数传过去,下层协议就可以来处理这个数据了)。

 ③网络层

        网络层涉及到的最核心的协议就是IP协议,网络层通过IP协议将刚才传输层的UDP数据包作为一个整体再拼上一个IP协议的报头,构造成一个IP数据包。

网络层封装

         这里IP报头中最关键的信息就是源IP目的IP了。

        构造完IP数据包后,IP协议继续调用数据链路层的api,把数据再交给数据链路层的协议进行处理。

④数据链路层

        数据链路层中涉及到的核心协议是以太网协议,数据链路层通过以太网协议将网络层传来的IP数据包作为整体加上一个帧头与帧尾构造成一个以太网数据帧。

数据链路层封装

        封装结束后将以太网数据帧继续传给物理层。

⑤物理层

        把上面传来的以太网数据帧,二进制结构(一串0 1 0 1这样的数据)转换成光信号(光纤,通过光的频谱进行编码)/电信号(网线,高低电平)/电磁波(无线wifi),然后进行发送。

        经过上面的一系列操作,数据才算从A的电脑中发送出去了,这也就是封装的过程。

(2)分用

        分用的过程可以理解为封装的逆过程,这里我们就不考虑信息在中间的传输过程了,默认信息已经发送到B的电脑中,开始模拟分用的过程。

①物理层

        B的物理层收到了光信号/电信号/电磁波,就会把这些物理信号转换成数字信号(二进制的0 1 0 1数据),得到一个以太网数据帧,进一步的把得到的数据帧交给数据链路层进行处理。

 ②数据链路层

        数据来到数据链路层后,接收方要与发送方使用一样的协议才能进行分用,然后按照以太网数据帧的格式进行解析取出其中的载荷再交给上层协议。

数据链路层分用
 ③网络层

        按照IP协议的格式进行解析,取出其中载荷再交给上层协议。

网络层分用
④传输层

        前面我们约定传输层用的UDP协议,所以这里我们按照UDP协议格式进行解析,取出载荷再交给上层协议。

传输层分用
⑤应用层

        按照QQ应用程序内部的应用层协议格式来解析数据,QQ程序拿到这些信息后就会在窗口给你弹出提示并且把消息、消息的发送者、发生时间都显示到聊天窗口上。

应用层分用

        到这分用的过程就演示完了,其实数据在传输过程中经过交换机/路由器时也会进行封装与分用,经过一个个交换机/路由器数据才会传到目的地。 

四、基本术语介绍

        在每层协议中封装出的数据其实都有自己的一个名词后缀,标准如下:

包(packet)                IP数据包

段(segment)             TCP数据段

报(datagram)            UDP数据报

帧(frame)                  以太网数据帧

五、结语

        文章到此就要结束了,本篇文章主要介绍了计算机网络的基本概念与流程,可以让大家更直观的认识到计算机网络,如果你认为读了本篇文章您有所收获,希望给本篇文章点个赞,收藏走一波,后面我会继续与大家分享计算机网络的相关知识,关注博主不迷路~~~您的支持就是我创作最大的动力。

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

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

相关文章

idea No versioned directories to update were found

idea如何配置svn以及svn安装时需要注意什么 下载地址:https://112-28-188-82.pd1.123pan.cn:30443/download-cdn.123pan.cn/batch-download/123-820/3ec9445a/1626635-0/3ec9445a25ba365a23fc433ce0c16f34?v5&t1714358478&s171435847804276f7d9249382ba512…

RCE复习(ctfhub上)

一、rce漏洞概述 在Web应用开发中为了灵活性、简洁性等会让应用调用代码执行函数或系统命令执行函数处理,若应用对用户的输入过滤不严,容易产生远程代码执行漏洞或系统命令执行漏洞。 二、常见RCE漏洞函数 1.系统命令执行函数 system():能将…

LeetCode 94.二叉树的中序遍历

题目描述 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[1,3,2]示例 2: 输入:root [] 输出:[]示例 3: 输入:root [1] …

【c++】----STL简介string

目录 1. 什么是STL 2. STL的版本 3. STL的六大组件 4.STL的缺陷 5.string类 1. 为什么学习string类? 6.string类的常用接口说明(下面我们只讲解最常用的接口) 1.string 常见构造 2.string类的遍历 iterator 迭代器遍历 (…

uniapp制作安卓原生插件踩坑

top. fireEvent失效的问题 本来我项目跑的好好的,结果放到公司项目半天收不到回调 结果是因为vue3 方法 onTel会变成on-tel 全部改小写才行了 1.uniapp和Android工程互相引用讲解 uniapp原生Android插件开发入门教程 (最新版)_uniapp and…

Java设计模式 _创建型模式_工厂模式(普通工厂和抽象工厂)

一、工厂模式 属于Java设计模式创建者模式的一种。在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 二、代码示例 场景:花店有不同的花,通过工厂模式来获取花。 1、普通工厂模式 逻辑步骤&#…

AnaTraf网络流量分析仪:实时监控、故障排除和性能优化的必备工具

AnaTraf网络流量分析仪是一款高性能的实时网络流量分析工具,用于全流量回溯分析、网络流量监控、网络性能分析、快速排除网络故障。本文将为您详细介绍AnaTraf的功能和优势,帮助您了解如何通过该设备进行网络流量监控、故障排除和性能优化。 一、AnaTraf…

修改CentOS ifcfg_ens33文件,提示 file read only/只读

没有用root用户去修改,需要切换到root用户: su root 输入root密码,切换到root用户修改。 另一个原因:打开文件的时候有临时文件存在,这个时候需要按E才能确认编辑,否则是默认以只读方式打开。 参考《vim编…

Gateway结合Nacos使用!!!

一、本地结合使用 1. 引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> 2. bootstarp.yml配置文件 如果Nacos中配置使用yaml格式&…

Python 0基础_变现_38岁_day 15(匿名函数)

匿名函数&#xff1a; 不用定义函数名&#xff0c;无需使用def关键字&#xff0c;使用lambda将函数写成一行&#xff1b;#使用匿名函数定义一个两个数字相加的函数add lambda x,y : xy #使用变量接收匿名函数的内容&#xff0c;且变量名作为调用函数的变量名&#xff1…

Linux软件包管理器——yum

文章目录 1.什么是软件包1.1安装与删除命令1.2注意事项1.3查看软件包1.3.1注意事项&#xff1a; 2.关于rzsz3.有趣的Linux下的指令 -sl 1.什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一…

Django之搭配内网穿透

一&#xff0c;安装coplar 二&#xff0c;开启8087的内网穿透 三&#xff0c;setting.py中加入如下配置&#xff1a; ALLOWED_HOSTS [*]CSRF_TRUSTED_ORIGINS ["https://localhost:8087", "http://localhost:8087"]四&#xff0c;启动项目 五&#xff…

rust疑难杂症解决

rust疑难杂症解决 边碰到边记录&#xff0c;后续可能会逐步增加&#xff0c;备查 cargo build时碰到 Blocking waiting for file lock on package cache 原因是Cargo 无法获取对包缓存的文件锁&#xff0c; 有时vscode中项目比较多&#xff0c;如果其中某些库应用有问题&…

Spring快速入门!(超详细)——工厂模式

GOF之工厂模式 设计模式&#xff1a;一种可以被重复利用的解决方案。GoF&#xff08;Gang of Four&#xff09;&#xff0c;中文名——四人组。《Design Patterns: Elements of Reusable Object-Oriented Software》&#xff08;即《设计模式》一书&#xff09;&#xff0c;19…

红米A2/A2+/POCO C51手机秒解BL+快速获取root权限+解谷歌锁刷机救砖教程

红米A2/A2/POCO C51手机是目前小米公司针对于国外用户的1个独立的品牌&#xff0c;或者和国内的红米手机都非常相似&#xff0c;几款手机由于硬件非常接近&#xff0c;我们这里将其放在一起和大家介绍而从他们的代号中我们可以得知&#xff0c;目前A2/POCO的代号为water&#x…

Ubuntu22.04安装freecad、ODAFileConverter

一、背景 作为程序界的萌新&#xff0c;不只写代码&#xff0c;还需要临危受命看看CAD图。 手上的一份CAD图是DWG格式的&#xff0c;先得找款看DWG格式文件的软件&#xff0c;很快找到了“CAD迷你看图”&#xff0c;这款软件直接傻瓜式安装&#xff0c;不是本文重点。 本文重…

RejectedExecutionHandler 以及线程池的自行实现

RejectedExecutionHandler handler 拒绝方式/拒绝策略(线程池考察的重点) 我们知道,线程池有一个阻塞队列,当阻塞队列满了之后,继续添加任务,我们该如何去应对? Java系统的四个处理方式 ThreadPoolExecutor.AbortPolicy 直接抛出异常,这样做的话,整个线程池就不干活了 T…

【Vue】组件化编程

定义 实现应用中局部功能代码和资源的集合 为什么要用组件化编程? 传统方式编写:依赖关系混乱,不好维护,且代码复用率不高 模块化编写:只关注解决js,复用js,简化js的编写与效率 组件方式编写:好维护、复用率更高、提高运行效率 在组件出现之前,我们开发基本都是用htm…

七、OSPF特殊区域及其特性

目录 OSPF区域分类 hello报文中option字段 1.末节区域&#xff08;Stub区域&#xff09; 2.完全末节区域&#xff08;Toally Stub区域&#xff09; 3.七类LSA 4.非完全末节区域&#xff08;NSSA区域&#xff09; 5.完全非完全末节区域&#xff08;Toally NSSA区域&#…

Android 11 bindService 流程分析

我们可以使用bindService来跨进程通信&#xff0c;其使用方法如下 Intent intent new Intent("xxx"); intent.setPackage("xxx"); boolean result bindService(intent,new ServiceConn(),BIND_AUTO_CREATE);private class ServiceConn implements Servi…