Packet Tracer 是由Cisco(著名网络公司,思科)公司发布的一个辅助学习工具, 为学习思科网络课程的初学者去设计、配置、排除网络故障提供了网络模拟环境。 用户可以在软件的图形用户界面上直接使用拖曳方法建立网络拓扑,并可提供数据包在网络中行进的详细处理过程,观察网络实时运行情况。一、Packet Tracer 介绍&安装
1. Packet Tracer介绍
在浏览器中输入 www.javahelp.com.cn后,访问的整个过程有哪些?
集线器又名hub
hub(集线器)能够完成多个电脑的链接
每个数据包的发送都是以广播的形式进行的,容易堵塞网络
网络交换机(又称“网络交换器”),是一个扩大网络的器材,能为子网络中提供更多的连接端口,以便连接更多的计算机 具有性能价格比高、高度灵活、相对简单、易于实现等特点 以太网技术已成为当今最重要的一种局域网组网技术,网络交换机也就成为了最普及的交换机
家用级:
企业级:
交换机的作用:
转发过滤:当一个数据帧的目的地址在MAC地址表中有映射时,它被转发到连接目的节点的端口而不是所有端口(如该数据帧为广播帧则转发至所有端口)
学习功能:以太网交换机了解每一端口相连设备的MAC地址,并将地址同相应的端口映射起来存放在交换机缓存中的MAC地址表中
在Packet Tracer 中,完成如下图示的链接:
注意:
每台pc必须手动设置IP、netmask
192.168.1.1/255.255.255.0 …… 192.168.1.8/255.255.255.0
arp缓存表
每台pc都会有一个arp缓存表,用来记录IP所对应的的MAC
交换机能够完成多个电脑的链接
每个数据包的发送都是以广播的形式进行的,容易堵塞网络
如果PC不知目标IP所对应的的MAC,那么可以看出,pc会先发送arp广播,得到对方的MAC然后,在进行数据的传送
当switch第一次收到arp广播数据,会把arp广播数据包转发给所有端口(除来源端口);如果以后还有pc询问此IP的MAC,那么只是向目标的端口进行转发数据
路由器(Router)又称网关设备(Gateway)是用于连接多个逻辑上分开的网络
所谓逻辑网络是代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网时,可通过路由器的路由功能来完成
具有判断网络地址和选择IP路径的功能
家用级:
企业级:
通过2个router,2个switch,4台pc组成的网络,如下:
说明:
配置所有pc的IP、netmask
pc0(192.168.1.1/24) pc1(192.168.1.2/24) pc2(192.168.3.1/24) pc3(192.168.3.2/24)
配置router(每个router有2个IP)
router0(192.168.1.254/24,192.168.2.1/24) router1(192.168.3.254/24,192.168.2.2/24)
配置后的网络信息如下:
不在同一网段的pc,需要设置默认网关才能把数据传送过去 通常情况下,都会把路由器默认网关
当路由器收到一个其它网段的数据包时,会根据“路由表”来决定,把此数据包发送到哪个端口;路由表的设定有静态和动态方法
每经过一次路由器,那么TTL值就会减一
在dos控制端下,可通过输入命令查看路由表:
较为复杂的通信过程如:访问 www.javahelp.com.cn
注意:一定要配置
PC:IP、NETMASK、DFGATEWAY、DNS
ROUTER:IP、NETMASK、路由表
总结
DNS服务器用来解析出IP(类似电话簿)
DFGATEWAY(默认网关)用来对顶,当发送的数据包的目的ip不是当前网络时,此数据包包转发的目的ip
在路由器中路由表指定数据包的”下一跳”的地址
当一端收到一个FIN,内核让read返回0来通知应用层另一端已经终止了向本端的数据传送
发送FIN通常是应用层对socket进行关闭的结果
2MSL即两倍的MSL,TCP的TIME_WAIT状态也称为2MSL等待状态,
当TCP的一端发起主动关闭,在发出最后一个ACK包后,
即第3次握 手完成后发送了第四次握手的ACK包后就进入了TIME_WAIT状态,
必须在此状态上停留两倍的MSL时间,
等待2MSL时间主要目的是怕最后一个 ACK包对方没收到,
那么对方在超时后将重发第三次握手的FIN包,
主动关闭端接到重发的FIN包后可以再发一个ACK应答包。
在TIME_WAIT状态 时两端的端口不能使用,要等到2MSL时间结束才可继续使用。
当连接处于2MSL等待阶段时任何迟到的报文段都将被丢弃。
不过在实际应用中可以通过设置 SO_REUSEADDR选项达到不必等待2MSL时间结束再使用此端口。
TCP在真正的读写操作之前,server与client之间必须建立一个连接,
当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,
连接的建立通过三次握手,释放则需要四次握手,
所以说每个连接的建立都是需要资源消耗和时间消耗的。
模拟一种TCP短连接的情况:
client 向 server 发起连接请求
server 接到请求,双方建立连接
client 向 server 发送消息
server 回应 client
一次读写完成,此时双方任何一个都可以发起 close 操作
在第 步骤5中,一般都是 client 先发起 close 操作。当然也不排除有特殊的情况。
从上面的描述看,短连接一般只会在 client/server 间传递一次读写操作!
再模拟一种长连接的情况:
client 向 server 发起连接
server 接到请求,双方建立连接
client 向 server 发送消息
server 回应 client
一次读写完成,连接不关闭
后续读写操作...
长时间操作之后client发起关闭请求
建立连接——数据传输——关闭连接...建立连接——数据传输——关闭连接
建立连接——数据传输...(保持连接)...数据传输——关闭连接
长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。
对于频繁请求资源的客户来说,较适用长连接。
client与server之间的连接如果一直不关闭的话,会存在一个问题,
随着客户端连接越来越多,server早晚有扛不住的时候,这时候server端需要采取一些策略,
如关闭一些长时间没有读写事件发生的连接,这样可以避免一些恶意连接导致server端服务受损;
如果条件再允许就可以以客户端机器为颗粒度,限制每个客户端的最大长连接数,
这样可以完全避免某个蛋疼的客户端连累后端服务。
短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。
但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。
每个TCP连接都需要三次握手,这需要时间,如果每个操作都是先连接,
再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,
再次处理时直接发送数据包就OK了,不用建立TCP连接。
例如:数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,
而且频繁的socket 创建也是对资源的浪费。
而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,
而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,
如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,
那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。
listen中的black表示已经建立链接和半链接的总数
如果当前已建立链接数和半链接数以达到设定值,那么新客户端就不会connect成功,而是等待服务器
tcp半链接攻击也称为:SYN Flood (SYN洪水)
是种典型的DoS (Denial of Service,拒绝服务) 攻击
效果就是服务器TCP连接资源耗尽,停止响应正常的TCP连接请求
我们知道一个域名服务器对其区域内的用户解析请求负责,
但是并没有一个机制去监督它有没有真地负责。
也就是说域名服务器的权力并没有被关在笼子里,
所以它既可以认真地“为人民服务”,也可以“指鹿为马”。
于是有些流氓的域名服务器故意更改一些域名的解析结果,
将用户引向一个错误的目标地址。这就叫作 DNS 劫持,主要用来阻止用户访问某些特定的网站,或者是将用户引导到广告页面。
DNS 欺骗简单来说就是用一个假的 DNS 应答来欺骗用户计算机,
让其相信这个假的地址,并且抛弃真正的 DNS 应答。
在一台主机发出 DNS 请求后,它就开始等待应答,
如果此时有一个看起来正确(拥有和DNS请求一样的序列号)的应答包,
它就会信以为真,并且丢弃稍晚一点到达的应答。
联系客服