-
在虚拟机上进行编译和执行,得到的结果源地址IP和目的地址IP是一样的,网络用的桥接模式。在user程序中进行对百度的ping操作。而且监控网口改成了我自己的网口。但是得到的就有我虚拟机的地址,socket源和目的地址都是。这是负责储存信息的结构体,在map中作为键key。这是给结构体中源和目标地址赋值的操作函数部分。这是map,值为包的数量和大小的结构体。这是user态的输出。像是端口,协议号,包数和数据大小都能正常输出,就是这个源地址和目的地址是一样的。然后我把源和目的地址改成定值1和2.输出就是1和2,感觉这是对的(没有ping百度,是连接的vscode,走22端口)然后我又去看了这个struct __sk_buff的偏移量,确实也是不一样的,源地址n1的偏移量26,目的地址n2的偏移量30,理应得到两个不同的内容才对。这俩load_word函数得到的理应是不同的值才对。但输出的确实是同一个值。但输出就是一样的,就怀疑是struct __sk_buff结构体里面填充的源和目的地址是一样的。这个程序就是源码目录下/samples/bpf/sockex3.我不能理解为什么,也许是我没理解到程序在做什么,求救大佬指导。
-
使用c语言ebpf和int _sockops(struct bpf_sock_ops *ctx)函数,map随意我是初学者,死活写不出来,求教大佬们。
-
随着5G、云、AI时代的来临,华为聚焦业务需求,面向运营商客户推出智能骨干解决方案,突破传统IP骨干网限制,帮助运营商客户解决现有骨干IP网络面临的带宽利用率低,业务体验差、部署低效、运维复杂等问题。随着新时代的到来,骨干IP网络更加注重大容量、流量优化、可靠性和高效运维,并具备向下一代运营商软件定义网络的演进能力。智能骨干解决方案致力于打造最佳商用体验的骨干网,提升运营商网络竞争力。波分复用技术:华为的IP骨干网方案采用了波分复用技术,使得网络管道具有"硬隔离"的特性,提高了网络的安全性和可靠性。带宽保障:华为的IP骨干网方案支持FlexE网络切片技术,实现不同业务流量间的硬隔离,为关键业务提供100%可承诺的带宽保障。时延承诺:华为的IP骨干网方案通过SRv6技术实现了可编程路径、确定性节点、路径及时延,使得网络的时延可以被精确控制,从而提高了网络服务的质量。业务高可靠:华为的IP骨干网方案通过iFIT技术实现了业务质量的可视化,使得网络故障的定位周期从天缩短到分钟,提高了网络运维的效率。网络弹性:华为的IP骨干网方案基于Fabric架构,实现了网络承载层和业务层的解耦,使得网络可以按需扩展,提供大容量、无阻塞的综合服务。面向未来的演进能力:华为的IP骨干网方案具备向下一代运营商软件定义网络的演进能力,使得网络可以适应未来的业务需求和技术发展以上就是华为IP骨干网方案的主要优势,这些优势使得华为的IP骨干网方案在实际应用中表现出优秀的性能和可靠性
-
网络层是OSI(开放系统互联)模型中的第三层,主要负责在源主机和目标主机之间传送数据包。网络层的主要功能是逻辑寻址和路由选择,即确定数据包从源主机到目标主机的最佳路径。这一层最著名的协议就是IP协议,包括IPv4和IPv6。IPv4:IPv4,即互联网协议版本4,是互联网协议(IP)的第四版,也是第一个被广泛使用,构成现今互联网技术的基石的协议。IPv4使用32位(4字节)地址,因此地址空间中大约有43亿个地址。然而,由于地址分配的不均衡以及地址资源的浪费,IPv4地址在2011年就已经分配完毕。IPv4地址由网络号和主机号两部分组成,常用的表示方法有点分十进制表示法。IPv4包头长20字节,包含版本、首部长度、服务类型、总长度、标识符、标志位、片偏移、生存时间、协议、头部校验和、源IP地址和目标IP地址等信息。IPv6:IPv6,即互联网协议版本6,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议。IPv6使用128位(16字节)地址,极大地扩展了地址空间,解决了IPv4地址耗尽的问题。IPv6还改进了IPv4的一些缺点,如安全性、自动配置等。IPv6地址由8组16位的16进制数表示,各组之间用冒号(:)分隔。IPv6包头长40字节,比IPv4包头更加复杂,但提供了更多的功能。IPv6支持即插即用和无状态地址自动配置,使得网络(尤其是局域网)的管理更加方便和快捷。此外,IPv6还增强了组播支持以及对流的支持,这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS)控制提供了良好的网络平台。IPv6中加入了对自动配置的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。总的来说,网络层是互联网通信的关键部分,而IP协议(包括IPv4和IPv6)则是网络层的核心协议。随着网络技术的发展和互联网规模的扩大,IPv6已经逐渐取代IPv4成为主流的网络协议。
-
一、引言当我们谈论互联网时,经常会听到“TCP/IP协议族”或“OSI七层模型”等术语。这些模型和协议是构建和运行互联网的基础。其中,OSI(开放系统互联)七层模型是一个理论框架,用于描述和理解网络通信的复杂过程。本文将深入探讨这七层协议,帮助读者更好地理解它们的工作原理,并通过代码示例展示如何在实际应用中运用这些协议。二、OSI七层模型概述OSI七层模型将网络通信过程划分为七个独立但相互关联的层次。每一层都负责特定的功能,并与相邻的层次进行交互。以下是这七层的简要概述:物理层(Physical Layer):负责传输原始比特流,如电压、电缆、接口等物理特性。 数据链路层(Data Link Layer):处理数据在单个链路上的传输,包括错误检测、物理寻址等。 网络层(Network Layer):负责数据包在网络中的路由和转发,实现不同网络之间的通信。 传输层(Transport Layer):确保数据在源端和目的端之间的可靠传输,包括流量控制、错误恢复等。 会话层(Session Layer):建立、管理和终止会话,负责数据交换的同步。 表示层(Presentation Layer):处理数据的格式和表示,如加密、压缩、编码转换等。 应用层(Application Layer):提供网络服务和应用程序接口,如HTTP、FTP、SMTP等。 三、各层详解与代码实现物理层 物理层负责将数字信号转换为模拟信号进行传输,或者反之。这一层通常由硬件设备(如网卡、路由器、交换机等)实现,不涉及软件编程。因此,在此不再提供代码示例。数据链路层 数据链路层主要负责将数据封装成帧,并通过物理链路进行传输。在此过程中,还需要进行错误检测和处理。常见的数据链路层协议包括以太网(Ethernet)、点对点协议(PPP)等。以下是一个简单的Python代码示例,演示如何使用数据链路层的功能:python import socketimport structdef send_ethernet_frame(dest_mac, src_mac, payload):构建以太网帧头部ethertype = b'\x08\x00' # IPv4header = dest_mac + src_mac + ethertype将负载数据封装成帧frame = header + payload发送以太网帧sock = socket.socket(socket.AF_PACKET, socket.SOCK_RAW)sock.bind(('eth0', 0))sock.send(frame)sock.close() 网络层 网络层负责将数据包从源主机路由到目标主机。它使用IP协议(Internet Protocol)来实现这一功能。在Python中,可以使用socket库来进行网络层的编程。以下是一个简单的示例:python import socketimport structdef send_ip_packet(dest_ip, payload):构建IP头部version = 4header_length = 5ttl = 64protocol = socket.IPPROTO_TCP # TCP协议src_ip = socket.gethostbyname(socket.gethostname()) # 获取本机IP地址packet_length = len(payload)ip_header = struct.pack('!BBHHHBBH4s4s', version, header_length, ttl, protocol, packet_length, src_ip, dest_ip)将负载数据封装成IP数据包packet = ip_header + payload发送IP数据包sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, protocol)sock.sendto(packet, (dest_ip, 0))sock.close() 传输层 传输层负责在源端和目的端之间建立可靠的连接,并确保数据的顺序和完整性。常见的传输层协议包括TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。以下是一个使用TCP协议的Python代码示例:python import socketimport threadingimport timedef server_program(): #启动服务器函数定义部分开始host = socket.gethostname() #获取本地主机名称并赋值给变量host #端口号赋值给变量port 注:变量port用于存储服务器所使用的端口号,便于客户端连接时调用此端口号进行连接通信。同时,该端口号可以根据需要进行修改。但需要注意的是,端口号范围为065535之间的整数,且01023之间的端口号已被系统占用,一般选择1024之后的端口号进行使用。否则可能会出现端口被占用导致无法启动服务器的问题。同时,为了保证服务器的正常运行,需要确保该端口号未被其他程序占用。可以使用netstat -an命令查看当前系统所有网络连接信息以及所占用的端口号情况。如果发现所需使用的端口号已被占用,则需要更换其他端口号进行使用。另外,为了避免出现服务器启动失败的情况,最好在启动服务器之前先关闭该端口号的其他占用程序。可以使用taskkill /f /t /im 程序名称.exe命令关闭指定程序的所有进程。例如,如果要关闭占用端口号为8080的程序的进程,可以使用taskkill /f /t /im 程序名称.exe /pid 进程ID命令进行关闭。其中,“程序名称”为占用端口号的程序的名称,“进程ID”为进程的ID号,可以在任务管理器中查看。另外需要注意的是,在执行该命令时需要以管理员身份运行命令提示符窗口,否则可能会出现权限不足导致无法关闭进程的情况。可以使用鼠标右键点击命令提示符图标并选择“以管理员身份运行”来打开命令提示符窗口。同时,如果需要频繁地启动和关闭服务器来进行测试或演示等操作,则可以使用批处理脚本来执行以上操作。可以将以上命令写入一个文本文件中并将文件后缀名改为“.bat”,然后双击运行该批处理脚本即可快速启动或关闭服务器。例如,可以创建一个名为“start_server.bat”的批处理脚本来启动服务器,其中包含以下命令:python server.py其中,“server.py”为包含服务器程序的Python脚本文件名可以根据需要进行修改。,而客户端则使用变量port所存储的端口号进行连接通信。同时,为了方便客户端进行连接测试或演示等操作,可以在服务器程序中添加一些提示信息或交互功能来提高用户体验性。例如可以在服务器程序中添加以下代码来实现当客户端连接成功时向客户端发送欢迎信息并等待客户端发送消息的功能:connection, address = server_socket.accept() print(f"Connected by {address}") connection.send('Welcome to the server!'.encode()) while True: data = connection.
-
一、引言当我们谈论网络通信,尤其是基于TCP/IP协议的网络通信时,我们经常会听到“序号”、“确认”和“重传”这些术语。这些机制是TCP协议中确保数据可靠传输的关键部分。在本篇博客中,我们将深入了解这些概念,并通过代码实践来进一步理解它们的工作原理。二、TCP的序号机制序号的作用在TCP协议中,每个字节都被赋予一个唯一的序号。这些序号由发送端分配,并在数据包中传输到接收端。序号的主要目的是确保数据包的顺序性和完整性。由于网络中的数据包可能经过不同的路径到达接收端,序号可以帮助接收端按照正确的顺序重新组合数据包,从而还原原始数据流。序号的生成与管理发送端使用一个称为“序列号”的32位计数器来生成序号。每当发送端发送一个数据包时,它都会增加序列号的值。接收端则根据接收到的数据包的序号来判断数据包的顺序,并据此进行数据处理。三、TCP的确认机制确认的作用TCP的确认机制用于确保数据的可靠传输。当接收端成功接收到一个数据包时,它会返回一个确认信号(ACK)给发送端。这个确认信号包含了接收端期望接收的下一个数据包的序号。发送端收到确认信号后,就知道之前发送的数据包已经被成功接收,并可以继续发送后续的数据包。确认的实现方式确认信号是通过TCP数据包中的ACK标志位来实现的。当ACK标志位被设置为1时,表示该数据包是一个确认信号。确认信号中还包含一个32位的确认号字段,用于指示接收端期望接收的下一个数据包的序号。四、TCP的重传机制重传的作用由于网络中存在各种可能导致数据包丢失的因素,如网络拥堵、传输错误等,发送端可能需要重传丢失的数据包。重传机制是TCP协议中确保数据可靠传输的另一个关键部分。当发送端在一个特定的超时时间内未接收到确认信号时,它会认为数据包丢失并重传该数据包。超时时间的计算重传机制的核心是超时时间的计算。发送端使用一个称为“往返时间”(RTT)的估计值来计算超时时间。RTT是发送端发送一个数据包到接收到对应的确认信号所需的时间。发送端根据RTT的估计值和当前的网络状况动态调整超时时间,以适应网络的变化。五、代码实践:模拟TCP的序号、确认和重传机制为了更深入地理解TCP的序号、确认和重传机制,我们可以通过代码来模拟这些过程。以下是一个简单的Python示例,演示了如何模拟TCP的发送端和接收端之间的通信过程:发送端的实现:import socket import time # 定义数据包的大小和超时时间 PACKET_SIZE = 1024 TIMEOUT = 1 # 秒 # 创建socket对象并连接到接收端 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect(('localhost', 8000)) # 发送数据并等待确认信号 for i in range(10): # 发送10个数据包 data = f"Packet {i}" client_socket.send(data.encode()) start_time = time.time() while True: if time.time() - start_time > TIMEOUT: print(f"Timeout: Resending packet {i}") client_socket.send(data.encode()) # 重传数据包 start_time = time.time() # 重置超时计时器 ack = client_socket.recv(PACKET_SIZE).decode() if ack == f"ACK {i}": # 接收到正确的确认信号 print(f"Packet {i} acknowledged") break接收端的实现:```python import socket import threading创建socket对象并监听连接请求server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(('localhost', 8000)) server_socket.listen(1) print("Server is listening...")处理连接请求和数据接收的函数def handle_connection(client_socket): for i in range(10): # 接收10个数据包并发送确认信号 data = client_socket.recv(PACKET_SIZE).decode() print(f"Received packet {i}: {data}") client_socket.send(f"ACK {i}".encode()) # 发送确认信号 client_socket.close()等待客户端连接并创建线程处理连接请求和数据接收client_socket, address = server_socket.accept() print(f"Accepted connection from {address}") client_thread = threading.Thread(target=handle_connection, args=(client_socket,)) client_thread.start()``` 六、总结与展望(续)通过以上的代码实践,我们可以更深入地理解TCP协议中的序号、确认和重传机制是如何工作的。这些机制共同确保了数据的可靠传输,使得基于TCP/IP协议的网络通信成为可能。然而,实际的网络通信环境可能更加复杂和多变,如网络拥堵、丢包率高等情况都可能影响TCP的性能。因此,研究和优化TCP协议的性能仍然是网络领域的一个重要研究方向。未来,随着技术的不断发展,我们可能会看到更多创新的解决方案来提高TCP/IP协议的效率和可靠性,以满足不断增长的网络需求。同时,我们也应该关注网络安全问题,保护我们的数据和隐私不受侵犯。通过对TCP/IP协议的深入学习和实践,我们可以更好地理解网络的工作原理,并为未来的网络发展做出贡献。
-
TCP的可靠性 TCP(传输控制协议)是一种面向连接的协议,它提供了数据的可靠传输。这是通过一系列机制实现的,包括序号、确认和重传。序号:TCP将传输的数据分割为TCP认为最适合发送的数据块,并为每一个数据块赋予一个序号。接收端的TCP将这些数据块重新组合成原始数据流。确认和重传:当接收端成功收到数据,它会返回一个确认信号(ACK)给发送端。如果发送端在一个特定的超时时间内未接收到确认,它会重传数据。流量控制:TCP还使用滑动窗口机制进行流量控制。发送端维护一个窗口来控制未被确认的数据量,从而防止发送端发送过多数据而接收端来不及处理。IP的效率 IP(互联网协议)主要负责在网络层进行数据包的路由和转发。IP协议的高效率主要体现在以下几个方面:无连接:IP协议是无连接的,这意味着每个IP包都独立于其他包进行路由。这种机制使得IP网络可以高效地处理大量并发连接。路由:IP使用路由算法将数据包从源端发送到目的端。这些算法考虑了网络的状态和拓扑,以最有效的路径发送数据包。分包与组装:IP协议可以将大数据包分割成多个小包进行传输,然后在接收端将这些小包重新组装成原始的大数据包。这种分包与组装机制提高了网络的灵活性和效率。
-
一、引言TCP/IP协议是现代互联网的基础,它使得各种设备和系统都可以互相通信和交换信息。TCP/IP代表传输控制协议/互联网协议,它是一个协议族,包含了一系列用于网络通信的协议。这些协议在OSI(开放系统互联)模型的不同层次上工作,共同实现了网络中的数据传输。二、TCP/IP协议族应用层应用层是TCP/IP协议族中的最高层,负责处理应用程序之间的通信。常见的应用层协议包括HTTP、FTP、SMTP等。这些协议定义了数据的格式和传输规则,使得应用程序可以通过网络发送和接收数据。传输层传输层负责在源端和目的端之间传输数据。它主要有两个协议:TCP和UDP。TCP是面向连接的协议,提供了可靠的数据传输服务;而UDP是无连接的协议,不提供可靠性保证,但传输速度较快。网络层网络层负责将数据包从源端发送到目的端。它使用IP协议,将数据包封装成IP数据包,并通过路由选择将数据包发送到正确的目的地。数据链路层数据链路层负责在相邻的两个网络设备之间传输数据。它使用MAC地址来识别设备,并使用以太网协议等将数据封装成帧进行传输。三、TCP编程实践下面是一个简单的TCP服务器和客户端的示例代码,使用Python编写:TCP服务器import socket # 创建socket对象 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定IP地址和端口号 server_socket.bind(('127.0.0.1', 8000)) # 开始监听连接请求 server_socket.listen(1) print('Server is listening...') # 等待客户端连接 client_socket, address = server_socket.accept() print('Accepted connection from', address) # 接收并处理客户端发送的数据 while True: data = client_socket.recv(1024) if not data: break print('Received data:', data.decode()) client_socket.send('Data received.') # 关闭连接 client_socket.close() server_socket.close()TCP客户端import socket # 创建socket对象 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接服务器 client_socket.connect(('127.0.0.1', 8000)) print('Connected to server.') # 发送数据并接收服务器的响应 client_socket.send('Hello, server!') print('Server response:', client_socket.recv(1024).decode()) # 关闭连接 client_socket.close()四、总结与展望TCP/IP协议是现代互联网的基础,它使得各种设备和系统都可以互相通信和交换信息。通过对TCP/IP协议的深入解析和网络编程实践,我们可以更好地理解网络的工作原理,并掌握网络编程的基本技能。未来,随着技术的不断发展,TCP/IP协议也将不断演进和完善,为我们的生活和工作带来更多的便利和可能性。同时,我们也应该关注网络安全问题,保护我们的数据和隐私不受侵犯。
-
用opengauss连接Java时出现 connection to ip refused.Check that the hostname and port are ect and that the postmaster is accepting TCP/IP connections.
-
用opengauss连接java时出现:relation “***”does not exist on dn_6001
-
1. 简介:IoT设备身份认证(IoT Device ID,ID²)是物联网设备接入到系统时的设备身份标识和设备认证系统,通过可信计算和密码技术为物联网系统提供设备认证、传输通道加密、业务数据加密等端到端的可信接入能力。MQTT是一种基于发布/订阅模式的轻量级消息传输协议,专门针对低带宽和不稳定网络环境的物联网应用而设计,可以用极少的代码为联网设备提供实时可靠的消息服务。Eclipse Paho提供许多不同版本的MQTT Client以供不同平台使用,其中Paho Embedded-C是为嵌入式平台提供的MQTT开源实现。本文介绍如何基于Paho-MQTT集成IoT设备认证(ID²),通过身份认证、数据加密等功能,实现物联网数据安全上云。2. 基于阿里云物联网平台使用:本节说明在物联网设备(Linux)中通过Paho-MQTT集成IoT设备身份认证设备端SDK并接入阿里云物联网平台,通过身份认证、通道加密等功能,实现物联网数据安全上云。2.1 创建产品:只有认证方式为ID²的产品才可以使用IoT设备身份认证的服务,接下来我们需要创建一个新的产品并指定认证方式为ID²。前提条件:拥有阿里云物联网平台实例(华东2上海region)。具有IoT设备身份认证的认证授权, 可通过阿里云免费试用,或者购买ID²认证授权。登录产品控制台,在左侧导航栏,选择常规>集成与部署 > IoT设备身份认证,单击组合使用(与阿里云物联网平台)卡片的开始接入按钮。在配置产品页面创建新产品&分配ID²授权,然后单击下一步按钮。请选择新增产品,并输入产品名称。ID²有效期:免费试用、或者付费授权。分配ID²授权数量:请输入ID²授权数量。2.2 选择设备认证算法:IoT设备身份认证支持国际算法(AES-128、AES-192、AES-256)和国密算法(SM1-128、SM2-256、SM4-128),能满足企业不同安全等级的需求。说明:国密算法SM1需要配合ID²安全芯片使用,SM2用于业务数据完整性校验和加密。ID²新增产品中默认选择的设备认证算法是AES-128;如需选择其他设备认证算法,请按如下步骤操作:在产品控制台,选择常规>集成与部署 > IoT设备身份认证,单击独立使用(三方物联网平台)卡片的开始接入按钮。在配置产品页面获取配置信息,然后单击下一步按钮。选择产品:请选择现有产品,在下拉框中勾选产品名称。在获取配置信息页面,单击设备认证算法后的更换按钮,查看支持的密钥类型(如SM4-128),并确认。在产品详情页面,记录下实例ID、ProductKey、ProductSecret。实例ID:阿里云物联网平台的实例标识。企业实例ID是字符串,公共实例ID是符号“-”。ProductKey:设备所属产品的ProductKey。ProductSecret:由IoT设备身份认证颁发的产品密钥,与 ProductKey 成对出现。2.3 集成设备端SDK:下载设备端SDK:执行wget命令获取设备端SDK:wget https://id2-schip-daily.oss-cn-shanghai.aliyuncs.com/static_resources/ID2_Client_SDK.tar执行命令tar -xvf ID2_Client_SDK.tar完成解压,执行命令cd <解压SDK后的目录>。设备端SDK的目录说明见表格内容:目录/文件说明demosID²设备端的示例代码:lpdemo:提供通过MQTT组件使用ID²连接到阿里云物联网平台的演示示例。paho:基于Paho MQTT开源组件的示例代码。external用于存放外部的组件:mqtt - MQTT的组件paho:存放Eclipse Paho embdded-c的源码。includeID²的头文件目录libsID²的静态库make.rules编译规则文件,可配置编译工具链和编译参数make.settings编译配置文件,可配置ID²的密钥类型(如AES、SM4)makefile编译脚本srcID²的源码目录testsID²的测试用例,包括HAL和ID²的测试。toolsID²的本地工具/脚本:ls_lp_demo.sh:与阿里云物联网平台组合使用场景中的设备端演示示例。集成设备端SDK:1. 设备硬件及系统层集成。适配接口说明请参考ID²设备端SDK适配接口,包括:OSA接口适配:实现src/osa/ls_osa.c中的接口。HAL接口适配:实现src/hal/km/demo/ls_hal_km.c中的接口,通过hal_test测试用例验证(成功日志:“HAL KM Test Pass”)。2. 设备连接通道层集成。使用默认的Paho SDK,请跳过此步骤。下载Paho Embedded-C SDK,并且拷贝其中的源码到external/mqtt/paho/paho_embedded_c目录git clone cid:link_153. 设备应用层集成。设备接入域名(mqtt_host)、MQTT服务器端口的配置:设备接入域名:${YourProductKey}.itls.cn-shanghai.aliyuncs.com,其中${YourProductKey}为IoT设备身份认证产品的ProductKeyMQTT服务器端口:1883生成阿里云物联网平台MQTT Connect的参数:MQTT客户端的标识 - ClientId:# 使用物联网平台的企业实例deviceId+"|securemode=8,signmethod=hmacsha1,timestamp=2524608000000,authtype=id2[,instanceId=xxx]|"deviceId:${deviceName} + “&” + ${productKey}instanceId:填写物联网平台的企业实例ID,如使用公共实例(短横线‘"-"),此字段忽略掉MQTT客户端的用户名 - UserName:# 由设备标识和产品标识组合而成${deviceName} + “&” + ${productKey}MQTT客户端的密码 - Password:# 64字节长度的全0字符串"0000000000..000"适配Paho的网络抽象接口:更新Network的结构体,且重新实现Network的接口,参考实现如下:#include "hal_itls.h"typedef struct Network { char *product_key; char *product_secret; uintptr_t handle; int my_socket; int (*mqttread) (struct Network*, unsigned char*, int, int); int (*mqttwrite) (struct Network*, unsigned char*, int, int);} Network;int mqtt_itls_read(Network* n, unsigned char* buffer, int len, int timeout_ms) { return hal_itls_read(n->handle, buffer, len, timeout_ms);}int mqtt_itls_write(Network* n, unsigned char* buffer, int len, int timeout_ms){ return hal_itls_write(n->handle, buffer, len, timeout_ms);}void NetworkSetConfig(Network* n, char *product_key, char *product_secret) { n->product_key = product_key; n->product_secret = product_secret;}void NetworkInit(Network* n) { n->handle = 0; n->mqttread = mqtt_itls_read; n->mqttwrite = mqtt_itls_write;}int NetworkConnect(Network* n, char* addr, int port) { n->handle = hal_itls_establish(addr, port, n->product_key, n->product_secret); if (n->handle == 0) { return -1; } return 0;}void NetworkDisconnect(Network* n) { hal_itls_destroy(n->handle);}4. 设备端SDK的编译。在ID² SDK的根目录,执行命令vi ./make.settings打开文件,修改如下参数:配置CONFIG_LS_ID2_KEY_TYPE,选择同ID²产品选择的认证算法保持相同配置CONFIG_LS_ID2_MQTT_NAME,选择使用Paho执行命令 vi demos/lpdemo/paho/mqtt_id2_demo.c打开文件,配置mqtt_id2_demo.c示例中的参数:如选择使用Link SDK时,执行命令 vi demos/mqtt/lk/mqtt_id2_demo.c打开文件:ProductKey:ID²产品的ProductKey。ProductSecret:ID²产品的ProductSecret。DeviceName:自定义,同一个产品下唯一。LP_Instance_ID:填写在ID²产品详情中获得的企业实例ID字符串;如果是公共实例,填写NULL执行命令“make clean & make plat=xxx”进行编译Linux x86_64默认使用系统中的GCC作为编译工具,且默认指定“plat=x86_64”参数如要编译其他架构,如armhf,在make.rules中配置编译工具,运行编译命令“make clean & make plat=armhf”2.4 安全接入:在完成设备端集成的基础上,运行设备应用, 或者演示示例接入阿里云物联网平台。1. 使用演示示例:在Linux x86_64设备上下载ID² SDK,执行命令vi ./make.settings打开文件。配置CONFIG_LS_ID2_KEY_TYPE,选择同ID²产品选择的认证算法保持相同修改CONFIG_LS_ID2_MQTT_NAME的值为Paho执行命令make clean & make进行编译。编辑vi tools/ls_lp_demo.sh填写如下参数:ProductKey:ID²产品的ProductKey。ProductSecret:ID²产品的ProductSecret。DeviceName:自定义,同一个产品下唯一。InstanceId:填写在ID²产品详情中获得的企业实例ID字符串,如公共实例ID:“-”。执行命令./tools/ls_lp_demo.sh运行设备端演示示例,查看设备端打印的日志。在日志中,可以看到此设备上的ID² ID(“ 000FF...”)基于ID²进行设备和LP平台之间的双向认证(“Verify iTLS Server AuthCode OK”),并建立设备和LP平台的TLS安全传输通道(ID²-iTLS);MQTT消息开始基于TLS通道进行加密传输(“Start to use itls to encrypt message buffer”)2. 查看设备状态:登录产品控制台,在左侧导航栏,选择资产>设备,查看设备状态为正常,安全状态为安全。3. 基于自建的物联网平台使用:本节说明在物联网应用中集成ID²云端SDK、在物联网设备(Linux)中通过Paho-MQTT集成ID²设备端SDK,通过身份认证、业务数据加密等功能,实现物联网数据安全上云。3.1 创建产品:本章节描述了如何在IoT设备身份认证控制台创建产品并分配授权额度,包括:创建产品分配授权额度前提条件:具有IoT设备身份认证的认证授权, 可通过阿里云免费试用,或者购买ID²认证授权。1. 登录产品控制台,在左侧导航栏,选择常规>集成与部署 > IoT设备身份认证,单击独立使用(三方物联网平台)卡片的开始接入按钮。2. 在配置产品页面创建新产品&分配ID²授权,然后单击下一步按钮。选择产品:请选择创建新产品,并输入产品名称。ID²有效期:免费试用、或者付费授权。分配ID²授权数量:请输入ID²授权数量。3.2 选择设备认证算法:IoT设备身份认证支持国际算法(AES-128、AES-192、AES-256)和国密算法(SM1-128、SM2-256、SM4-128),能满足企业不同安全等级的需求。说明:国密算法SM1需要配合ID²安全芯片使用,SM2用于业务数据完整性校验和加密。ID²新增产品中默认选择的设备认证算法是AES-128;如需选择其他设备认证算法,请按如下步骤操作:1. 在查看配置信息页面,选择设备认证算法为SM4-128,单击提交按钮。2. 在查看配置信息页面,您需要记录下ProductKey、ProductSecret。ProductKey:设备所属产品的ProductKey。ProductSecret:由IoT设备身份认证颁发的产品密钥,与 ProductKey 成对出现。3. 单击下一步按钮进入集成云端SDK页面。3.3 集成云端SDK: 阿里云账号的AccessKey:AccessKey是调用阿里云API的身份凭证,请参见获取AccessKey。需要注意的是AccessKey的归属账号必须与创建产品时的账号保持一致。下载云端SDK:1. 执行wget命令获取云端SDK:wget https://id2-schip-daily.oss-cn-shanghai.aliyuncs.com/static_resources/ID2_Server_SDK.tar2. 在云端环境执行命令tar -xvf ID2_Server_SDK.tar 完成解压,执行命令cd <解压SDK后的目录>。设备端SDK的目录说明见表格内容:目录/文件说明demosID²云端的示例代码libID²云端的Jar包集成云端SDK:1. 添加Maven项目依赖,引入阿里云Java SDK公共包。<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.5.6</version></dependency>2. 导入云端SDK中的lib/aliyun-java-sdk-id2-1.1.4.jar到项目工程中,初始化云端SDK。public static String ACCESS_KEY = null;public static String ACCESS_SECRET = null;public static String REGION_ID = "cn-shanghai";public static String END_POINT = "id2." + REGION_ID + ".aliyuncs.com";// Load ACCESS_KEY and ACCESS_SECRET From Config FileloadConfigProperties("xxx.conf");IClientProfile profile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY, ACCESS_SECRET);DefaultProfile.addEndpoint(REGION_ID, PRODUCT_CODE, END_POINT);client = new DefaultAcsClient(profile);3. 发起调用,ID²云端SDK为每个API封装了一个类,命名为${API名称}+"Request",如VerifyRequest,用于API的调用请求,ID²云端API列表请参考ID²云端API手册。ID²空发OtpGetId2Request request = new OtpGetId2Request();request.setDeviceAuthCode(authCode);request.setApiVersion(1.1.2);OtpGetId2Response response = client.getAcsResponse(request);获取ID²认证挑战字GetServerRandomRequest request = new GetServerRandomRequest();request.setId2(id2Id);request.setApiVersion(1.1.2);GetServerRandomResponse response = client.getAcsResponse(request);System.out.println("GetServerRadom requestId:" + response.getRequestId());ID²设备认证和业务密钥加密VerifyAndEncryptRequest request = new VerifyAndEncryptRequest();request.setApiVersion(1.1.2);request.setProductKey(productKey);request.setId2(id2Id);request.setAuthCode(authCode);request.setData(keyInfo);VerifyAndEncryptResponse response = client.getAcsResponse(request);System.out.println("VerifyAndEncrypt requestId:" + response.getRequestId());4. 应用集成ID²云端SDK的示例代码,请参考demos/ID2SPDemo3.4 集成设备端SDK:下载设备端SDK:1. 执行wget命令获取设备端SDK:wget https://id2-schip-daily.oss-cn-shanghai.aliyuncs.com/static_resources/ID2_Client_SDK.tar2. 执行命令tar -xvf ID2_Client_SDK.tar完成解压,执行命令cd <解压SDK后的目录>。设备端SDK的目录说明见表格内容:目录/文件说明demosID²设备端的示例代码:spdemo:提供独立使用ID²的演示示例external用于存放外部的组件:mqtt - MQTT的组件paho:存放Eclipse Paho embdded-c的源码。includeID²的头文件目录libsID²的静态库make.rules编译规则文件,可配置编译工具链和编译参数make.settings编译配置文件,可配置ID²的密钥类型(如AES、SM4)makefile编译脚本srcID²的源码目录testsID²的测试用例,包括HAL和ID²的测试。toolsID²的本地工具/脚本:ls_sp_demo.sh:独立使用场景中的设备端演示示例集成设备端SDK:1. 设备硬件及系统层集成,详情请参考ID²设备端SDK适配接口OSA接口适配:实现src/osa/ls_osa.c中的接口。HAL接口适配:实现src/hal/km/demo/ls_hal_km.c中的接口,通过hal_test测试用例验证(成功日志: “HAL KM Test Pass”)。2. 设备应用层集成,详情请参考ID²设备端API手册设备应用首先调用ID²的初始化函数,完成设备端SDK的初始化。{ int ret; ret = id2_client_init(); if (ret != IROT_SUCCESS) { ls_osa_print("id2 client init fail, %d\n", ret); return -1; }}获取ID²设备端的烧录状态:如ID²已烧录(is_prov == true),退出ID²空发流程{ int ret = 0; bool is_prov = false; ret = id2_client_get_prov_stat(&is_prov); if (ret != IROT_SUCCESS) { ls_osa_print("id2 client get prov stat fail, %d\n", ret); return -1; } }生成ID²设备端的空发认证码。{ int ret = 0; uint8_t auth_code[ID2_MAX_AUTH_CODE_LEN] = {0}; uint32_t auth_code_len = ID2_MAX_AUTH_CODE_LEN; ret = id2_client_get_otp_auth_code( (uint8_t *)product_secret, (int)strlen(product_secret), auth_code, &auth_code_len); if (ret != IROT_SUCCESS) { ls_osa_print("id2_client_get_otp_auth_code fail, %d\n", ret); return -1; }}ID²空发的网络请求和响应。authCode:ID²空发认证码的Base64编码otpData:ID²云端下发的空发数据(Base64格式)# ID²空发请求:{commandId:xxx, authCode: xxx}# ID2空发响应:{commandId:xxx, otpData: xxx}存储ID²密钥到设备安全存储区。{ int ret = 0; ret = id2_client_load_otp_data(otp_data, otp_len); if (ret != IROT_SUCCESS) { ls_osa_print("id2 load otp data fail, %d\n", ret); return -1; }}获取设备端的ID² ID。{ int ret = 0; uint8_t id2_id[ID2_ID_MAX_LEN + 1] = {0}; uint32_t id2_id_len = ID2_ID_MAX_LEN; ret = id2_client_get_id(id2_id, &id2_id_len); if (ret != IROT_SUCCESS) { ls_osa_print("id2 client get id fail, %d\n", ret); return -1; }}ID²认证挑战字的网络请求和响应。# ID²认证挑战字的请求:{commandId:xxx, Id2Id: xxx}# ID2认证挑战字的响应:{commandId:xxx, challenge: xxx}获取设备端的ID²认证码。{ int ret = 0; uint8_t auth_code[ID2_MAX_AUTH_CODE_LEN] = {0}; uint32_t auth_code_len = ID2_MAX_AUTH_CODE_LEN; ret = id2_client_get_challenge_auth_code( challenge, NULL, 0, auth_code, &auth_code_len); if (ret != IROT_SUCCESS) { ls_osa_print("id2 client get challenge auth code fail, %d\n", ret); return -1; }}设备端认证和数据加密的网络请求和响应。cipherData:ID²云端下发的加密数据# ID²设备认证和数据加密的请求:{commandId:xxx, productKey:xxx, Id2Id:xxx, authCode:xxx}# ID2设备认证和数据加密的响应:{commandId:xxx, cipherData: xxx}解密ID²云端加密下发的数据。{ int ret = 0; ret = id2_client_decrypt(cipher_data, cipher_len, cipher_data, &cipher_len); if (ret != IROT_SUCCESS) { ls_osa_print("id2 client decrypt fail\n"); return -1; }}应用集成ID²设备SDK的示例代码,请参考demos/spdemo3. 设备端SDK的编译:在ID² SDK的根目录,执行命令vi ./make.settings打开文件, 修改CONFIG_LS_ID2_KEY_TYPE的值同ID²产品选择的认证算法保持相同执行命令“make clean & make plat=xxx”进行编译Linux x86_64默认使用系统中的GCC作为编译工具,且默认指定“plat=x86_64”参数如要编译其他架构,如armhf,在make.rules中配置编译工具,运行编译命令“make clean & make plat=armhf”3.5 业务数据加密:在完成设备端集成的基础上,运行设备应用, 或者使用演示示例,进行ID²认证和加密,以及业务数据加密的调试。1. 使用演示示例:部署EMQX物联网平台,详情参见EMQX安装和部署本节描述在Ubuntu 22.04上通过Docker部署EMQX物联网平台的示例安装和启动Docker工具:# Install Dockercurl -fsSL get.docker.com -o get-docker.shsudo sh get-docker.sh --mirror Aliyun# Start Dockersudo systemctl enable dockersudo systemctl start docker# Get Docker Versiondocker -v使用Docker安装EMQX物联网平台:# Get emqx-5.1.3 docker imagedocker pull emqx/emqx:5.1.3# Start docker emqx instancedocker run -d --name emqx -p 1883:1883 emqx/emqx:5.1.3# Get docker instance infodocker ps部署云端演示示例,在ID²云端SDK根目录,配置vi demos/ID2SPMessage/Id2SpDemo.conf文件中的AccessKey和AccessSecret信息。执行命令cd demos/ID2SPMessage,执行命令java -jar Id2SpDemo.jar启动云端演示示例。在ID²设备端SDK目录,执行命令vi tools/ls_sp_demo.sh填写如下参数:HostAddr:云端演示示例的IP地址,localhost代表本机网络。ProductKey:ID²产品的ProductKey。ProductSecret:ID²产品的ProductSecret。PublishData:设备端应用上报的业务数据,建议不超过1024字节。执行命令./tools/ls_sp_demo.sh运行设备端演示示例,查看设备端打印的日志。在设备端日志中,可以看到完成ID²的设备认证,以及通过ID²加密下发SP Key Info;设备端通过ID²设备端接口解密后,获得明文的Key ID和Data在设备端日志中,可看到由SPKey加密下发的业务数据(“SP Server Subscribed Cipher Data”);通过在调用SPKey解密后,可得到明文的下行业务数据(“SP_Server_Hello”)在云端查看打印的日志。可看到由SPKey加密的业务数据("Device Published Cipher Data")使用SPKey解密后,可得到正确的上行业务数据(“SP_Client_Hello”)2. 查看设备状态:登录产品控制台,在左侧导航栏,选择资产>设备,查看设备状态为正常,安全状态为安全。3. 延申阅读:IoT设备身份认证产品试用,请查看IoT设备身份认证免费试用常见问题以及处理方案,请查看常见问题。使用虚拟机模拟物联网设备,请查看最佳实践。在实际业务环境中使用ID²的最佳实践,请查看最佳实践。在Android、RTOS设备中使用IoT设备身份认证,请查看最佳实践。IoT设备身份认证的计量计费规则说明,请查看计费说明。
-
采用按照接口来分的 vlan,以及不同vlan之间使用 vlanif 配置进行互相通信 整个结构如下: 如图可见,这是在交换机LW7中添加了vlan2 的ip地址(也就是默认网关地址),相应的在LW5中也添加了vlan4 的默认网关地址 此时PC4和PC1能够互相通信,LW7中的路由表: 但当一旦删除LW7中的vlan2默认网关地址时,双方便不能再进行通信,LW7路由表中也少了vlan2的部分。 所以这是为什么呢?初学小白有点不太明白
-
TCP 协议 (传输控制协议) TCP 协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,再传输数据。它提供了两台计算机之间的可靠无差错的数据传输。在 TCP 连接中必须要明确客户端与服务器,由客户端向服务器发送连接请求,每次连接的创建都需要经过 “三次握手” 三次握手:TCP 协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠 第一次握手:客户端向服务器发出连接请求,等待服务器确认 第二次握手:服务器向客户端回送一个响应,通知客户端收到连接请求 第三次握手:客户端再次向服务器发送确认信息,确认连接 完成三次握手,连接建立后,客户端和服务器可以开始数据传输,由于这种面向连接的特性。TCP 协议可以保证传输数据的安全,所以应用十分广泛,比如:文件上传、文件下载、浏览页面 三次握手示意图 四次挥手示意图 发送端 Demo package tcp; import java.io.*; import java.net.InetAddress; import java.net.Socket; /** * TCP 发送数据步骤 * 1.创建客户端socket对象 * 2.获取输出流,写数据 * 3.释放资源 */ public class ClientDemo { public static void main(String[] args) throws IOException { // 创建客户端socket对象 // 创建流套接字并将其连接到指定IP地址的指定端口号 Socket socket = new Socket(InetAddress.getByName("192.168.31.162"),9002); // 获取输出流,写数据 System.out.println("input you data"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 封装输出流对象 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); String line ; //获取输出流,写数据; while ((line = br.readLine()) != null){ // 获取输出流对象 bw.write(line); bw.newLine(); bw.flush(); } // 释放资源 socket.close(); } } 接收端 Demo package tcp; import java.io.*; import java.net.Socket; import java.net.ServerSocket; /** * TCP 接收数据步骤 * 1.创建服务端socket对象 * 2.监听客户端连接,返回一个socket对象 * 3.获取输入流,读数据,并把数据显示在控制台 * 4.释放资源 */ public class ServerDemo { public static void main(String[] args) throws IOException { // 创建服务端socket对象 ServerSocket serverSocket = new ServerSocket(9002); // 监听客户端连接,返回一个socket对象 Socket socket = serverSocket.accept(); // 获取输入流,读数据,并把数据显示在控制台 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line; while ((line = br.readLine()) != null){ System.out.println(line); } // 释放资源 serverSocket.close(); } } run 控制台 注:启动客户端服务必须先启动服务端服务,否则会抛出异常 转自链接:https://learnku.com/articles/68081
-
Easy IP特性与配置实验1.1【实验目的】• 掌握Easy IP的原理• 掌握Easy IP在企业网络中的应用• 掌握Easy IP的配置方式• 掌握PPoE客户端:拨号接口的配置方法• 掌握PPoE客户端认证的配置1.2【实验环境】华为ENSP模拟器实验拓扑图如下图所示。1.3【实验过程及实验结果】1.地址配置IP地址规划表设备名称设备接口IP网关PC1E0/0/110.0.0.10/2410.0.0.1/24PC2E0/0/1202.108.20.20/24202.108.20.1/24AR1G0/0/010.0.0.1/24G0/0/1202.108.0.1/30AR2G0/0/0202.108.0.2/30G0/0/1202.108.20.1/242.IP编址与基本配置给所有路由器配置IP地址信息。AR1<Huawei>SYS[Huawei]sys AR1[AR1]int G0/0/0[AR1-GigabitEthernet0/0/0]ip add 10.0.0.1 24[AR1-GigabitEthernet0/0/0]qAR2<Huawei>SYS[Huawei]sys AR2[AR2-GigabitEthernet0/0/0]int G0/0/1[AR2-GigabitEthernet0/0/1]ip add 202.108.20.1 24[AR2-GigabitEthernet0/0/1]q3.在设备中添加PPPoE配置AR2(PPPoE服务器端)创建一个名为Pool_AR的地址池,在地址池是图中,配置要分配给企业使用(AR1)的IP地址和网关,接着创建虚拟接口模板10, 在虚拟接口模板视图中指定,AR2路由器使用的IP地址,并调用了前面创建的地址池Pool_AR ,最后在连接AR1路由器的物理以太网接口上,启用PPPoE服务器功能,并绑定虚拟模板10[AR2]ip pool Pool_AR[AR2-ip-pool-Pool_AR]net 202.108.0.0 mask 30[AR2-ip-pool-Pool_AR]gateway-list 202.108.0.2[AR2-ip-pool-Pool_AR]q[AR2][AR2]int Virtual-Template 10[AR2-Virtual-Template10]ip add 202.108.0.2 30[AR2-Virtual-Template10]remote address pool Pool_AR[AR2-Virtual-Template10]q[AR2][AR2]int g0/0/0[AR2-GigabitEthernet0/0/0]pppoe-server bind virtual-template 10[AR2-GigabitEthernet0/0/0]qAR1(PPPoE客户端)在路由器上先创建一个拨号接口10, 并在这个接口下配置三条命令,分别指定拨号用户、拨号绑定关系和IP地址获得手段,接着进入连接AR2路由器的物理以太网接口,启用PPPoE客户端功能,并指定拨号绑定关系 [AR1]int Dialer 10[AR1-Dialer10]dialer user AR_User[AR1-Dialer10]dialer bundle 10[AR1-Dialer10]ip add ppp-negotiate [AR1-Dialer10]q[AR1][AR1]int g0/0/1[AR1-GigabitEthernet0/0/1]pppoe-client dial-bundle-number 10[AR1-GigabitEthernet0/0/1]q[AR1]配置本端到PPPoE服务器的缺省静态路由。[AR1]ip route-static 0.0.0.0 0.0.0.0 Dialer 10配置完成后,观察AR1和AR2的PPPoE配置情况(1)AR1查看从AR2获取的IP地址(1) 在两端设备上分别查看PPPoE会话AR1从以上输出可以看出PPPoE会话已建立,状态为UP。 在一个PPPoE会话中,可以出现以下状态标识。●IDLE:表示当前PPPoE会话状态为空闲,也就是在按需拨号的环境中,路由器还未发起拨号;●PADI:表示当前PPPoE会话处于我们5.4.1节中介绍的发现阶段,并且已经发送了PADI消息;●PADR:表示当前PPOE会话处于我们5.4.1节中介绍的发现阶段,并且已经发送了PADR消息;●UP:表示当前PPPoE会话已建立完成。AR2从命令的输出内容中 我们可以看出与PPPoE客户端相对应的内容, 比如MAC地址信息和状态(UP)信息 4.在设备AR1中添加Easy IPAR1[AR1]acl 2000[AR1-acl-basic-2000]rule permit source 10.0.0.0 0.0.0.255[AR1-acl-basic-2000]q[AR1][AR1]int Dialer 10[AR1-Dialer10]nat outbound 2000[AR1-Dialer10]q(1) 配置完成后,观察AR1的出向NAPT从上面的输出内容中可以看出接口Dialer 10上启用了Easy IP, 并且路由器会把ACL 2000中指定的源IP地址转化为 202.108.0.1(2) 所有设备通讯测试PC1->PC2外网端口AR1的G0/0/1接口抓包情况从上面的抓包信息中,看到了源IP地址202.108.0.1发来的ICMP请求以及路由器AR2回应的ICMP应答,并没有PC上配置的私有IP地址10.0.0.10,这表示路由器AR1已经通过Dialer 10接口配置的出向NAT命令,成功的为私有IP地址执行了NAT转换,将其转化为路由器AR2分配的公网IP地址
-
Telnet AAA实验1.1【实验目的】1、 理解Telnet aaa的运作原理。2、 掌握Telnet aaa的基本配置方法。1.2【实验环境】ENSP实验拓扑图如下图所示。1.3【实验过程】1.3.1路由器R1上的配置进入端口,配置IP地址[R1]interface e0/0/0[R1-Ethernet0/0/0]ip address 192.168.24.1 24[R1-Ethernet0/0/0]interface g0/0/0[R1-GigabitEthernet0/0/0]ip address 192.168.27.1 24[R1-GigabitEthernet0/0/0]interface e0/0/1[R1-Ethernet0/0/1]ip address 192.168.25.1 24[R1-Ethernet0/0/1]q配置最短路径优先协议ospf[R1]ospf 1[R1-ospf-1]area 0[R1-ospf-1-area-0.0.0.0]network 192.168.24.0 0.0.0.255[R1-ospf-1-area-0.0.0.0]network 192.168.25.0 0.0.0.255[R1-ospf-1-area-0.0.0.0]network 192.168.27.0 0.0.0.255[R1-ospf-1-area-0.0.0.0]q[R1-ospf-1]q配置远程登录的用户名和密码[R1]user-interface vty 0 4[R1-ui-vty0-4]authentication-mode aaa[R1-ui-vty0-4]aaa[R1-aaa]local-user jc1 password cipher 201802010320[R1-aaa]local-user jc1 service-type telnet[R1-aaa]local-user jc1 privilege level 3[R1-aaa]q1.3.2路由器R2上的配置进入端口配置IP地址[R2]interface e0/0/0[R2-Ethernet0/0/0]ip address 192.168.24.2 24[R2-Ethernet0/0/0]interface g0/0/0[R2-GigabitEthernet0/0/0]ip address 192.168.28.1 24[R2-GigabitEthernet0/0/0]interface e0/0/1[R2-Ethernet0/0/1]ip address 192.168.26.1 24[R2-Ethernet0/0/1]q配置最短路径优先协议ospf[R2]ospf 1[R2-ospf-1]area 0[R2-ospf-1-area-0.0.0.0]network 192.168.24.0 0.0.0.255[R2-ospf-1-area-0.0.0.0]network 192.168.26.0 0.0.0.255[R2-ospf-1-area-0.0.0.0]network 192.168.28.0 0.0.0.255[R2-ospf-1-area-0.0.0.0]q[R2-ospf-1]q配置远程登录的账户和密码[R2]user-interface vty 0 4[R2-ui-vty0-4]authentication-mode aaa[R2-ui-vty0-4]aaa[R2-aaa]local-user jc2 password cipher 201802010320[R2-aaa]local-user jc2 service-type telnet[R2-aaa]local-user jc2 privilege level 3[R2-aaa]q[R2]1.3.3交换机LSW1上的配置配置IP地址[S1]interface vlanif 1[S1-Vlanif1]ip address 192.168.25.2 24[S1-Vlanif1]q配置最短路径优先协议ospf[S1]ospf[S1-ospf-1]area 0[S1-ospf-1-area-0.0.0.0]network 192.168.25.0 0.0.0.255[S1-ospf-1-area-0.0.0.0]q[S1-ospf-1]q配置远程登录的账户和密码[S1]user-interface vty 0 4[S1-ui-vty0-4]authentication-mode aaa[S1-ui-vty0-4]aaa[S1-aaa]local-user jc3 password cipher 201802010320[S1-aaa]local-user jc3 service-type telnet[S1-aaa]local-user jc3 privilege level 3[S1-aaa]q[S1]12.3.4交换机LSW2上的配置配置IP地址[S2]interface vlanif 1[S2-Vlanif1]ip address 192.168.26.2 24[S2-Vlanif1]q配置最短路径优先协议ospf[S2]ospf[S2-ospf-1]area 0[S2-ospf-1-area-0.0.0.0]network 192.168.26.0 0.0.0.255[S2-ospf-1-area-0.0.0.0]q[S2-ospf-1]q配置远程登录的账户和密码[S2]user-interface vty 0 4[S2-ui-vty0-4]authentication-mode aaa[S2-ui-vty0-4]aaa[S2-aaa]local-user jc4 password cipher 201802010320[S2-aaa]local-user jc4 service-type telnet[S2-aaa]local-user jc4 privilege level 3[S2-aaa]q1.4【实验结果】在PC1中用R1远程登录S2在PC2中用LSW1远程登录R2在PC2中用LSW1远程登录R21.5【实验总结】TELNET协议是Internet远程登录服务的标准协议和主要方式,是TCP/IP协议族中的一员。它为用户提供了在本地计算机上完成远程主机工作的能力,主要用途就是使用远程计算机上所拥有的本地计算机没有的信息资源,是常用的远程控制Web服务器的方法。一、用途Telnet是Internet远程登录服务的标准协议和主要方式,最初由ARPANET开发,现在主要用于Internet会话,它的基本功能是允许用户登录进入远程主机系统。Telnet可以让我们坐在自己的计算机前通过Internet网络登录到另一台远程计算机上,这台计算机可以是在隔壁的房间里,也可以是在地球的另一端。当登录上远程计算机后,本地计算机就等同于远程计算机的一个终端,我们可以用自己的计算机直接操纵远程计算机,享受远程计算机本地终端同样的操作权限。Telnet的主要用途就是使用远程计算机上所拥有的本地计算机没有的信息资源,如果远程的主要目的是在本地计算机与远程计算机之间传递文件,那么相比而言使用FTP会更加快捷有效。二、交互过程当我们使用Telnet登录进入远程计算机系统时,事实上启动了两个程序:一个是Telnet客户程序,运行在本地主机上;另一个是Telnet服务器程序,它运行在要登录的远程计算机上。本地主机上的Telnet客户程序主要完成以下功能:建立与远程服务器的TCP联接。从键盘上接收本地输入的字符。将输入的字符串变成标准格式并传送给远程服务器。从远程服务器接收输出的信息。将该信息显示在本地主机屏幕上。三、安全隐患虽然Telnet较为简单实用也很方便,但是在格外注重安全的现代网络技术中,Telnet并不被重用。原因在于Telnet是一个明文传送协议,它将用户的所有内容,包括用户名和密码都明文在互联网上传送,具有一定的安全隐患,因此许多服务器都会选择禁用Telnet服务。如果我们要使用Telnet的远程登录,使用前应在远端服务器上检查并设置允许Telnet服务的功能。
推荐直播
-
全面解析华为云EI-API服务:理论基础与实践应用指南
2024/11/29 周五 18:20-20:20
Alex 华为云学堂技术讲师
本期直播给大家带来的是理论与实践结合的华为云EI-API的服务介绍。从“主要功能,应用场景,实践案例,调用流程”四个维度来深入解析“语音交互API,文字识别API,自然语言处理API,图像识别API及图像搜索API”五大场景下API服务,同时结合实验,来加深开发者对API服务理解。
去报名 -
企业员工、应届毕业生、在读研究生共探项目实践
2024/12/02 周一 19:00-21:00
姚圣伟 在职软件工程师 昇腾社区优秀开发者 华为云云享专家 HCDG天津地区发起人
大神带你一键了解和掌握LeakyReLU自定义算子在ONNX网络中应用和优化技巧,在线分享如何入门,以及在工作中如何结合实际项目进行学习
即将直播 -
昇腾云服务ModelArts深度解析:理论基础与实践应用指南
2024/12/03 周二 14:30-16:30
Alex 华为云学堂技术讲师
如何快速创建和部署模型,管理全周期AI工作流呢?本期直播聚焦华为昇腾云服务ModelArts一站式AI开发平台功能介绍,同时结合基于ModelArts 的实践性实验,帮助开发者从理论到实验更好地理解和使用ModelArts。
去报名
热门标签