如何实现三种不同RAM?(单端口RAM、伪双端口RAM、真双端口RAM|verilog代码|Testbench|仿真结果)

article/2025/9/28 21:59:18

如何实现三种不同RAM?

  • 一、前言
  • 二、单端口
    • 2.1 原理
    • 2.2 verilog代码
    • 2.3 Testbench
    • 2.4 仿真结果
  • 三、真双端口
    • 3.1 原理
    • 3.2 verilog代码
    • 3.3 Testbench
    • 3.4 仿真结果
  • 四、伪双端口
    • 4.1 原理
    • 4.2 verilog代码
    • 4.3 Testbench
    • 4.4仿真结果
  • 五、总结

请在此添加图片描述



数字IC经典电路设计

经典电路设计是数字IC设计里基础中的基础,盖大房子的第一部是打造结实可靠的地基,每一篇笔者都会分门别类给出设计原理、设计方法、verilog代码、Testbench、仿真波形。然而实际的数字IC设计过程中考虑的问题远多于此,通过本系列希望大家对数字IC中一些经典电路的设计有初步入门了解。能力有限,纰漏难免,欢迎大家交流指正。快速导航链接如下:

个人主页链接

1.数字分频器设计

2.序列检测器设计

3.序列发生器设计

4.序列模三检测器设计

5.奇偶校验器设计

6.自然二进制数与格雷码转换

7.线性反馈移位寄存器LFSR

8.四类九种移位寄存器总结

9.串并转换

10.七种常见计数器总结

11.异步复位同步释放

12.边沿检测

13.毛刺消除与输入消抖



一、前言

RAM(随机存取存储器)是计算机系统中的一种主要存储器件,用于存储和读取数据。在RAM中,单端口RAM(Single-port RAM)和双端口RAM(Dual-port RAM)是两种常见的类型,双端口RAM又分为真双端口(True dual-port RAM)和伪双端口RAM(Simple dual-port RAM)。

那么什么是单端口和双端口?又该如何区分真双端口和伪双端口?

  • 单端口RAM(Single-port RAM): 输入只有一组数据线和一组地址线,读写共用地址线,输出只有一个端口。这意味着,如果CPU需要读取RAM中的数据并将其写入另一个位置,必须先执行读取操作,然后执行写入操作。这种延迟可能会影响计算机系统的性能。单端口RAM通常用于低端计算机系统或嵌入式系统中。如下图所示:

请在此添加图片描述

  • 伪双端口RAM(Simple dual-port RAM): 输入有一组数据线,两组地址线,输出只有一个端口。伪双端口RAM可以提供并行读写操作,避免了传统单端口RAM的等待时间,因此有更快的访问速度和响应时间。伪双端口RAM通常广泛应用于高性能数字信号处理器、图像处理器、视频采集卡等领域,以提高存储器的访问速度和效率,满足高速处理的需求。如下图所示:

请在此添加图片描述

  • 真双端口RAM(True dual-port RAM): 输入有两组地址线和两组数据线,输出有两个端口。所以双口RAM两个端口都分别带有读写端口,可以在没有干扰的情况下进行读写,彼此互不干扰。这种RAM通常用于高端计算机系统中,因为它可以提高系统性能。例如,在多处理器系统中,多个处理器可以同时访问同一块双端口RAM,从而提高系统的并行处理能力。如下图所示:

请在此添加图片描述

总的来说:
单端口RAM:A不能同时读写,即A写时不可读,B读时不可写。
伪双端口RAM:AB可同时读写,但仅A写B读。
真双端口RAM:AB可同时读写,A可写可读,B可写可读。

请在此添加图片描述

在功能上与伪双端口RAM与FIFO较为相似,两者有何区别?

FIFO也是一个端口只读,另一个端口只写。FIFO与伪双口RAM的区别在于,FIFO为先入先出,没有地址线,不能对存储单元寻址;而伪双口RAM两个端口都有地址线,可以对存储单元寻址。伪双端口RAM主要用于高速数字信号处理,如通讯协议、图像处理等,因为它可以实现非常快速的读/写操作。而FIFO常用于缓冲和转换两个数据流之间的数据,例如音视频捕捉、交换机队列、路由器缓存等应用场景。实际上FIFO可由伪双端口RAM例化而成

