局域网广域网,IP地址和端口号,TCP/IP 4层协议,协议的封装和分用

news2024/9/27 9:46:32

前言 

在古老的年代,如果我们要实现两台机器进行数据传输,

A员工就得去B员工的办公电脑传数据(B休息,等A传完),这样就很浪费时间

所以能不能不去B的工位的同时,还能传数据。这时候网络通信就出来了。 

⽹络互连:

随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同⼯作来完成业务,就有了⽹络互连。

⽹络互连:将多台计算机连接在⼀起,完成数据共享。

数据共享本质是⽹络数据传输,即计算机之间通过⽹络来传输数据,也称为⽹络通信。 

根据⽹络互连的规模不同,可以划分为局域⽹⼴域⽹

目录

前言 

一、什么是局域网,广域网,两者区别

局域网LAN:

1)基于网线直连

2)基于集线器组建

3)基于交换器组建

4)基于交换器和路由器组建

广域网WAN:

二、什么是IP地址,端口号

IP地址:

端口号:

三、TCP/IP 4层协议

协议概念 

协议作用 

 TCP/IP 4层协议

四、协议的 封装和分用


一、什么是局域网,广域网,两者区别

局域网LAN:

局域⽹,即LocalAreaNetwork,简称LAN。

局域⽹内的主机之间能⽅便的进⾏⽹络通信,⼜称为内⽹;

局域⽹和局域⽹之间在没有连接的情况下,是⽆法通信的。

局域网的连接有以下几种:

1)基于网线直连

b8d97638664b4a27bc4e68aba3e6f447.png

2)基于集线器组建

 2c4affbad4ca4de8b087d7d00bee003e.png

3)基于交换器组建

 f279d6d8650247ff99b0aa53ae9c878f.png

4)基于交换器和路由器组建

32309205df714387bb78ea45e15a08f4.png

概念详解:

        路由器(Router)是连接因特网中各局域网、广域网的设备。在路由器中记录着路由表,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。发生在网络层。
  交换机(Switch)是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路,把传输的信息送到符合要求的相应路由上。发生在数据链路层。
  集线器(Hub)是指将多条以太网双绞线或光纤集合连接在同一段物理介质下的设备。发生在物理层。

广域网WAN:

⼴域⽹,即WideAreaNetwork,简称WAN。

通过路由器,将多个局域⽹连接起来,在物理上组成很⼤范围的⽹络,就形成了⼴域⽹。

⼴域⽹内部 的局域⽹都属于其⼦⽹。 

302ec34c7835438eb448405e318d43fe.png

值得注意的是:

其实,局域网 和 广域网 是一个“相对”的概念。

如果属于全球化的公共型⼴域⽹,则称为互联⽹(⼜称公⽹,外⽹),属于⼴域⽹的⼀个⼦集。有时在不严格的环境下说的⼴域⽹,其实是指互联⽹。

二、什么是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层的话是加上了“物理层”。

6321d9aabcf7487683569a61bb85d915.png

应用层负责应用软件之间的沟通,就是准备要做什么事情,这个就是应用层负责的。

传输层根据IP地址,关注网络通信中的“起点和终点”,不关心中间的细节。

网络层根据这个起点和终点进行路径规划(路由选择),还需要对这些地址进行管理。

数据链路层根据规划好的路径,来进行实施。

物理层就是那些硬件层面的事情,负责光/电信号的传递⽅式。

就像我们的一个公司:

董事长就相当于传输层,定一个目标,然后总经理就是网路层需要指定一系列的政策,然后数据链路层就是我们普通工厂的员工,按照这些政策去执行。

TCP/IP 分层 和 OSI 分层协议 的区别 

c895f69ea12e46a4bffcc33d3e750e35.png

