python处理pcap追踪tcp流

Python041

python处理pcap追踪tcp流,第1张

步骤:

1、标记文件开始,并用来识别文件自己和字节顺序。

2、Major:2Byte:当前文件主要的版本号。

3、Minor:2Byte:当前文件次要的版本号。

4、ThisZone:4Byte:当地的标准时间,直接写00000000。Python由荷兰数学和计算机科学研究学会的吉多范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品,Python提供了高效的高级数据结构,还能简单有效地面向对象编程。

期物(Future)是concurrent.futures模块和asyncio包的重要组件。

python3.4之后标准库中有两个名为Future的类:concurrent.futures.Future和asyncio.Future.

这两个类的作用相同:类的实例都表示可能已经完成活着尚未完成的延迟计算。与JS库中的Promise对象,Tornado框架中的Future类类似。

通常我们自己不应该创建期物,而只能由并发框架实例化。

这个例子中的future.result方法不会阻塞,因为future对象是有as_completed方法产生的。

在asyncio包中,BaseEventLoop.create_task(...)方法接收一个协程,排定他的运行时间,然后返回一个asyncio.Task实例(也是asyncio.Future类的实例),因为Task是Future的子类,用于包装协程。这与Executor.submit(...)方法创建concurrent.futures.Future实例是一个道理。

因为asyncio.Future类的目的是与yield from一起使用,所以通常不需用使用以下方法:

asyncio.async(coro_or_future, *, loop=None)

这个函数统一了协程和期物:第一个参数可以是二者中的任何一个。如果是 Future或 Task 对象,那就原封不动地返回。如果是协程,那么 async 函数会调用loop.create_task(...) 方法创建 Task 对象。loop= 关键字参数是可选的,用于传入事件循环;如果没有传入,那么 async 函数会通过调用 asyncio.get_event_loop() 函数获取循环对象.

不过,在asyncio 中,基本的流程是一样的:在一个单线程程序中使用主循环依次激活队列里的协程。各个协程向前执行几步,然后把控制权让给主循环,主循环再激活队列里的下一个协程。

asyncio.wait(...) 协程的参数是一个由期物或者协程构成的可迭代对象。wait会分别把各个协程包装进入一个Task对象。最后的结果是,wait处理的所有对象都通过某种方法变成Future实例。wait是协程函数,因此返回的是一个协程或者生成器对象。为了驱动协程,我们把协程传给loop.run_until_complete(...)方法。