RAM和FIFO中的深度(Depth)和宽度(Width)指的是什么?

除了弄清单端口与双端口的区别,还得理解存储器最重要的两个参数——位宽、深度。存储器深度和位宽都是数字电路中的重要参数,两者具有不同的含义。

存储器深度(Depth)指存储器中可存储数据的位数或存储单元的个数(比如2的n次幂),即存储器的容量大小。而位宽(Width)则指存储器中每个存储单元所能存储的二进制值的位数。

例如,有一个 8 位宽、256 深度的存储器,意味着这个存储器可以存储 256 个 8 位的二进制数据。

本文将会从4位宽、16深度的三种存储器为例展开设计。

二、单端口

2.1 原理

输入只有一组数据线和一组地址线,读写共用地址线,输出只有一个端口。这意味着,如果CPU需要读取RAM中的数据并将其写入另一个位置,必须先执行读取操作,然后执行写入操作。

2.2 verilog代码

实现一个深度为16、位宽为4的单端口RAM。

//深度为16、位宽为4的端端口RAM
module ram_single_port#(parameter 		DATA_WIDTH = 4,//RAM数据位宽parameter 		ADDR_WIDTH = 4,//RAM地址位宽parameter 		DEPTH = 16	//RAM深度)(input				clk,input 				rst_n,input 				wr_en,//写使能input 	     [ADDR_WIDTH-1:0]	addr,//读写共用地址input 	     [DATA_WIDTH-1:0]	wr_data,//写入数据output  reg  [DATA_WIDTH-1:0]	re_data//读出数据);//定义一个深度为16、位宽为4的单端口RAM
reg   [DATA_WIDTH-1:0]     ram_data [DEPTH-1:0];//数据写入存储在RAM中   
genvar i;
generatefor(i=0;i<DEPTH;i=i+1)always@(posedge clk or negedge rst_n) beginif(!rst_n) beginram_data[i] <= 0;endelse if(wr_en) begin	//使能高电平时写入	ram_data[addr] <= wr_data;	endelse beginram_data[addr] <= ram_data[addr]; endend
endgenerate//读出数据         
always@(*) beginif(wr_en) beginre_data <= 0;endelse if(!wr_en) beginre_data <= ram_data[addr];endelse beginre_data <= re_data;end
endendmodule

2.3 Testbench

