集中器

PPPoE(以太网上的点对点协议)

六月ゝ 毕业季﹏ 提交于 2020-01-09 14:38:45
协议概述 PPPoE分为两个阶段,即Discovery(地址发现)阶段和PPP会话阶段。当某个主机希望发起一个PPPoE会话时,它必须首先执行Discovery来确定对方的以太网MAC地址并建立起一个PPPoE会话标识符SESSION_ID(Access Concentrator生成)。虽然PPP定义的是端到端的对等关系,Discovery却是天生的一种客户端-服务器关系。在Discovery的过程中,主机(作为客户端)发现某个访问集中器(Access Concentrator,作为服务器),根据网络的拓扑结构,可能主机能够跟不止一个的访问集中器通信 。Discovery阶段允许主机发现所有的访问集中器并从中选择一个。当Discovery阶段成功完成之后,主机和访问集中器两者都具备了用于在以太网上建立点到点连接所需的所有信息。 Discovery阶段保持无状态(stateless)直到建立起一个PPP会话。一旦PPP会话建立,主机和访问集中器两者都必须为一个PPP虚拟接口分配资源。 报文格式 以太网帧格式(更多介绍请查看RFC894/tcp/ip协议详解:卷1 第2章) ETHER_TYPE设置为0x8863(Discovery阶段)或者0x8864(PPP会话阶段) payload头 payload内容 包含0个或多个tag,每个tag是一个tlv(type-length

python装饰器的集中使用姿势

℡╲_俬逩灬. 提交于 2019-12-04 16:36:18
在Python中,装饰器是一种十分强大并且好用的语法,一些重复的代码使用装饰器语法的话能够使代码更容易理解及阅读。 因此在这里简单总结了一下Python中装饰器的几种用法以及需要注意的事情。 一、在装饰器中获取被装饰函数的参数 假设我们在开发web的时候,需要做反爬。要判断接口的访问来源我们就可以通过下面装饰器的方法来实现: def mydecorator(func): def wrapped(*args, **kwargs): print("进入装饰器") if args[0]['header'] == 'spider': print("code: 400") return result = func(*args, **kwargs) return result return wrapped @mydecorator def request_page(request): print("一个访问请求") print("返回了response") if __name__ == '__main__': request = { 'data': 100, 'header': 'spider' } request_page(request) 在这个装饰器中,我们在装饰器中获取了 request 中的 header 参数,如果判断访问来源于爬虫,那么便给它返回一个400。