计算机之间通信原理---CSDN观后感

article/2025/10/7 21:15:00

一、前言

      计算机之间通信,主要通过网络通信的5层模型。即

应用层(Application Layer)

传输层(Transport Layer)

网络层(Network Layer)

数据链路层(Datalink Layer)

物理层(Physical Layer)

  它们可以理解为逐层依赖,其中物理层为基础。

二 、物理层

    两台计算机要同信,最基础的是相连,即通过光纤、电缆、双绞线等介质连接,这样才可以在两个计算机之间通过高低电频来传送最基础的0、1电信号。

三、数据链路层

    上接物理层理解,物理层只传送0、1电信号,如果传送的0、1毫无规则,计算机是无法识别的,因此必须制定规则来进行01的传输,比如以太网协议,

01、以太网协议

    以太网协议主要用来规定多少个电信号为一组,也叫一个数据包,或者帧。每个帧由表头(Head)和数据(Data)构成,大小一般为64-1518字节,数据量大就多帧传送。每帧的大小不一,所以必须就表头部分进行固定(否则计算机无法判断哪是表头,并且表头固定18个字节),表头部分主要存放该帧的发送者,接受者,等信息。数据部分则存放发起者要给接收者的内容。

    通过一台计算机发送出去的一帧数据,如何保证另一台计算机能准确接收呢,(一个计算机不可能只连接一个计算机),这个就需要对计算机进行区分,确定一个唯一标识,即MAC地址。

02、MAC地址

    连入网络的计算机均有一个网卡接口,每个网卡接口都有一个唯一的地址,即MAC地址,由48个字节组成,在网卡生产时就被唯一标识

03、广播和ARP协议

    (1)广播

           假设计算机A同时连着计算机B、C、D,A虽然知道计算机B的MAC地址,但是在同一子网中,如何将数据传送给B呢,一种方式就是广播,即A发送一个数据包,中间包含B的MAC地址,B、C、D接收后,会取出其中的MAC地址与自己进行比对,如果相同则进行接收,否则丢弃不理,类似于广播找人,叫到你的名字,你才会答应一样。

    (2)ARP协议

            上接上面的扩展考虑,就是A是如何知道B的MAC地址的呢?即通过ARP协议解决。

四、网络层

  上接数据链路层内容,可以理解什么是子网?我们所处的网络,实际上是由各种各样的子网构成。如果不划分子网,那么可以理解为,计算机A广播一个数据包给计算机B,其他所有计算机都要接受一遍并进行舍弃,那么每台计算机都会奔溃。对于同一个子网中的计算机,可以通过MAC地址确定广播信息,那么又是如何确定每个MAC地址属于哪个子网呢?并且不同子网中的数据如何发送,这就通过网关,先发送给网关,然后让网关进行转发,这就需要一个IP协议。

(1)IP协议

        通用的IP协议,也是为了确定一个地址,叫IP地址。通用的有IPv4和IPv6两种。

       IPv4地址,由 32 位的二进制数组成,我们一般把它分成 4 段的十进制表示,地址范围为 0.0.0.0~255.255.255.255。其中前面部分是代表网络,后面部分代表主机,两者长度并不固定。如果两个计算机的网络部分一样,可以认为其处于同一子网中,例如192.168.43.1 和 192.168.43.2,如果网络部分为24位,主机部分为8位,则其网络部分为192.168.43,可以理解成同一子网。

但是无法仅仅通过IP就确定网络占几位,主机占几位,这就需要另一个东西——子网掩码。子网掩码和 IP 地址一样也是 32 位二进制数,不过它的网络部分规定全部为 1,主机部分规定全部为 0。也就是说,假如上面那两个 IP 地址的网络部分为 24 位,主机部分为 8 位的话,那他们的子网掩码都为  11111111.11111111.11111111.00000000,即 255.255.255.0。

那有了子网掩码,如何来判端 IP 地址是否处于同一个子网中呢。显然,知道了子网掩码,相当于我们知道了网络部分是几位,主机部分是几位。