`timescale 1ns/1ps;//仿真时间单位1ns 仿真时间精度1ps
module ram_single_port_tb();parameter 	DATA_WIDTH = 4;
parameter 	ADDR_WIDTH = 4;
parameter 	DEPTH      = 16;//信号申明
reg				clk;
reg				rst_n;
reg				wr_en;
reg	[ADDR_WIDTH-1:0]	addr;
reg	[DATA_WIDTH-1:0]	wr_data;
wire[DATA_WIDTH-1:0]	re_data;//例化
ram_single_port u_ram_single_port(.clk    	(clk),.rst_n		(rst_n),.wr_en		(wr_en),.addr		(addr),.wr_data	(wr_data),.re_data	(re_data));//时钟生成
always  #5 clk = ~clk;//信号初始化以及赋值
integer i;
initial beginclk = 1;rst_n = 1;wr_en = 0;wr_data = 0;#5;rst_n = 0;wr_en = 0;#5;rst_n = 1;wr_en = 1;for (i = 0; i < DEPTH; i = i + 1) begin//写入数据赋初值@(posedge clk) beginaddr = i;wr_data = wr_data  + 1;endend#5;wr_en = 0;for (i = 0; i < 64; i = i + 1) begin//设置读出地址@(posedge clk) beginaddr = i;endend
endendmodule

2.4 仿真结果

请在此添加图片描述

请在此添加图片描述

请在此添加图片描述

以165ns为分界线:左侧为数据的写入,此时无法进行读取数据;右侧为数据的读取,此时无法进行写入数据。RAM存储的数据为0-15总计16个数字,按照为此依次递增。

三、真双端口

3.1 原理

输入有两组地址线和两组数据线,输出有两个端口。所以双口RAM两个端口都分别带有读写端口,可以在没有干扰的情况下进行读写,彼此互不干扰。

3.2 verilog代码

实现一个深度为16、位宽为4的真双端口RAM。

//深度为16、位宽为4的真双端口RAM
module ram_true_dual_port #(parameter 		DATA_WIDTH = 4,//RAM数据位宽parameter 		ADDR_WIDTH = 4,//RAM地址位宽parameter 		DEPTH = 16	//RAM深度)(input           clk,input           rst_n,input           wr_en_a,//a端写使能input           re_en_a,//a端读使能input           [ADDR_WIDTH-1:0]   addr_a,//a端地址input   	    [DATA_WIDTH-1:0]   data_in_a,//a端输入数据output   reg    [DATA_WIDTH-1:0]   data_out_a,//a端输出数据input           wr_en_b,//b端写使能input           re_en_b,//b端读使能input           [ADDR_WIDTH-1:0]   addr_b,//b端地址input   	    [DATA_WIDTH-1:0]   data_in_b,//b端输入数据output   reg    [DATA_WIDTH-1:0]   data_out_b//b端输出数据);//定义一个深度为16、位宽为4的真双端口RAM
reg [DATA_WIDTH-1:0]    ram_data [DEPTH-1:0];  //a端、b端数据写入存储在RAM中   
genvar i;
generatefor(i = 0; i < DEPTH; i = i + 1)always @(posedge clk or negedge rst_n)beginif(!rst_n)beginram_data[i] = 0;						endelse if (wr_en_a) begin//a端使能高电平时写入		ram_data[addr_a] <= data_in_a; endelse if (wr_en_b) begin //b端使能高电平时写入	 		ram_data[addr_b] <= data_in_b; endelse beginram_data[addr_a] =ram_data[addr_a];ram_data[addr_b] =ram_data[addr_b];endend
endgenerate//a端、b端读出数据 
always @(posedge clk or negedge rst_n)beginif(!rst_n)begin							data_out_a <= 0;data_out_b <= 0;endelse if(re_en_a)begin		data_out_a <= ram_data[addr_a];					data_out_b <= data_out_b;endelse if(re_en_b)begindata_out_b <= ram_data[addr_b];					data_out_a <= data_out_a;endelse begindata_out_a <= data_out_a;data_out_b <= data_out_b;end
endendmodule

3.3 Testbench

`timescale 1ns/1ps;//仿真时间单位1ns 仿真时间精度1ps
module ram_true_dual_port_tb();parameter 	DATA_WIDTH = 4;
parameter 	ADDR_WIDTH = 4;
parameter 	DEPTH      = 16;//信号申明
reg           clk;
reg           rst_n;reg           wr_en_a;
reg           re_en_a;
reg           [ADDR_WIDTH-1:0]   addr_a;
reg   	      [DATA_WIDTH-1:0]   data_in_a;
wire          [DATA_WIDTH-1:0]   data_out_a;reg           wr_en_b;
reg           re_en_b;
reg           [ADDR_WIDTH-1:0]   addr_b;
reg    	      [DATA_WIDTH-1:0]   data_in_b;
wire	      [DATA_WIDTH-1:0]   data_out_b;//例化
ram_true_dual_port u_ram_true_dual_port(.clk			(clk),.rst_n			(rst_n),.wr_en_a		(wr_en_a),.re_en_a		(re_en_a),.addr_a			(addr_a),.data_in_a		(data_in_a),.data_out_a		(data_out_a),.wr_en_b		(wr_en_b),.re_en_b		(re_en_b),.addr_b			(addr_b),.data_in_b		(data_in_b),.data_out_b		(data_out_b));//时钟生成
always #5 clk = ~clk;//信号初始化以及赋值
integer i;
initial beginclk        = 1'b1;rst_n      = 1'b0;wr_en_a    = 1'b0;wr_en_b    = 1'b0;re_en_a    = 1'b0;re_en_b    = 1'b0;addr_a     = 1'b0;addr_b     = 1'b0;data_in_a  = 1'b0;data_in_b  = 1'b0;#30rst_n = 1'b1;//A写A读#20;wr_en_a= 1'b1; @(posedge clk) for (i=0;i<4;i=i+1)begin@(posedge clk) beginaddr_a = i;					data_in_a = data_in_a + 1;    endend#20;wr_en_a = 1'b0;re_en_a = 1'b1;  @(posedge clk) for (i=0;i<4;i=i+1)begin@(posedge clk)beginaddr_a = i;       endend//A写B读#20;re_en_a = 1'b0; wr_en_a = 1'b1; @(posedge clk) for (i=4;i<8;i=i+1)begin@(posedge clk) beginaddr_a = i;					data_in_a = data_in_a + 1;    endend#20;wr_en_a = 1'b0;re_en_b = 1'b1;  @(posedge clk) for (i=4;i<8;i=i+1)begin@(posedge clk)beginaddr_b = i;       endend//B写A读#20;re_en_b = 1'b0; wr_en_b = 1'b1; @(posedge clk) for (i=8;i<12;i=i+1)begin@(posedge clk) beginaddr_b = i;					data_in_b = data_in_b + 2;    endend#20;wr_en_b = 1'b0; re_en_a = 1'b1;  @(posedge clk) for (i=8;i<12;i=i+1)begin@(posedge clk)beginaddr_a = i;       endend//B写B读#20;re_en_a = 1'b0;  wr_en_b = 1'b1; @(posedge clk) for (i=12;i<16;i=i+1)begin@(posedge clk) beginaddr_b = i;					data_in_b = data_in_b + 2;    endend#20;wr_en_b = 1'b0; re_en_b = 1'b1;  @(posedge clk) for (i=12;i<16;i=i+1)begin@(posedge clk)beginaddr_b = i;       endendendendmodule