四、协议的 封装和分用

  •  不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在⽹络层叫做数据报 (datagram),在链路层叫做帧(frame)。(不过一般不严格区分,下面我都用包来讲解)
  • 应⽤层数据通过协议栈发到⽹络上时,每层协议都要加上⼀个数据⾸部(header),称为封装 (Encapsulation)
  • ⾸部信息中包含了⼀些类似于⾸部有多⻓,载荷(payload)有多⻓,上层协议是什么等信息。
  • 数据封装成帧后发到传输介质上,到达⽬的主机后每层协议再剥掉相应的⾸部,根据⾸部中的 "上层协议字段" 将数据交给对应的上层协议处理,就叫 分用 

简单来说:协议中的封装,实际上就是字符串的拼接。分用就是拆卸字符串。

比如说你在淘宝买了个鞋子,这个鞋子肯定会被鞋盒包着,然后被快递袋包着,一层层包着。好处就是可以贴标签(你的地址什么的),从而传递给下一个目的地。 整个网络通信都是利用这些标签儿的。

 比如说,你现在要发送一个qq短信 hello 给你的好朋友,那么在网络中它是怎么实现的呢?

对于发送者来说: 

         1)在应用层中:

 qq需要传输数据,需要把数据包装成数据包(人为定义,有很多种方式)。比如:

数据包样式:发送者qq;接收者qq;发送时间;发送内容\n

数据包实例:12345678;87654321;2024-09-25 22:00;hello\n

acf8918e08114d3a812493c751b0a913.png

以上是“结构化”数据,它需要转为“二进制数据”字符串,因为计算机流通的都是二进制的。 

把 结构化数据=》二进制数据序列化

把 二进制数据=》结构化数据反序列化

        2)在运输层中:

 qq这样的应用软件会调用操作系统中的API(运输层提供给应用层的API)操作系统的会提供一个“发送数据”的API,然后把应用层包装好的数据包,作为参数传到系统内核的运输层中的代码里。

运输层有很多种协议(最主要的是TCP和UDP),假设这里使用是的UDP协议,这时运输层就会把它封装(可以理解为字符串拼接)成一个运输层数据包:

8e00fbc94ed4495e853a81cbaab1ad4f.png

 这里包含了UDP相关的信息,保留发送者的端口号和接收者端口号等等

        3)在网络层中:

运输层包装好的运输层数据包,运输层会调用网络层的API,然后把运输层数据包传进去网络层

网络层有很多协议,这里最主要的是IPv4协议(还有一种IPv6但是没有IPv4主导地位),网络层会把运输层数据包 封装(字符串拼接) 成网络层数据包,如下:

3c573e7477bc41c6a961f58efbe7e347.png

这里的IP报头包含了发送方的IP地址,也包含了接收方的IP地址等等 

        4)在数据链路层中:

网络层继续调用数据链路层的API,把网络层包装好的网络层数据包传进数据链路层中

efed6b61fa9f4447a05cdfffa9202250.png

         5)在物理层中:

传到物理层(也就是硬件层面)执行,网卡需要把上述二进制数据(虽然上面的看起来不是二进制,但是计算机会变成二进制),进行真正的传输(转为光信号,电信号等等)

对于接收者来说:

        1)在物理层中

接收到发送者的光电信号,然后转化成010101这样的二进制数据 

        2)在数据链路层中

数据链路层接受到物理层的二进制数据,以太网就会拿到这个数据包,取出IP报头和载荷,之后根据报头进行解析。根据报头,自己决定要保留还是丢掉,还是转发。(这里也就是分用)

5aa3cde46683458085cc34597d600b30.png

        3) 在网络层中

网络层中拿到数据链路层发来的数据,然后根据IP协议,取出IP报头和载荷,解析IP报头。是要转发,还是保留,还是丢掉(分用)。

d89436199abb46acae11a0ee7c24e70e.png

         4)在传输层中

传输层接收到网络层发来的数据,取出报头和载荷,根据报头进行解析,依据UDP协议,是要转发,还是保留,还是丢掉(分用),如果要转发的话,根据端口号转发。