我们只需要把 IP 地址与它的子网掩码做与(and)运算,然后把各自的结果进行比较就行了,如果比较的结果相同,则代表是同一个子网,否则不是同一个子网。

例如,192.168.43.1 和 192.168.43.2 的子码掩码都为 255.255.255.0,把 IP 与子码掩码相与,可以得到他们都为 192.168.43.0,进而他们处于同一个子网中。

(2)ARP协议

上接IP内容,有了两台计算机的 IP 地址与子网掩码,我们就可以判断出它们是否处于同一个子网之中了。

ARP 协议也是通过广播的形式给同一个子网中的每台电脑发送一个数据包(当然,这个数据包会包含接收方的 IP 地址,可以理解为在同一子网中无差别询问)。

对方收到这个数据包之后,会取出 IP 地址与自身的对比,如果相同,则把自己的 MAC 地址回复给对方,否则就丢弃这个数据包。这样,计算机 A 就能知道计算机 B 的 MAC 地址了。

既然计算机A询问对方MAC地址通过广播,发送数据给对方也通过广播,那么计算机B如何判断对方是发数据,还是问要MAC地址,其实询问 MAC 地址的数据包中,在对方的 MAC 地址这一栏中,填的是一个特殊的 MAC 地址,其他计算机看到这个特殊的 MAC 地址之后,就能知道广播想干嘛了。(可以理解为,计算机A发了一个数据包,其中包含了特殊的含义,即把你MAC告诉我,计算机B收到后即广播出自己的MAC供对方)

如果在不同的子网中,要想发送数据给对方,则通过网关转发。

(3)DNS服务器

我们是如何知道对方计算机的 IP 地址的呢?相当于我要和另一台计算机中的进行对话,则需要对方的IP,例如访问百度,我们必须知道百度的IP(可以理解百度是一台很大的计算机),但是大多数时候我们不会直接记住IP,而是访问百度是输入www.baidu.com 这个域名。当我们输入这个域名时,会有一个叫做 DNS 服务器的家伙来帮我们解析这个域名,然后返回这个域名对应的 IP 给我们。

因此,网络层的功能就是让我们在茫茫人海中,能够找到另一台计算机在哪里,是否属于同一个子网等。

五、传输层

通过物理层、数据链路层以及网络层的互相帮助,我们已经把数据成功从计算机 A 传送到计算机 B 了,可是,计算机 B 里面有各种各样的应用程序,计算机该如何知道这些数据是给谁的呢?

这个时候,就需要端口(Port)来进行区分,也就是说,我们在从计算机 A 传数据给计算表B的时候,还得指定一个端口,以供特定的应用程序来接受处理。

传输层的功能,就是建立端口到端口的协议通信。相比网络层的功能是建立主机到主机的通信。

也就是说,只有有了 IP 和端口,我们才能进行准确着通信。这个时候可能有人会说,我输入 IP 地址的时候并没有指定一个端口啊。那是因为,我们使用的某些协议,已经默认了端口号,例如 http 的传输默认端口是 80,这些端口信息也会包含在数据包里的。

传输层最常见的两大协议是 TCP 协议和 UDP 协议,其中 TCP 协议与 UDP 最大的不同就是 TCP 提供可靠的传输,而 UDP 提供的是不可靠传输。

六、应用层

应用层是最接近我们的一个层,我们通过各种协议接收来的数据,会有各种各样的格式,例如,html格式、mp4、JPG、等等,如何通过计算机的不同软件,翻译成我们人能看懂的东西,比如文字、图片、视频、音频等视觉听觉效果。

这个时候我们就需要再指定不同的格式和协议进行渲染。

因此我们需要指定这些数据的格式规则,收到后才好解读渲染。例如我们最常见的 Http 数据包中,就会指定该数据包是 什么格式的文件了。

 

七、总结

以上内容来源于微信公众号所看内容,非原创,文中已指定《计算机网络:自顶向下》这本书,感谢作者的心血付出和大力推荐。

 


http://chatgpt.dhexx.cn/article/hBEnugsh.shtml

相关文章