3.4 仿真结果

(1)整体

请在此添加图片描述

50ns—170ns:A写入数据A读出数据
170ns—290ns:A写入数据B读出数据
290ns—410ns:B写入数据A读出数据
410ns—530ns:B写入数据B读出数据

(2)ram_data

请在此添加图片描述

B端写入的数据与A端不同,A是连续的数据输入,B是间隔的数据输入(即是在自身的基础上不断+2得到的),整个RAM写入的数据如上所示。

(3)A写A读

请在此添加图片描述

可以看到data_in_a输入数据为1234,data_out_a输入数据为1234,A写A读正常。

(4)A写B读

请在此添加图片描述

可以看到data_in_a输入数据为5678,data_out_b输入数据为5678,A写B读正常。

(5)B写A读

请在此添加图片描述

可以看到data_in_b输入数据为2468,data_out_a输入数据为2468,B写A读正常。

(6)B写B读

请在此添加图片描述

可以看到data_in_b输入数据为ace0,data_out_b输入数据为ace0,B写B读正常。

四、伪双端口

4.1 原理

输入有一组数据线,两组地址线,输出只有一个端口。伪双端口RAM可以提供并行读写操作。

4.2 verilog代码

实现一个深度为16、位宽为4的伪双端口RAM。

//深度为16、位宽为4的伪双端口RAM
module ram_simple_dual_port #(parameter 	ADDR_WIDTH=4,parameter 	DATA_WIDTH=4,parameter 	DEPTH=16)(    input             clk,input             rst_n,input      	      				   wr_en, //写使能input      	      [ADDR_WIDTH-1:0] addr_a, //a端写地址            input  	      	  [DATA_WIDTH-1:0] data_a,//a端写数据input                              re_en, //读使能  input      	      [ADDR_WIDTH-1:0] addr_b, //b端读地址         output   reg      [DATA_WIDTH-1:0] data_b//b端读数据);//定义一个深度为16、位宽为4的伪双端口RAM
reg [DATA_WIDTH-1:0]    ram_data [DEPTH-1:0];  //a端写入数据存储在RAM中
genvar i;
generatefor(i = 0;i < DEPTH;i = i + 1)if(!rst_n) begin             ram_data[i] <= 0;endelse if (wr_en) begin   ram_data[addr_a] <= data_a;   endelse beginram_data[addr] <= ram_data[addr];end 
endgenerate//b端读出数据
always @(posedge clk or negedge rst_n) beginif(!rst_n) begin       data_b <= 0;endelse if(re_en) begin data_b <= ram_data[addr_b];  endelse begindata_b <= data_b;end
endendmodule