733e95b78f4e4b7dbaac7d167f303a4c.png

         5)在应用层中

数据就到了应用层这里,qq这个应用软件就要根据接受到的数据,实现反序列化

比如:显示信息,发出嘀嘀嘀的提示音等等.... 

封装就像“发快递”添加报头(可以理解为字符串的拼接),分用就像“拆快递”,拆掉报头。

 上面的过程中,其实有很多交换机和路由器都参与了进来,也会涉及到封装和分用

  • 对于⼀台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层;
  • 对于⼀台路由器,它实现了从⽹络层到物理层,也即是TCP/IP五层模型的下三层;
  • 对于⼀台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;
  • 对于一台集线器,它只实现了物理层;

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

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

相关文章

springboot异常(三):异常处理原理

🍅一、BasicErrorController ☘️1.1 描述 BasicErrorController是Springboot中默认的异常处理方法,无需额外的操作,当程序发生了异常之后,Springboot自动捕获异常,重新请求到BasicErrorController中,在B…

JS设计模式之桥接模式:搭建跨越维度的通路

引言 在软件开发中,我们经常遇到需要对不同的抽象类进行不同的实现的情况,而传统的对象嵌套并不是一个优雅且可扩展的解决方案,因此这正是桥接模式的用武之地。桥接模式通过将抽象与实现分离,使得它们可以独立变化,从…

前缀和(5)_和为k的子数组

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 前缀和(5)_和为k的子数组 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 1. 题目…

列表控件QListWidget

显示模式 有两种显示模式,列表模式和图标模式 // 获取和设置显示模式 QListView::ViewMode viewMode() const void setViewMode(QListView::ViewMode mode) QListView::ViewMode有两个取值 QListView::ListMode 列表模式 QListView::IconMode 图标模式 交替背…

《银河战星:僵局》风灵月影修改器使用指南,轻松驾驭宇宙战场

在策略射击游戏《银河战星:僵局》中,合理利用风灵月影修改器能极大提升你的游戏体验。 以下是简明操作步骤,助你迅速上手,遨游星际: 1.下载安装: 首先,确保从正规渠道获取风灵月影修改器&…

冒泡排序-C语言

1.问题&#xff1a; 从小到大对10个数进行排序&#xff0c;要求使用冒泡排序实现。 2.解答&#xff1a; 排序规律有两种&#xff1a;一种是“升序”&#xff0c;从小到大&#xff1b;另一种是“降序”&#xff0c;从大到小。 3.代码&#xff1a; #include<stdio.h>//头…

保护您的网络:入侵检测系统 IDS 终极指南

IDS 和 IPS&#xff1a;了解异同-CSDN博客 IDS(入​​侵检测系统) 和 IPS(入​​侵防御系统) 之间的区别-CSDN博客 即便是今天&#xff0c;互联网仍与黑客肆意横行的网络无异。 但不必害怕&#xff01;我们有解决您问题的完美解决方案&#xff1a;入侵检测系统 I DS。 IDS就…

本地打开打包后的dist文件报错的解决方法

出现问题 本地直接打开dist文件夹会报错&#xff0c;报错信息类似于&#xff1a; Access to script at file:///D:/assets/index.9cb0ffcc.js from origin null has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: chrome, ch…

TypeScript基础语法与面对对象

TypeScript 基础语法 TypeScript 与面向对象 面向对象是一种对现实世界理解和抽象的方法。TypeScript 是一种面向对象的编程语言。面向对象主要有两个概念&#xff1a;对象和类 对象&#xff1a;对象是类的一个实例&#xff08;对象不是找个女朋友&#xff09;&#xff0c;有…

【优选算法】(第四篇)

目录 三数之和&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 四数之和&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 三数之和&#xff08;medium&#xff09; 题目解析 1.题目链接&#xff1a;. - 力扣&#xff08;LeetCode&…

接口返回动态列名及动态列数据结构