固态硬盘SSD的SLC与MLC和TLC三者的区别

1、具体含义不同: SLC即Single Level Cell,速度快寿命长,价格较贵,约10万次擦写寿命。 MLC即Multi Level Cell,速度一般寿命一般,价格一般,约3000~10000次擦写寿命。 TLC即Trinary Level Cel…

什么是SSD固态硬盘的QLC、SLC、MLC、TLC

概要 本文从SSD结构出发,详细介绍NAND闪存芯片QLC、SLC、MLC、TLC之间的区别、各自的优缺点以及其适用的人群。 ? 目录 一、剖析SSD 二、什么是NAND闪存 三、单层单元(Single Level Cell,简称SLC) 四、多层单元(…

Nand flash 三种类型SLC,MLC,TLC

转载自:http://diy.pconline.com.cn/750/7501340.html 从前,大家谈TLC色变;如今,TLC攻占SSD半壁江山。是的,这个世界就是这么奇妙。 虽然TLC早已占据主流地位,但传言多了、百度多了,不少消费者还…

slc mlc tlc 的 ssd 的区别

转载自:http://diy.pconline.com.cn/750/7501340.html 从前,大家谈TLC色变;如今,TLC攻占SSD半壁江山。是的,这个世界就是这么奇妙。 虽然TLC早已占据主流地位,但传言多了、百度多了,不少消费者还…

SLC、MLC、TLC 和 QLC NAND SSD 之间的区别:哪个更好?

如果你想要一个顶级系统,尤其是用于游戏或内容创作,那么 SSD 是绝对必要的。然而,在你去寻找之前,你应该知道要寻找什么。有多种不同类型的 SSD。就基本的 SSD 存储单元而言,有 SLC、MLC、TLC 和 QLC。其中&#xff0c…

hive实战

1. 安装hive 2. hive实战 3. hive存储模型 4. 深入hql查询语言 5. 参考资料及代码下载 <1>. 安装hive 下载hive&#xff0c;下载地址http://mirror.bjtu.edu.cn/apache//hive/ &#xff0c;解压该文件&#xff1a; xuqiangubuntu:~/hadoop/src/hive$ tar zxvf h…

hive实战 - qiang.xu - 博客园

hive实战 - qiang.xu - 博客园 hive实战 - qiang.xu - 博客园 hive实战 1. 安装hive 2. hive实战 3. hive存储模型 4. 深入hql查询语言 5. 参考资料及代码下载 <1>. 安装hive 下载hive&#xff0c;下载地址http://mirror.bjtu.edu.cn/apache//hive/&#xff0c;解压该…

《深度学习之PyTorch物体检测实战》—读书笔记

随书代码 物体检测与PyTorch 深度学习 为了赋予计算机以人类的理解能力与逻辑思维&#xff0c;诞生了人工智能&#xff08;Artificial Intelligence&#xff0c; AI&#xff09;这一学科。在实现人工智能的众多算法中&#xff0c;机器学习是发展较为快速的一支。机器学习的思…

3D图像重建中的颜色预测误差研究

目录 整体思路&#xff1a;1、本课题的目的、意义1. 描述图像2. 标注图像3、CNN 3D图像重建中的颜色预测误差研究摘 要1 绪 论1.1背景与意义1.2 课题研究内容1.3 3D重建国内外研究现状1.4 深度学习算法研究现状1.4.1 应用于自然语言处理1.4.2 提取立体图像视觉特征1.4.3 图像颜…

python项目开发实例视频-零基础入门Python Web开发到项目实战精讲

课程章节 第1章Mysql基础 1-数据库简介 2-数据库的安装及配置 3-SQL语句规范 4-数据库的相关操作 5-MySQL中支持的数据类型简介 6-MySQL中的存储引擎简介 7-MySQL数据表的创建 8-测试数据类型 9-测试字符串类型 10-测试字符串类型 11-测试日期时间类型 12-测试主键…

Hadoop 和 Spark 知识点整理汇总

文章目录 前言一、LINUX 系统常用命令汇总二、Hadoop 常用命令汇总三、Hadoop 基本概念1. Hadoop 特性2. Hadoop 架构2.1 Hadoop 集群2.2 HDFS2.3. YARN 四、Hadoop HDFS命令1. HDFS 命令通用格式2. 创建与查看 HDFS 目录3. HDFS 与本地计算机之间的文件复制4. 复制与删除 HDFS…

IT转互联网的转行经验

全栈工程师开发手册 &#xff08;作者&#xff1a;栾鹏&#xff09; 架构系列文章 个人经历 选择大学专业 2010年&#xff0c;我20&#xff0c;手机还是2G网络&#xff0c;电脑还是window x&#xff0c;高中毕业&#xff0c;父母只是农村建筑工人&#xff0c;对社会工作完全…

这一套封面的程序员专业书籍你读过哪一本?

以往我们总盯着畅销书&#xff0c;经典书&#xff0c;新书&#xff0c;今天给大家介绍Packt Publishing的程序员专业书籍。这一套封面的程序员书你读过哪一本&#xff1f; 1、Python图像处理实战 [印度] 桑迪潘戴伊&#xff08;Sandipan Dey&#xff09; 著&#xff0c;陈盈&…

[译]用R语言做挖掘数据《七》

时间序列与数据挖掘 一、实验说明 1. 环境登录 无需密码自动登录&#xff0c;系统用户名shiyanlou&#xff0c;密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境&#xff0c;实验中会用到&#xff1a; 1. LX终端&#xff08;LXTerminal&#xff09;: Linux命…

[学习笔记]黑马程序员-Hadoop入门视频教程

文章目录 参考资料第一章&#xff1a;大数据导论与Linux基础&#xff08;p1-p17&#xff09;1.1 大数据导论1.1.1 企业数据分析方向1.1.2 数据分析基本流程步骤明确分析的目的和思路数据收集数据处理数据分析数据展现报告攥写 1.1.3 大数据时代大数据定义大数据的5V特征应用场景…

[译]用R语言做挖掘数据《五》

介绍 一、实验说明 1. 环境登录 无需密码自动登录&#xff0c;系统用户名shiyanlou&#xff0c;密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境&#xff0c;实验中会用到程序&#xff1a; 1. LX终端&#xff08;LXTerminal&#xff09;: Linux命令行终端&a…

基于ROS的Most Stars开源代码汇总(自动驾驶汽车+RGBDSLAMv2+ROS2+人识别与跟踪等)

Star 200 https://github.com/CPFL/Autoware 用于城市自主驾驶的开源软件。 http://www.tier4.jp/ Autoware 用于城市自主驾驶的集成开源软件&#xff0c;由第四层维护。支持以下功能&#xff1a; 3D本地化3D映射路径规划路径跟随加速/制动/转向控制数据记录汽车/行人/物体检…

WEKA使用(基础配置+垃圾邮件过滤+聚类分析+关联挖掘)

声明: 1)本文由我bitpeach原创撰写,转载时请注明出处,侵权必究。 2)本小实验工作环境为Windows系统下的WEKA,实验内容主要有三部分,第一是分类挖掘(垃圾邮件过滤),第二是聚类分析,第三是关联挖掘。 3)本文由于过长,且实验报告内的评估观点有时不一定正确,希…

CUDA 初体验

CUDA Visual ProfilerCUDA编程指导 shared memoryPage locked out memory C CUDA 调用CUDA 编程介绍CUDA 数据同步 CUDA Visual Profiler 在上180645课程的时候&#xff0c;里面谈到使用CUDA来做矩阵乘法和k均值聚类的加速。在使用n卡的时候&#xff0c;有一个Visual Profile…

LogCluster算法

LogCluster - A Data Clustering and Pattern Mining Algorithm for Event Logs LogCluster - 事件日志的数据聚类和模式挖掘算法 Risto Vaarandi and Mauno Pihelgas TUT 数字取证和网络安全中心 塔林科技大学 爱沙尼亚塔林 0 概要 Abstract—Modern IT systems often pro…