4.3 Testbench

`timescale 1ns/1ps;//仿真时间单位1ns 仿真时间精度1ps
module ram_simpel_dual_port_tb();parameter 	DATA_WIDTH = 4;
parameter 	ADDR_WIDTH = 4;
parameter 	DEPTH      = 16;//信号申明
reg				clk;
reg				rst_n;
reg				wr_en;
reg				re_en;
reg     [ADDR_WIDTH-1:0]	addr_a;
reg     [ADDR_WIDTH-1:0]	addr_b;
reg     [DATA_WIDTH-1:0] 	data_a;
wire    [DATA_WIDTH-1:0] 	data_b;//例化
ram_simple_dual_port u_ram_simple_dual_port(.clk		(clk),.rst_n		(rst_n),.wr_en		(wr_en),.re_en		(re_en),.addr_a		(addr_a),.addr_b		(addr_b),.data_a		(data_a),.data_b		(data_b));//时钟生成
always #5 clk = ~clk;//信号初始化以及赋值
integer i;
initial beginclk     = 1'b1;rst_n   = 1'b0;wr_en   = 1'b0;re_en   = 1'b0;addr_a  = 1'b0;addr_b  = 1'b0;data_a  = 1'b0;#30rst_n = 1'b1;#5wr_en = 1'b1; @(posedge clk) for (i=0;i<DEPTH;i=i+1)begin@(posedge clk) beginaddr_a = i;					data_a = data_a + 1;    endend#5 wr_en = 1'b0;re_en = 1'b1;  @(posedge clk) for (i=0;i<DEPTH;i=i+1)begin@(posedge clk)beginaddr_b = i;        endend
endendmodule

4.4仿真结果

(1)整体波形

请在此添加图片描述

205ns前,wr_en = 1,;205ns后,re_en = 1;以205ns为分界线,左右两侧分别是写数据和读数据,当时钟信号处于上升沿时,分别写入和读取当前地址的数据,但是写入数据与读写数据不能同时进行,因为此处设计的是simple_dual_port RAM,即伪双端口RAM。

(2)寄存器数据ram_data

请在此添加图片描述

在Testbench中,我们借用for循环,在时钟上升沿时触发使得写入的数据data_a存储到RAM寄存器ram_data中,如上图所示

(3)写数据

请在此添加图片描述

在90ns到110ns间是写入数据,此时读出数据停。止可以看到,在前半部分写入的地址addr_a = 4,写入数据data_a =5,所以在下一个上升沿将数据5写入ram_data4中,此时ram_data为12345成功写入。后续的数据同理。

(4)读数据

请在此添加图片描述

在205ns后是读出数据,此时写入数据停止。可以看到,在初始读出的地址addr_b = 0,此时ram_data =fedcba987654321,所以在下一个上升沿读出数据ram_data0,此时data_b成功读出1。后续的数据同理。

五、总结

总的来说:
单端口RAM:只有一个口,此口可读可写,但_不能同时读写_,即写时不可读,读时不可写。
伪双端口RAM:两个口,每个口只会读(或写),AB可同时读写,但仅A写B读。是构成FIFO的重要组成部分
真双端口RAM:两个口,每个口都可读可写,AB可同时读写,A可写可读,B可写可读。


更多可查看个人主页链接
软件版本:Modelsim 10.6c
不定期纠错补充,欢迎随时交流
最后修改日期:2023.6.2


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

相关文章

真双口RAM读写设计

dual port ram ---DP RAM 1.1 概念1.2 读写冲突处理1.3 三种端口比较1.4 真双口RAM读写代码1.5 仿真波形 1.1 概念 真双端口RAM有两个独立的读写端口&#xff0c;每个端口都可以独立发起读或者写。1.2 读写冲突处理 1、读和写冲突&#xff1a;如果读和写同时有效&#xff0c;且…

计算机组成原理_双口RAM和多模块存储器

计算机组成原理总目录 双口RAM和多模块存储器 1. 双口RAM 双口RAM&#xff0c;即RAM存储器有两个可供CPU读写的端口 在这样的结构体下&#xff0c;CPU在读写RAM时会出现以下四种情况 两个端口对不同地址单元进行读写操作&#xff0c;则二者互不影响两个端口对同一地址单元进行…

双口ram读写

项目名称 双口ram读写 具体要求 将0-1023存入ram并读出,a端口写入数据&#xff0c;b端口读出数据&#xff0c;两个端口的时钟频率设置相同&#xff0c;仿真时以50m写入12.5m读取 单端口时读和写不能同时进行&#xff0c;双端口ram多了一个读地址&#xff0c;可以同时读写 …

单口RAM、双口RAM、FIFO

单口RAM、双口RAM、FIFO 单口与双口 单口与双口的区别在于&#xff0c;单口只有一组数据线与地址线&#xff0c;因此读写不能同时进行&#xff1b;而双口有两组数据线与地址线&#xff0c;读写可同时进行&#xff1b;FIFO读写可同时进行&#xff0c;可以看作是双口&#xff1…

双口RAM浅谈

双口RAM&#xff0c; 基本上是10年前的东西了&#xff0c;当前设计的项目应该很少会用到这类器件了&#xff0c;不光是双口RAM&#xff0c;其它随着MCU性能的不断增加&#xff0c;很多器件都会被替代到&#xff0c;不再需要了&#xff0c;比如CPLD&#xff0c;之前公司的板子上…

FPGA之RAM详解,真双口RAM的使用

真双口RAM IP练习 真双口RAM可以说是灵活性最大的RAM IP核&#xff0c;因为它赋予了用户最大的设计空间&#xff0c;两个可以独立读写地址空间的端口&#xff0c;充分释放了FPGA程序设计上的可能。 但是实际上真双口RAM在工程项目中还是和单双口RAM一样使用频率比较低的&#x…

双口ram

双口ram的功能实在很妙&#xff0c;能把二个除理器合二为一&#xff0c;强强联合&#xff0c;发挥更强的功能。如小时候看过的动画片&#xff0c;当打不过怪物时&#xff0c;动画的主角总会合体&#xff0c;增加战斗力&#xff0c;把怪物打败。又口ram提供了处理器“合体”的方…

数字IC笔面基础,项目常用IP——双口RAM(简介及Verilog实现)

双口RAM简介及Verilog实现 写在前面的话双口RAM简介伪双口RAM框图&#xff1a;&#xff08;Xilinx FPGA&#xff09;真双口RAM框图&#xff1a;&#xff08;Xilinx FPGA&#xff09;RAM读写时序图伪双口RAM读写实列 简单的双口RAM的Verilog实现总结 写在前面的话 RAM&#xff…

双口RAM及Vivado RAM IP核的使用

目录 1.双口RAM概述 2.Vivado 双口RAM IP核 2.1 Block Memory Generator概述 2.2 真双口RAM的设置 2.2.1 Basic设置 2.2.2 Port设置 3.双口RAM例程 4.仿真 4.后记 5.参考文献 1.双口RAM概述 双口RAM&#xff08;dual port RAM&#xff09;在异构系统中应用广泛&…

网络原理(一):初识网络

网络发展史 独立模式 独立模式&#xff1a;计算机之间相互独立&#xff1b; 在计算机最初的时候&#xff0c;每个计算机都是独立存在的。 我们拿游戏来举例&#xff0c;但是的计算机只能玩玩单机游戏&#xff0c;游戏通过了就没意思了。 随着时代的发展&#xff0c;来到了…

网络原理(小结)

网络原理 前言网络七层/五层模型OSI七层网络模型TCP/IP 五层网络模型封装和分用 TCP/IP五层网络模型各层代表协议的详解应用层常见状态码HTTP常见Header头ServletSession和CookieHTTP协议的特点HTTPSHTTP与HTTPS的区别 传输层网络传输的五元组端口号UDP协议TCP协议TCP如何保证数…

网络原理 | 网络初识之网络基础概念学习

目录 局域网与广域网 网络通信基础 IP地址 端口号 网络协议 五元组 局域网与广域网 根据网络互联的规模&#xff0c;可以将网络划分为局域网(LAN)和广域网(WAN). 网络互连即将多台计算机连接在一起&#xff0c;完成数据共享&#xff0c;数据共享的本质是网络数据传输&…

网络的基本原理

文章目录 一、计算机网络背景二、局域网和广域网1.局域网(LAN)2.广域网(WAN) 三、认识协议1.协议的概念2.协议分层3.网络OSI七层模型4.TCP/IP五层模型5.数据的封装和解包 四、局域网内主机交互与跨网段主机交互 一、计算机网络背景 我们用计算机完成一项工作时&#xff0c;不可…

网络:网络协议基本原理

引入 进程间通信&#xff0c;其实是通过内核的数据结构完成的&#xff0c;主要用于在一台linux上两个进程之间的通信。但是&#xff0c;一旦超出一台机器的范畴&#xff0c;我们就需要一种跨进程的通信机制。一台机器将自己想要表达的内容&#xff0c;按照某种约定好的格式发送…

网络原理(初识)

网络原理&#xff08;网络初识&#xff09; 1、局域网LAN&#xff08;Local Area Network&#xff09; &#xff08;1&#xff09;Local 即标识了局域网是本地&#xff0c;局部组建的一种私有网络。局域网内的主机之间能方便的进行网络通信&#xff0c;又称为内网&#xff1b;局…

网络原理(IP协议)

目录 IP协议IP地址IP 地址由网络和主机两部分标识组成IP 地址的分类广播地址IP多播子网掩码 路由IP 地址与路由控制 IP 分包与组包什么是IP分片为什么要进行IP分片IP分片是如何组装的路径 MTU 发现 IP协议 IP&#xff08;IPv4、IPv6&#xff09;相当于 OSI 参考模型中的第3层—…

网络原理——网络协议

目录 传输层协议TCP协议TCP协议格式段TCP原理连接管理可靠传输流量控制拥塞控制延迟应答和捎带应答错误检测TCP异常 UDP协议UDP协议格式段UDP协议特点无连接不可靠面向数据报大小受限 网络层协议IP协议 数据链路层协议​以太网MTUARP协议 传输层协议 ​ 传输层负责数据能够从发…

网络原理 2

文章目录 1. 网络层2. 数据链路层3. DNS 前言 : 上文已经 将 网络层 和 传输层 说完了&#xff0c; 下面我们来学习以下 网络层 和 数据链路层 里 相关的知识 &#xff0c; 关于 网络层 和 数据链路层 的知识 简单了解一下即可 . 1. 网络层 网络层 主要 做两件事 : 1.地址管…

计算机网络原理最详细解说

一、计算机网络概述 时代不同了&#xff0c;大家现在生活都好了&#xff0c;家家户户基本都有电脑&#xff0c;而且我们都习惯了使用电脑办公&#xff0c;打打游戏&#xff0c;聊聊天等等。 那我们一起来想一个场景&#xff1a;如果没有了网络&#xff0c;我们是不是就不能使…

[网络原理] 网络中的基本概念

人生,本就是苦乐参半,这样的生活才是丰富多彩. 文章目录 前言1. IP地址2. 端口号3. 协议4. 五元组5. 协议分层6. OSI七层模型7. TCP/IP协议8. 封装和分用9. 客户端与服务端10. 请求与响应 前言 本章开始,我们开启网络部分的知识大门. 1. IP地址 1.定义: IP地址主要用于表示网…