局域网广域网,IP地址和端口号,TCP/IP 4层协议,协议的封装和分用
前言
在古老的年代,如果我们要实现两台机器进行数据传输,
A员工就得去B员工的办公电脑传数据(B休息,等A传完),这样就很浪费时间
所以能不能不去B的工位的同时,还能传数据。这时候网络通信就出来了。
⽹络互连:
随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同⼯作来完成业务,就有了⽹络互连。
⽹络互连:将多台计算机连接在⼀起,完成数据共享。
数据共享本质是⽹络数据传输,即计算机之间通过⽹络来传输数据,也称为⽹络通信。
根据⽹络互连的规模不同,可以划分为局域⽹和⼴域⽹。
目录
前言
一、什么是局域网,广域网,两者区别
局域网LAN:
1)基于网线直连
2)基于集线器组建
3)基于交换器组建
4)基于交换器和路由器组建
广域网WAN:
二、什么是IP地址,端口号
IP地址:
端口号:
三、TCP/IP 4层协议
协议概念
协议作用
TCP/IP 4层协议
四、协议的 封装和分用
一、什么是局域网,广域网,两者区别
局域网LAN:
局域⽹,即LocalAreaNetwork,简称LAN。
局域⽹内的主机之间能⽅便的进⾏⽹络通信,⼜称为内⽹;
局域⽹和局域⽹之间在没有连接的情况下,是⽆法通信的。
局域网的连接有以下几种:
1)基于网线直连
2)基于集线器组建
3)基于交换器组建
4)基于交换器和路由器组建
概念详解:
路由器:(Router)是连接因特网中各局域网、广域网的设备。在路由器中记录着路由表,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。发生在网络层。
交换机:(Switch)是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路,把传输的信息送到符合要求的相应路由上。发生在数据链路层。
集线器:(Hub)是指将多条以太网双绞线或光纤集合连接在同一段物理介质下的设备。发生在物理层。
广域网WAN:
⼴域⽹,即WideAreaNetwork,简称WAN。
通过路由器,将多个局域⽹连接起来,在物理上组成很⼤范围的⽹络,就形成了⼴域⽹。
⼴域⽹内部 的局域⽹都属于其⼦⽹。
值得注意的是:
其实,局域网 和 广域网 是一个“相对”的概念。
如果属于全球化的公共型⼴域⽹,则称为互联⽹(⼜称公⽹,外⽹),属于⼴域⽹的⼀个⼦集。有时在不严格的环境下说的⼴域⽹,其实是指互联⽹。
二、什么是IP地址,端口号
那么多台计算机,要怎么知道要发给哪台机器呢?
这时候就需要 IP地址 和 端口号 来帮忙了。
IP地址:
概念
IP地址主要⽤于标识⽹络主机、其他⽹络设备(如路由器)的⽹络地址。简单说,IP地址⽤于定位主机的⽹络地址。
就像我们网购一样,得先填收货地址一样,快递员通过收获地址才能找到这个地方(计算机)。
格式
IP地址是⼀个32位的⼆进制数,通常被分割为4个“8位⼆进制数”(也就是4个字节),如: 01100100.00000100.00000101.00000110。
通常⽤“点分⼗进制”的⽅式来表⽰,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的⼗进制整数)。 如:100.4.5.6。
端口号:
概念
我们已经知道了,通过IP地址可以找到计算机,但是怎么确定是哪个进程需要呢?电脑有这么多个进程。qq的数据发到微信上,肯定是不可以的。所以这时候我们需要端口号了。
端口号就是为了找到要发送给哪个进程,简单说:端⼝号⽤于定位主机中的进程。
类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货⼈(端⼝号)。
格式
端⼝号是0~65535范围的数字,在⽹络通信中,进程可以通过绑定⼀个端⼝号,来发送及接收⽹络数据。
三、TCP/IP 4层协议
既然我们知道发数据给对方,需要IP地址和端口号。
我发照片,视频,音乐,文字那些,计算机是怎么传的呢,⽹络通信是基于⼆进制0/1数据来传输,如何告诉对⽅发送的数据是什么样的呢?
基于⽹络数据传输,需要使⽤协议来规定双⽅的数据格式。
协议概念
协议,⽹络协议的简称,⽹络协议是⽹络通信(即⽹络数据传输)经过的所有⽹络设备都必须共同遵从的⼀组约定、规则。
如怎么样建⽴连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。
协议(protocol)最终体现为在⽹络上传输的数据包的格式。
协议作用
就比如两个人网恋要见面了,
我们就可以 约定 两人穿粉色的情侣衣服,这样就能找到对方;
或者两个人手里都捧着一束花,就可以通过花来找对方。
所以在我们计算机中,如果两台计算机要进行通信,有很多需要考虑的:
- 计算机生产厂商
- 计算机操作系统也有很多
- 计算机硬件设备的厂商也很多
所以就需要有个 协议 来约束这些,都按照一个标准来执行,也就是网路协议。
但是有很多东西都需要协议,如果都用一个协议的话,那这个协议就非常的大,非常的复杂。这时候就引出了单个协议,然后汇聚一起,但是这种也是很多很复杂,所以计算机就引出了分层协议。
就是把同种类的协议都放在同一层,每一层都各司其职,上下层可以相互调用,普及最多的协议有两个:TCP/IP 4层协议 和 OSI 7层协议
分层的好处:
- 对于使⽤⽅来说,并不关⼼提供⽅是如何实现的,只需要使⽤接⼝即可
- 对于提供⽅来说,利⽤封装的特性,隐藏了实现的细节,只需要开放接⼝即可。
由于OSI 7层协议只是在书本上,还没有普及。现在业务上用的最多的还是TCP/IP 4层协议,所以这里主要讲解TCP/IP 4层协议。
TCP/IP 4层协议
既然是4层,为什么下面的图是5层呢?
答:因为在软件工程师中,我们其实并不需要专注“物理层”,所以4层是去除掉物理层的协议。5层的话是加上了“物理层”。
应用层:负责应用软件之间的沟通,就是准备要做什么事情,这个就是应用层负责的。
传输层:根据IP地址,关注网络通信中的“起点和终点”,不关心中间的细节。
网络层:根据这个起点和终点进行路径规划(路由选择),还需要对这些地址进行管理。
数据链路层:根据规划好的路径,来进行实施。
物理层:就是那些硬件层面的事情,负责光/电信号的传递⽅式。
就像我们的一个公司:
董事长就相当于传输层,定一个目标,然后总经理就是网路层需要指定一系列的政策,然后数据链路层就是我们普通工厂的员工,按照这些政策去执行。
TCP/IP 分层 和 OSI 分层协议 的区别
四、协议的 封装和分用
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在⽹络层叫做数据报 (datagram),在链路层叫做帧(frame)。(不过一般不严格区分,下面我都用包来讲解)
- 应⽤层数据通过协议栈发到⽹络上时,每层协议都要加上⼀个数据⾸部(header),称为封装 (Encapsulation)。
- ⾸部信息中包含了⼀些类似于⾸部有多⻓,载荷(payload)有多⻓,上层协议是什么等信息。
- 数据封装成帧后发到传输介质上,到达⽬的主机后每层协议再剥掉相应的⾸部,根据⾸部中的 "上层协议字段" 将数据交给对应的上层协议处理,就叫 分用 。
简单来说:协议中的封装,实际上就是字符串的拼接。分用就是拆卸字符串。
比如说你在淘宝买了个鞋子,这个鞋子肯定会被鞋盒包着,然后被快递袋包着,一层层包着。好处就是可以贴标签(你的地址什么的),从而传递给下一个目的地。 整个网络通信都是利用这些标签儿的。
比如说,你现在要发送一个qq短信 hello 给你的好朋友,那么在网络中它是怎么实现的呢?
对于发送者来说:
1)在应用层中:
qq需要传输数据,需要把数据包装成数据包(人为定义,有很多种方式)。比如:
数据包样式:发送者qq;接收者qq;发送时间;发送内容\n
数据包实例:12345678;87654321;2024-09-25 22:00;hello\n
以上是“结构化”数据,它需要转为“二进制数据”字符串,因为计算机流通的都是二进制的。
把 结构化数据=》二进制数据:序列化
把 二进制数据=》结构化数据:反序列化
2)在运输层中:
qq这样的应用软件会调用操作系统中的API(运输层提供给应用层的API)操作系统的会提供一个“发送数据”的API,然后把应用层包装好的数据包,作为参数传到系统内核的运输层中的代码里。
运输层有很多种协议(最主要的是TCP和UDP),假设这里使用是的UDP协议,这时运输层就会把它封装(可以理解为字符串拼接)成一个运输层数据包:
这里包含了UDP相关的信息,保留发送者的端口号和接收者端口号等等
3)在网络层中:
运输层包装好的运输层数据包,运输层会调用网络层的API,然后把运输层数据包传进去网络层
网络层有很多协议,这里最主要的是IPv4协议(还有一种IPv6但是没有IPv4主导地位),网络层会把运输层数据包 封装(字符串拼接) 成网络层数据包,如下:
这里的IP报头包含了发送方的IP地址,也包含了接收方的IP地址等等
4)在数据链路层中:
网络层继续调用数据链路层的API,把网络层包装好的网络层数据包传进数据链路层中
5)在物理层中:
传到物理层(也就是硬件层面)执行,网卡需要把上述二进制数据(虽然上面的看起来不是二进制,但是计算机会变成二进制),进行真正的传输(转为光信号,电信号等等)
对于接收者来说:
1)在物理层中
接收到发送者的光电信号,然后转化成010101这样的二进制数据
2)在数据链路层中
数据链路层接受到物理层的二进制数据,以太网就会拿到这个数据包,取出IP报头和载荷,之后根据报头进行解析。根据报头,自己决定要保留还是丢掉,还是转发。(这里也就是分用)
3) 在网络层中
网络层中拿到数据链路层发来的数据,然后根据IP协议,取出IP报头和载荷,解析IP报头。是要转发,还是保留,还是丢掉(分用)。
4)在传输层中
传输层接收到网络层发来的数据,取出报头和载荷,根据报头进行解析,依据UDP协议,是要转发,还是保留,还是丢掉(分用),如果要转发的话,根据端口号转发。
5)在应用层中
数据就到了应用层这里,qq这个应用软件就要根据接受到的数据,实现反序列化
比如:显示信息,发出嘀嘀嘀的提示音等等....
封装就像“发快递”添加报头(可以理解为字符串的拼接),分用就像“拆快递”,拆掉报头。
上面的过程中,其实有很多交换机和路由器都参与了进来,也会涉及到封装和分用
- 对于⼀台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层;
- 对于⼀台路由器,它实现了从⽹络层到物理层,也即是TCP/IP五层模型的下三层;
- 对于⼀台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;
- 对于一台集线器,它只实现了物理层;
相关文章:
局域网广域网,IP地址和端口号,TCP/IP 4层协议,协议的封装和分用
前言 在古老的年代,如果我们要实现两台机器进行数据传输, A员工就得去B员工的办公电脑传数据(B休息,等A传完),这样就很浪费时间 所以能不能不去B的工位的同时,还能传数据。这时候网络通信就出来…...
LabVIEW项目编码器选择
在LabVIEW项目中,选择增量式(Incremental Encoder)和绝对式(Absolute Encoder)编码器取决于项目的具体需求。增量式编码器和绝对式编码器在工作原理、应用场景、精度和成本等方面存在显著差异。以下从多方面详细阐述两…...
Spring Boot实现房产租赁业务逻辑
1 绪论 1.1 研究背景 中国的科技的不断进步,计算机发展也慢慢的越来越成熟,人们对计算机也是越来越更加的依赖,科研、教育慢慢用于计算机进行管理。从第一台计算机的产生,到现在计算机已经发展到我们无法想象。给我们的生活改变很…...
汽车3d动画渲染选择哪个?选择最佳云渲染解决方案
面临汽车3D动画渲染挑战?选择正确的云渲染服务至关重要。探索最佳解决方案,优化渲染效率,快速呈现逼真动画。 汽车3d动画渲染选择哪个? 对于汽车3D动画渲染,选择哪个渲染器取决于你的项目需求、预算和期望的效果。Ble…...
火语言RPA流程组件介绍--网页/元素截图
🚩【组件功能】:对整个网页、可见区域或者某个元素进行截图 ,保存至指定文件夹,仅适用于内置浏览器 配置预览 配置说明 截图类型 整个网页/可见区域/元素截图 目标元素 支持T或# 通过自动捕获工具捕获(选择元素工具使用方法)…...
VSCode编程配置再次总结
VScode 中C++编程再次总结 0.简介 1.配置总结 1.1 launch jsion文件 launch.json文件主要用于运行和调试的配置,具有程序启动调试功能。launch.json文件会启用tasks.json的任务,并能实现调试功能。 左侧任务栏的第四个选项运行和调试,点击创建launch.json {"conf…...
银行管理系统
摘 要 伴随着信息技术与互联网技术的不断发展,人们进到了一个新的信息化时代,传统管理技术性没法高效率、容易地管理信息内容。为了实现时代的发展必须,提升管理高效率,各种各样管理管理体系应时而生,各个领域陆续进到…...
极狐GitLab 17.4 重点功能解读【四】
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...
[每日一练]利用自连接实现数量查询
该题目来源于力扣: 1731. 每位经理的下属员工数量 - 力扣(LeetCode) 题目要求: 表:Employees----------------------- | Column Name | Type | ----------------------- | employee_id | int | | name …...
Linux云计算 |【第四阶段】RDBMS1-DAY3
主要内容: 子查询(单行单列、多行单列、单行多列、多行多列)、分页查询limit、联合查询union、插入语句、修改语句、删除语句 一、子查询 子查询就是指的在一个完整的查询语句之中,嵌套若干个不同功能的小查询,从而一…...
初始MYSQL数据库(8)—— JDBC编程
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: MYSQL 目录 JDBC的概念 JDBC的使用 加载驱动包 建立连接 创建 statement 对象 定义并执行SQL语句 处理结果集 关闭资源 SQL注入 …...
Vue $router.push打开新窗口
Vue $router.push打开新窗口 最近有粉丝小伙伴问我:$router.push方法用于在当前窗口中跳转路由,但有时候我们需要在新的窗口或标签页中打开一个路由改怎么实现呢? 那么这里就介绍下实现逻辑和代码案例! 文章目录 Vue $router.pus…...
SQL进阶技巧:如何利用if语句简化where或join中的条件 | if条件语句的优雅使用方法
目录 0 问题场景 1 数据准备 2 问题分析 2.1 需求一 2.2需求二 3 小结 0 问题场景 有两张表,一张用户下单表user_purchase(用户ID粒度)包含用户ID、订单ID和下单消耗金额和一张用户维表user_info包含用户ID、用户年龄和用户是否实名认证。 user_purchase user_info 需…...
SpringCloud-Alibaba第二代微服务快速入门
1.简介 Spring Cloud Alibaba其实是阿里的微服务解决方案,是阿里巴巴结合自身微服务实践,开源的微服务全家桶,在Spring Cloud项目中孵化成为Spring Cloud的子项目。第一代的Spring Cloud标准中很多组件已经停更,如:Eureak,zuul等。所以Sprin…...
JSON字符串转换成对象
在Java中,将JSON字符串转换成对象是一个常见的操作,特别是在处理Web服务或API时。这通常通过使用第三方库来实现,因为Java标准库(Java SE)本身并不直接支持JSON的序列化和反序列化。最常用的库之一是Jackson和Gson。下…...
第三十五章 结合加密和签名
文章目录 第三十五章 结合加密和签名使用非对称密钥签名并加密使用非对称密钥加密并签名 第三十五章 结合加密和签名 可以在同一条消息中加密和签名。在大多数情况下,只需组合前面主题中给出的方法即可。本主题讨论了多种场景。 使用非对称密钥签名并加密 要签名…...
FastAPI 第八课 -- 路径操作依赖项
目录 一. 前言 二. 依赖项(Dependencies) 2.1. 依赖注入 2.2. 依赖项的使用 三. 路径操作依赖项的基本使用 3.1. 预处理(Before) 3.2. 后处理(After) 四. 多个依赖项的组合 五. 异步依赖项 一. 前…...
大厂面试真题-说一下Mybatis的缓存
首先看一下原理图 Mybatis提供了两种缓存机制:一级缓存(L1 Cache)和二级缓存(L2 Cache),旨在提高数据库查询的性能,减少数据库的访问次数。注意查询的顺序是先二级缓存,再一级缓存。…...
jQuery UI 工作原理
jQuery UI 工作原理 引言 jQuery UI 是建立在 jQuery 库之上的一个开源 JavaScript 库,它提供了一系列用户界面交互、特效、小部件和主题。它旨在简化 HTML 用户界面的开发,使开发者能够轻松地创建具有丰富交互性和视觉吸引力的网页。本文将深入探讨 jQuery UI 的工作原理,…...
CS 工作笔记:SmartEdit 里创建的是 CMS Component
下图是在 SmartEdit 里创建的 cms Component,在 Back-Office 里的截图: SAP Commerce Cloud 的 CMS Component 是其内容管理系统 (CMS) 的核心组成部分,它提供了对在线商店或平台内容的灵活管理。通过这些组件,用户能够在不涉及复…...
Java面试经验总结之SSM框架+springboot
一、spring 1.Spring 是什么? 答:spring 是一个轻量级的容器框架, ioc 和 aop 是他的核心。spring 将传统的代码以来形式,变为从容器中获取,提高了开发效率,非常的方便。spring 衍生出了很多生态&#x…...
Unity 热更新(HybridCLR+Addressable)-设置打包路径和加载路径、打开Hosting服务、打包
四、设置打包和加载路径 五、打开Hosting服务 六、打包 打包完成后路径在Assets同级目录下的ServerData 但是目前没有资源文件对比 修改上面设置后再次打包 里面多了哈希和JSON文件,这俩个就是用于资源对比...
享元(轻量级)模式
简介 享元模式(Flyweight Pattern)又叫作轻量级模式,是对象池的一种实现。类似线程池,线程池可以避免不停地创建和销毁多个对象,消耗性能。享元模式提供了减少对象数量从而改善应用所需的对象结构的方式。其宗旨是共享…...
基于php的幸运舞蹈课程工作室管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…...
NLP任务的详细原理与步骤的详细讲解
1. 文本分类 原理: 特征提取:文本分类首先将文本转化为数值特征,常用方法包括词袋模型、TF-IDF、Word Embeddings(如Word2Vec、GloVe)和BERT等预训练模型。模型训练:模型(如SVM、神经网络&…...
Kotlin 处理字符串和正则表达式(二十一)
导读大纲 1.1 处理字符串和正则表达式1.1.1 分割字符串1.1.2 正则表达式和三引号字符串1.1.3 多行三引号字符串IntelliJ IDEA 和 Android Studio 中三重引号字符串内部的语法高亮显示 1.1 处理字符串和正则表达式 Kotlin 字符串与 Java 字符串完全相同 可以将 Kotlin 代码中创建…...
一站式大语言模型API调用:快速上手教程
智匠MindCraft是一个强大的AI工具及开发平台,支持多种大语言模型和多模态AI模型。本文将详细介绍如何通过API调用智匠MindCraft中的大语言模型,帮助开发者快速上手。 注册与登录 访问智匠MindCraft官网,注册并登录账号。 进入开发者平台&…...
【TabBar嵌套Navigation案例-新特性页面-代码位置 Objective-C语言】
一、接下来,我们来说这个新特性页面 1.首先,看一下我们的示例程序,这里改一下,加一个叹号, command + R, 好,首先啊,这里边有一个新特性页面,当我这个程序是第一次安装、第一次运行、还有呢、就是当这个应用程序更新的时候,我应该去加载这个新特性页面, 然后呢,这…...
程序员如何提升并保持核心竞争力?——深入钻研、广泛学习与软技能的培养
一、引言 随着人工智能的不断发展,尤其是AIGC系列大语言模型的涌现,AI辅助编程工具正在日益普及,这对程序员的工作方式产生了深刻的影响。面对这一变革,程序员应如何应对?是专注于某个领域深耕细作,还是…...
Linux之Docker虚拟化部署
上传docker安装包 解压安装包 将解压后的docker文件夹移动到/usr/local/文件夹下 docker 启动命令/usr/local/docker/dockerd 但是启动报错,意思是没有docker用户组 创建docker用户组,执行完会生成套接字文件 将套接字文件加入该用户组管理 第二个错误原…...
建设网站怎么添加端口映射/互联网
转载于:https://blog.51cto.com/victorwuwei/415453...
程序员做兼职的网站/app拉新推广平台渠道
本文地址:https://www.cnblogs.com/maplefighting/p/8007456.html 没啥成绩,大二三拿过省赛银,然后大三大四总共打了两场ccpc和两场icpc,都是一轮游。(虽然已经超过往届师兄的记录,但是还是贼菜,主要没系统…...
网站的二级页面在哪里做/网站seo快速排名
提起openstack的安装,整个人感觉都不好了,搞了将近一周时间也没能搞定Redhat、CentOS 6.5系统的安装,最后换到CentOS7.0上一次安装成功。为了以后少走弯路,记下自己愚钝的脚步。 第一次安装openstack,拿到的服务器是Re…...
东营建设网站公司电话/免费拓客软件排行榜
jpa和hibernate本教程的前半部分介绍了Java Persistence API的基础知识,并向您展示了如何使用Hibernate 5.3.6和Java 8配置JPA应用程序。如果您已阅读该教程并研究了其示例应用程序,那么您将了解在JPA中建模JPA实体和多对一关系。 您还进行了一些使用JPA…...
德州公司做网站/seo搜索引擎优化平台
计算机科学与技术学科为甘肃省省级重点学科,为硕士一级学科授权点,拥有国家级计算机实验教学示范中心、国家级交通信息类创新人才培养模式实验区。专业师资力量雄厚,2009年被授予国家级“计算机软件技术基础课程教学团队”。近年来承担科研项…...
在柬埔寨做网站彩票推广/google play服务
让两个对象间建立weak关系 这是为了给两个对象间建立weak关系,当一个对象被释放时,另外一个对象再获取这个值时就是nil,也就是不持有这个对象:) 源码: WeakRelatedDictionary.h 与 WeakRelatedDictionary.m // // WeakRelatedDic…...