1.构建网络拓扑
在栏底终端设备添加PC,网络设备添加集线器,让软件自动连接PC至集线器,完成简单的构建网络拓扑
2.配置网络设备
点击主机设置IP地址为192.168.0.1/2/3,回车自动填写默认子网掩码
3.跟踪数据包
上方添加简单的PDU,点击从计算机0发送到计算机1
4.查看数据包
使用仿真模式查看数据包
通过一个简单流程基本了解Packet Tracer的基本使用
1.先构建网络拓扑,分别设置IP地址
2.仿真模式,仅选http协议,打开计算机中的浏览器,输入服务器IP地址
回车,浏览器并无具体内容,播放,看到网页内容
一台主机访问另一台web服务器
1.构建网络拓扑设置IP地址
2.仿真,计算机0发送数据包至计算机1
再发送一次包
不用再请求MAC地址,直接发送成功
可以用命令清除ARP高速缓存表
再次发送包,又再次调用ARP的广播请求
验证MAC地址与IP地址的关系,以及ARP协议的作用
1.构建网络拓扑,配置IP地址
实际上是总线型的结构
之后(实时模式下)互相发送一个数据包并删除记录,避免ARP协议后面影响观察
2.仿真模式,从计算机0发送数据包至计算机1
可以从过程中看到集线器的广播特性
删除记录,从计算机0和计算机1均发送数据包至计算机2
在集线器产生碰撞,并将碰撞信号广播至所有主机
通过集线器观察总线型以太网的特性(广播,竞争总线,冲突等)
1.先构建网络拓扑,设置IP地址
为防止ARP影响观察,先在各以太网各主机之间发送数据包,最后删除记录
2.仿真模式, 仅选择ICMP协议
从计算机0向计算机2发送ICMP报文,发送后计算机2会给0回一个响应
而计算机1从头至尾都会拒绝接收报文/响应
从计算机6向计算机8发送ICMP报文
可以看到,交换机会明确地转发信息,而不像集线器一样广播。
3.连接两个集线器/交换机
从计算机0向计算机2发送ICMP询问请求,2会给0发送ICMP响应
可以看出,广播会通过集线器的连接继续传播,计算机1345拒绝接收请求和响应。
在交换式的以太网上进行同样的操作
同样的,交换机没有广播,而是确切地找到了目标
从计算机0发送包至计算机2,同时从计算机4发送包至计算机5
碰撞的信号会传遍整个网络
再在交换式的以太网中进行同样的操作
交换机依旧确切找到目标
那么如果在交换式的以太网中发送广播会怎样呢
从计算机6发送复杂的PDU
全部转发出来
再来看交换机可以隔离碰撞域/冲突域的情况,重新构建网络拓扑
从计算机0发送包至计算机2,交换机在经过学习之后不会再转发至集线器2
这说明交换机可以隔离碰撞域
通过集线式和交换式的以太网的对比观察集线器和交换机的区别,并探究交换机隔离碰撞域/冲突域的特性。
1.先构建网络拓扑,配置IP地址,通过放置注释表注上IP地址和MAC地址
2.仿真模式,仅选择ARP和ICMP协议
从计算机1发送简单的PDU至计算机2
在经过ARP的广播,交换机内部MAC地址表中添加了三个端口所对应的三台主机的MAC地址(此即交换机的自学习过程),ARP广播响应回到计算机1,随即发出ICMP的包,直接转发至计算机2。
3.重新构建网络拓扑,配置IP地址,做好注释
4.实时模式下,从计算机8向计算机9发送简单PDU,消除ARP广播请求影响,并让交换机学习右端两个主机对应4号端口。
5.删除记录,仿真模式,再次发送简单PDU
交换机并没有转发右端的广播
进入交换机命令行,可以通过show mac-a命令查看MAC地址表,注意老化问题,也可以通过clear mac-a命令清除MAC地址表。
再次发送简单PDU
交换机广播了信息。
通过两个有不同特点的网络拓扑探究了交换机自学习的特性。
1.先构建网络拓扑
右上角的端口是橙色的没有在正常工作,是因为交换机的生成树协议STP避免了逻辑上的环路,虽然物理上是环路。
添加两台主机,配置IP地址
分别用计算机0和计算机1ping命令对方
说明两台计算机可以通过下面的通路通信
若交换机7故障
再ping一次
可以通路,因为生成树协议发现故障,把交换机5的端口1打开了
(这需要一段时间,在协议发现之前ping是超时的)
再把交换机7的端口打开,又恢复到了最初的状态。
下面将四台交换机的生成树协议关闭,例如:
仿真模式,从计算机0发送复杂PDU
信息在通路中永无止境地循环传输,再切换回实时模式,从左边ping一下右边
全部超时,没有收到回复,反之也是不通的。
通过生成树协议在实际中的作用验证了STP的功能。
1.先构建网络拓扑配置IP地址
下面验证这六台均属于VLAN 1的计算机是在同一个广播域的
仿真模式,仅选择ICMP协议
从计算机0发送复杂PDU
下面看如何划分VLAN,假设希望左边属于一个VLAN,右边属于另一个VLAN
划分VLAN实际上是在交换机上进行的,而不是主机
验证一下,从计算机0发送广播
也可用指令方式划分VLAN
从计算机3发送广播
那么左边广播域的主机是否可以和右边广播域的主机进行单播通信
答案是否定的
2.重新构建一个网络拓扑,配置IP地址
使左边6台主机属于VLAN2,右边6台主机属于VLAN3
从计算机0发送广播
交换机0并没有转发至交换机1,端口7属于VLAN1
将交换机们的端口7类型转换为Trunk
从计算机0发送广播,从计算机3发送广播
借由交换机关于VLAN的功能观察VLAN分割和广播的的实验现象。
构建网络拓扑,配置IP地址
二者IP地址网络号必须相同才可以通信,最后的主机号从1至254任选即可,0为网络地址,255为广播地址
验证二者可以通信
改变计算机1IP地址
处于B类网络
超时,说明不同网络的主机不能互连
添加一个路由器,给其配置IP地址
依旧无法通信
将两个主机的默认网关地址改为对应路由器端口的IP地址
超时了一次,是因为MAC地址的请求
验证分类IP地址的作用,探究路由器功能
构建网络拓扑,配置IP地址,写好注释
ping验证四者可以互相通信
更改子网掩码
左边两台主机在同一个网络,右边在另一个网络
通过ping命令得到两边上下可以互相通信,但左右两边不互通
为了使两端可以进行通信,加入路由器,并配置好相关端口地址,再设置默认网关
第4字节上的增量:256-192=64
子网地址: 192.168.0.0 192.168.0.64 192.168.0.128 192.168.0.192
最小子网地址:192.168.0.1 192.168.0.65 192.168.0.129 192.168.0.193
最大子网地址:192.168.0.62 192.168.0.126 192.168.0.190 192.168.0.254
广播地址: 192.168.0.63 192.168.0.127 192.168.0.191 192.168.0.255
可以得出路由器0端口需在3-62之间,1端口需在67-126之间
除第一次ARP广播请求,验证得可以通信。
学习划分子网的方法以及验证子网掩码的作用
构建网络拓扑,按注释要求给各主机和路由器接口分配IP地址设置子网掩码,各主机设置网关,给各路由器配置静态路由
192.168.16.0/25地址块,最小地址为192.168.16.0,最大地址为192.168.16.127,可分配192.168.16.1-192.168.16.126,子网掩码255.255.255.128
192.168.16.128/26地址块,最小地址为192.168.16.128,最大地址为192.168.16.191,可分配192.168.16.129-192.168.16.190,子网掩码255.255.255.192
192.168.16.192/30地址块,最小地址为192.168.16.192,最大地址为192.168.16.195,可分配192.168.16.193-192.168.16.194,子网掩码255.255.255.252
192.168.16.196/30地址块,最小地址为192.168.16.196,最大地址为192.168.16.199,可分配192.168.16.197-192.168.16.198,子网掩码255.255.255.252
配置完成
(未完)
这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,
Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/
我有两个Rails模型,即Invoice和Invoice_details。一个Invoice_details属于Invoice,一个Invoice有多个Invoice_details。我无法使用accepts_nested_attributes_forinInvoice通过Invoice模型保存Invoice_details。我收到以下错误:(0.2ms)BEGIN(0.2ms)ROLLBACKCompleted422UnprocessableEntityin25ms(ActiveRecord:4.0ms)ActiveRecord::RecordInvalid(Validationfa
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri
网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
我正在尝试将以下SQL查询转换为ActiveRecord,它正在融化我的大脑。deletefromtablewhereid有什么想法吗?我想做的是限制表中的行数。所以,我想删除少于最近10个条目的所有内容。编辑:通过结合以下几个答案找到了解决方案。Temperature.where('id这给我留下了最新的10个条目。 最佳答案 从您的SQL来看,您似乎想要从表中删除前10条记录。我相信到目前为止的大多数答案都会如此。这里有两个额外的选择:基于MurifoX的版本:Table.where(:id=>Table.order(:id).
我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我
我目前正在用Ruby编写一个项目,它使用ActiveRecordgem进行数据库交互,我正在尝试使用ActiveRecord::Base.logger记录所有数据库事件具有以下代码的属性ActiveRecord::Base.logger=Logger.new(File.open('logs/database.log','a'))这适用于迁移等(出于某种原因似乎需要启用日志记录,因为它在禁用时会出现NilClass错误)但是当我尝试运行包含调用ActiveRecord对象的线程守护程序的项目时脚本失败并出现以下错误/System/Library/Frameworks/Ruby.frame