Day18_count3_计算机网络

VHDL

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity count3 is
          port (clk:in bit;
          count:out bit_vector (2 downto 0));
end count3 ; 

architecture stucture of count3 is
    component dfff
        port (clk,data:in bit;
        q:out bit);
    end component ;

   component and2
       port(in1,in2:in bit;
       o:out bit) ;
   end component ;
 
   component orr2
       port(in1,in2:in bit;
       o:out bit);
   end component ;

   component nnand2
       port(in1,in2:in bit;
       o:out bit);
   end component ;

   component xxnor2
       port(in1,in2:in bit;
       o:out bit);
   end component;
 
   component iinv
       port(i:in bit;
       o:out bit);
   end component;

signal n1,n2,n3,n4,n5,n6,n7,n8,n9:bit;
begin
u1 : dfff port map (clk,n1,n2);
u2 : dfff port map (clk,n5,n3);
u3 : dfff port map (clk,n9,n4);
u4 : iinv port map (n2,n1);
u5 : orr2 port map (n3,n1,n6);
u6 : nnand2 port map (n1,n3,n7);
u7 : nnand2 port map (n6,n7,n5);
u8 : xxnor2 port map (n8,n4,n9);
u9 : nnand2 port map (n2,n3,n8);
end stucture;

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity dfff is
          port (clk,data:in bit;
        q:out bit); 
end dfff; 
architecture stucture of dfff is
begin
process(clk)
begin
if clk'event and clk='1'  then
   q<=data;
end if;
end process;
end stucture;

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity orr2 is
          port (in1,in2:in bit;
       o:out bit); 
end orr2; 
architecture stucture of orr2 is
begin
o<=in1 or in2;
end stucture;

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity nnand2 is
          port (in1,in2:in bit;
       o:out bit); 
end nnand2 ; 
architecture stucture of nnand2 is
begin
o<=not(in1 and in2);
end stucture;

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity iinv is
          port (i:in bit;
       o:out bit); 
end iinv; 
architecture stucture of iinv is
begin
o<=not i;
end stucture;

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity xxnor2 is
          port (in1,in2:in bit;
       o:out bit); 
end xxnor2; 
architecture stucture of xxnor2 is
begin
o<=in1 xor in2;
end stucture;

三位计数器

百词斩

每日一题

题目
请详细解释TCP与UDP协议的区别与联系,并举例说明它们在现实场景中的应用。


考察点

  1. 对传输层协议(TCP/UDP)核心特性的理解。
  2. 能否从连接性、可靠性、性能等方面对比分析两者的差异。
  3. 实际应用场景的举例能力(如实时通信与可靠文件传输)。
  4. 是否了解相关扩展知识(如拥塞控制、三次握手等)139。

参考答案思路

1. 定义与核心特性

  • TCP(传输控制协议)
    • 面向连接的协议,通过三次握手建立连接,四次挥手释放连接。
    • 提供可靠传输,通过序列号、确认应答、超时重传、流量控制、拥塞控制等机制确保数据正确性和顺序性19。
    • 基于字节流传输,适用于需要高可靠性的场景(如文件传输、网页浏览)。
  • UDP(用户数据报协议)
    • 无连接协议,无需预先建立连接,直接发送数据报。
    • 不保证可靠性,可能丢包或乱序,但传输效率高、延迟低。
    • 基于数据报传输,适用于实时性要求高、允许少量数据丢失的场景(如视频通话、在线游戏)35。

2. 关键区别

对比维度 TCP UDP
连接性 面向连接(三次握手) 无连接
可靠性 可靠传输(确认机制、重传) 不可靠,可能丢包
数据顺序 保证数据顺序 不保证顺序
传输效率 高开销(协议控制机制复杂) 低开销(协议简单)
适用场景 文件传输(FTP)、网页(HTTP/HTTPS) 实时通信(视频流、DNS查询)
头部大小 20字节(固定)+ 可选字段 8字节(固定)

3. 实际应用场景

  • TCP的典型应用
    • 网页浏览(HTTP/HTTPS):需确保网页内容完整加载。
    • 电子邮件(SMTP):邮件内容必须准确无误传输。
    • 文件传输(FTP):大文件传输需保证数据完整性19。
  • UDP的典型应用
    • 实时视频/语音通话(Zoom、腾讯会议):允许少量丢包以降低延迟。
    • 在线游戏(MOBA、FPS):快速响应玩家操作,延迟敏感。
    • DNS查询:请求-响应模式简单,无需持久连接57。

4. 扩展知识

  • TCP的拥塞控制:通过慢启动、拥塞避免、快重传、快恢复算法动态调整发送速率,避免网络过载9。
  • UDP的定制化:虽然UDP本身不可靠,但可在应用层实现部分可靠性(如QUIC协议结合了UDP的高效与自定义重传机制)。
  • 协议选择权衡:设计系统时需在可靠性与实时性之间权衡(如直播场景优先UDP,金融交易必须TCP)37。

可能的追问

  1. 为什么TCP需要三次握手,而UDP不需要?
    • 三次握手确保双方通信能力正常(防历史连接干扰),UDP无连接无需确认对方状态9。
  2. 如何基于UDP实现可靠传输?
    • 可在应用层添加序列号、确认应答、超时重传等机制(如QUIC协议)7。
  3. 视频流使用UDP时,如何解决丢包问题?
    • 采用前向纠错(FEC)、缓冲区平滑抖动、动态码率调整等技术5。

此问题既能考察基础概念,又能深入探讨协议设计与实际应用,建议结合具体技术(如HTTP3的QUIC协议)或编程实例(如Socket编程中的TCP/UDP选择)进一步深化回答。

posted @ 2025-03-19 23:16  Pikature  阅读(35)  评论(0)    收藏  举报