计算机网络——初识网络

一、局域网与广域网

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)                  以太网数据帧

五、结语

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

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

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

前端开发攻略---模拟后端接口返回数据,教你三种方式实现滚动到底部加载更多数据

1、演示 2、方式一:手动监听滚动事件 原理: 手动监听滚动事件的原理是通过添加滚动事件监听器,当页面滚动时触发相应的回调函数,检测页面是否已经滚动到底部,从而触发加载更多数据的逻辑。 优点: 1、相对简…

理解ROS2的动作

​ 1. 创建一个动作 目标: 在ROS 2软件包中定义一个动作。 1.1 新建包 设置一个 workspace 并创建一个名为 action_tutorials_interfaces 的包: mkdir -p ros2_ws/src #you can reuse existing workspace with this naming convention cd ros2_ws/s…

HTTPS证书申请:相关流程及注意事项

HTTPS证书(即HTTPS证书、服务器证书)是实现网络通信安全的重要技术产品,它为网站提供HTTPS加密和服务器身份验证的功能。HTTPS证书申请有那些流程?如何快速完成HTTPS证书申请?有哪些注意事项?本文将以沃通H…

Meta Llama 3 性能提升与推理服务部署

利用 NVIDIA TensorRT-LLM 和 NVIDIA Triton 推理服务器提升 Meta Llama 3 性能 我们很高兴地宣布 NVIDIA TensorRT-LLM 支持 Meta Llama 3 系列模型,从而加速和优化您的 LLM 推理性能。 您可以通过浏览器用户界面立即试用 Llama 3 8B 和 Llama 3 70B(该…

Android优化RecyclerView图片展示:Glide成堆加载批量Bitmap在RecyclerView成片绘制Canvas,Kotlin(b)

Android优化RecyclerView图片展示:Glide成堆加载批量Bitmap在RecyclerView成片绘制Canvas,Kotlin(b) 对 Android GridLayoutManager Glide批量加载Bitmap绘制Canvas画在RecyclerView,Kotlin(a)-…

【哔哩哔哩笔试题汇总】2024-04-28-哔哩哔哩春招笔试题-三语言题解(CPP/Python/Java)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新b站近期的春秋招笔试题汇总~ 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢&#x1f497…

基于Hadoop的网上购物行为分析设计与实现

2.8 数据分析及可视化 2.8.1 店铺销售情况分析 通过这里可以看出,该店家的数据用户访问量比较的大,有接近6W多条数据,但是通过对用户进行透视分析发现只有981位用户,其次就是对于用户购买次数进行分析,发现数据只有27…

2017年全国职业院校技能大赛高职组“信息安全管理与评估”样题

培训、环境、资料、考证 公众号:Geek极安云科 网络安全群:624032112 网络系统管理群:223627079 网络建设与运维群:870959784 移动应用开发群:548238632 极安云科专注于技能提升,赋能 2024年广东省高校的技…

2.Neo4j的搭建启动

Graph Database 图数据库 版本对应关系 官网都是高版本,推荐使用下载地址可以找到社区老版本: https://we-yun.com/doc/neo4j/ neo4j.bat 启动脚本 cypher-shell.bat 执行CQL语句的。 import文件夹可以放入excel,csv等数据文件,导入到…

Transformer - Layer Normalization

Transformer - Layer Normalization flyfish y x − E [ x ] V a r [ x ] ϵ ∗ γ β y \frac{x - \mathrm{E}[x]}{ \sqrt{\mathrm{Var}[x] \epsilon}} * \gamma \beta yVar[x]ϵ ​x−E[x]​∗γβ 论文 Layer Normalization import numpy as np import torch import…

交直流充电桩检测的基础知识

交直流充电桩检测是电动汽车充电设施的重要组成部分,其目的是确保充电桩的正常运行,保障电动汽车的安全充电。以下是关于交直流充电桩检测的一些基础知识。 我们需要了解什么是交直流充电桩,简单来说,交直流充电桩是一种为电动汽车…

Centos7 RPM包离线安装Nginx

查看是否安装nginx #使用命令 rpm -qa|grep 列出需要卸载的软件包 rpm -qa | grep nginx 卸载nginx #使用rpm -e 加包名删除 rpm -e nginx-release-centos-7-0.el7.ngx.noarch nginx-1.14.1-1.el7_4.ngx.x86_64 rpm -e nginx 安装nginx 其他版本步骤一样 下载rpm包In…

BTCOIN的革命之路:通过SocialFi重塑全球金融生态系统

BTCOIN的革命之路:通过SocialFi重塑全球金融生态系统 今日,BTCOIN宣布发布WEB3.0论坛引发业内现象级关注:作为一个倡导WEB3.0理念的数字金融平台,在数字货币的波澜壮阔中,BTCOIN以其独特的生态定位和战略愿景&#xff…

进程控制7 - exec函数族

区别1 :参数1—>可执行文件名 区别2 :参数表的传递 区别3 :环境表的传递 详细举例说明: 下面这个demo使用execl函数,传入path也就是execlnewpro的路径(这里也可以写绝对路径),…

线上社交app的搭建,圈子社交系统,小程序+app+H5三端,源码交付,支持二开!

在科技飞速发展的大背景下,年轻人社交不再局限于面对面,线上社交app已深入各大年轻人的手机中。相比于传统交友方式,线上社交app为用户提供了更加新奇的交友体验。同时,它还可以吸引更多的朋友,提高用户的整体交友体验…

Python 操作PDF图片 – 添加、替换、删除PDF中的图片

PDF文件中的图片可以丰富文档内容,提升用户的阅读体验。除了在PDF中添加图片外,有时也需要替换或删除其中的图片,以改进视觉效果或更新信息。文本将提供以下三个示例,介绍如何使用Python 操作PDF文件中的图片: 目录 …

python_django农产品物流信息服务系统6m344

Python 中存在众多的 Web 开发框架:Flask、Django、Tornado、Webpy、Web2py、Bottle、Pyramid、Zope2 等。近几年较为流行的,大概也就是 Flask 和 Django 了 Flask 是一个轻量级的 Web 框架,使用 Python 语言编写,较其他同类型框…

C++智能指针详解

目录 一. 智能指针初识 1.1 什么是智能指针 1.2 智能指针历史历程 1.3 为什么需要智能指针 1.3.1 内存泄漏 1.3.2 防止内存泄漏 1.3.3 异常的重新捕获 二. 智能指针的原理与使用 2.1 智能指针的原理 2.2 智能指针的使用 2.3 智能指针的拷贝问题…

视频抽帧转图片,opencv和ffmpeg效果测评

最近在做一个项目,需要从视频中抽帧转图片,于是对opencv和ffmpeg效果进行了测评。 文章目录 1. open cv2. ffmpeg3.抽帧效果对比 1. open cv open cv 视频抽图片的教程,推荐以下链接,抽的帧数可以自行调节! 用pythono…