接口返回动态列名及动态列数据结构代码方案 在开发过程中&#xff0c;有时我们需要处理动态表头和动态列数据的问题。特别是在一些数据统计或报表类需求中&#xff0c;列名和数据都可能随着时间或条件发生变化。本文将结合实际代码和表格展示&#xff0c;详细说明如何在接口中…

微信阅读网站小程序+ssm论文ppt源码调试讲解

第2章 开发环境与技术 微信阅读网站小程序的编码实现需要搭建一定的环境和使用相应的技术&#xff0c;接下来的内容就是对微信阅读网站小程序用到的技术和工具进行介绍。 2.1 MYSQL数据库 本课题所开发的应用程序在数据操作方面是不可预知的&#xff0c;是经常变动的&#xf…

Linux中的tr命令详解

1&#xff0c; 将小写字母转换为大写字母&#xff1a; echo "hello" | tr a-z A-Z但是限定字母的范围的话&#xff0c;是什么输出你们知道吗&#xff1f; echo "hello" | tr a-l A-L2&#xff0c;删除特定字符&#xff1a; 比如&#xff0c;删除所有的数…

【吊打面试官系列-MySQL面试题】MySQL锁的优化策略?

大家好&#xff0c;我是锋哥。今天分享关于【MySQL锁的优化策略?】面试题&#xff0c;希望对大家有帮助&#xff1b; MySQL锁的优化策略? 1、读写分离 2、分段加锁 3、减少锁持有的时间 4.多个线程尽量以相同的顺序去获取资源不能将锁的粒度过于细化&#xff0c;不然可能会…

算法工程师重生之第十六天(二叉搜索树的最小绝对差 二叉搜索树中的众数 二叉树的最近公共祖先 )

参考文献 代码随想录 一、二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 示例 1&#xff1a; 输入&#xff1a;root [4,2,6,1,3] 输出&#x…

语义元分割学习:一种用于少量样本无线图像分类的TinyML方案

论文标题&#xff1a;Semantic Meta-Split Learning: A TinyML Scheme for Few-Shot Wireless Image Classification 中文标题&#xff1a;语义元分割学习&#xff1a;一种用于少量样本无线图像分类的TinyML方案 作者信息&#xff1a; Eslam Eldeeb, Mohammad Shehab, Hirley…

nvm,一款nodejs版本管理工具

背景 在工作中&#xff0c;我们可能同时在进行2个或者多个不同的项目开发&#xff0c;每个项目的需求不同&#xff0c;进而不同项目必须依赖不同版本的NodeJS运行环境&#xff0c;这种情况下&#xff0c;对于维护多个版本的node将会是一件非常麻烦的事情&#xff0c;nvm就是为…

Dapper 如何确保数据的安全性和防止 SQL 注入攻击?

一、什么是SQL注入攻击 SQL注入攻击是一种常见的网络攻击手段&#xff0c;它利用了应用程序中安全措施不足的问题&#xff0c;允许攻击者插入或“注入”一个或多个SQL语句到原本的查询中。这种攻击可以用于获取、篡改或删除数据库中的数据&#xff0c;甚至可以执行一些数据库管…

java:brew安装rabbitmq以及简单示例

什么是消息队列mq 可以看我之前写的这篇 消息队列MQ rabbitmq简介 RabbitMQ是由erlang语言开发&#xff0c;基于AMQP&#xff08;Advanced Message Queue 高级消息队列协议&#xff09;协议实现的消息队列&#xff0c;它是一种应用程序之间的通信方法&#xff0c;消息队列在…

200smart数据日志的功能

称重设备&#xff08;皮带秤&#xff09;读取到的数据值总是一直在跳变&#xff0c;无法正确识别称重传感器读取上来的值来判断产品的重量&#xff0c;虽然在程序中增加了取平均值功能&#xff08;模拟量输入按PLC扫描周期次数求平均值程序&#xff09;&#xff0c;但效果不理想…