随笔分类 - 计算机网络
从最低层的网络知识学习,通过python的socket编程。
摘要:# DNS:是一个UDP层上边的协议,用于将域名转换成IP地址,在我们平时浏览网页的时候,# 这个我们平时用到的特别多的,在我们打开浏览器进行搜索网页的时候,不是填入IP地址进行# 搜索的,而只是输入域名,DNS协议会将域名解析成IP地址,然后记性寻找我们访问的网页。from scapy.all i
阅读全文
摘要:# arp扫描,定义一个函数,发送两层的arp包,请求同一局域网内其他IP地址的mac地址。from scapy.all import *import uuid,socket# 获取本机的IP地址。def get_ip_address(): # 获取本机电脑名 myname = socket.get
阅读全文
摘要:# 这个脚本是实现Linux中traceroute程序的,是探测从我们这个机器到我们要探测的IP地址中间都需要经过那些路由。# 原理:我们的机器发送UDP高端口的数据包,发送给目的地址,首先设置ttl为1,然后逐次增加,在没有到达我们的目的IP# 地址的路由,会发送ICMP的超时报文,然后我们从中提
阅读全文
摘要:# ping的原理是发送一个ICMP请求包,然后根据目的地址的应答包来判断是否能够和这个主机进行通信。# 我们使用python实现,借助于scapy来进行编写程序。# 导入scapy包。from scapy.all import *import time,struct,random# 编写ping一
阅读全文
摘要:# 写在前面,这篇文章的原创作者是Charles我只是在他这个程序的基础上边进行加工,另外有一些自己的改造# 并都附上了注释和我自己的理解,这也是我一个学习的过程。# 附上大佬的GitHub地址:https://github.com/CharlesPikachu/Tools '''Function:
阅读全文
摘要:# 简单的端口扫描工具# 作者: Charles# 公众号: Charles的皮卡丘import timeimport socketimport threading# 判断是否为正确的IP地址。def isIP(ip): ip_addr = ip.split('.') if len(ip_addr)
阅读全文
摘要:# 小知识:计算π的其中一个方法是,随机的向一个边长为n的正方形中撒豆子。# 然后看这些豆子是否在以n为半径的四分之一圆内,正方形面积:n*n,四分之一圆的面积:π*n*n/4# 因此落在四分之一圆内的概率为π/4,这样我们就能算出π的值。# 我们这个程序是来讲述zmq发布-订阅过程的流程,# 通过
阅读全文
摘要:# 这里异步服务器的实现是借助于select,有关select模块在我上边的博客中有体现。# zen_utils也是我们自己写的一个脚本。也在上边的磨课中import select, zen_utils,queue,timedef serve(listener,inpouts,outputs,mes
阅读全文
摘要:# 多线程和单线程其实是差不多的,知识我们多开了几个线程# 来让多个客户端连接,这样同一时间可以有四个客户端跟服务端通信import zen_utils# 导入线程模块from threading import Thread# 定义函数,传入socket套接字。def start_threads(l
阅读全文
摘要:# 对于单线程的服务端,我们借助于zen_utils(我们自己编写好的一些函数)是很容易就实现的。# 导入这个模块import zen_utilsif __name__ == '__main__': # 调用我们编写函数,来获取终端传入的参数。 address = zen_utils.parse_c
阅读全文
摘要:# 这个是客户端,下边我会写几个关于服务的单线程、多线程、异步服务端的脚本。# 定义一个客户端,# 导入接收终端参数、随机数、socket、自己编写工具的模块。import argparse, random, socket, zen_utils# 定义客户端函数,入参为IP地址端口。def clie
阅读全文
摘要:# 这里边是一个定义了服务端的一系列函数,是Python网络编程这本书第七章的第一个例子。# 这是供后边函数进行调用了,然后我们来进行研究网络的单线程编程,多线程编程、异步网络编程等。# 导入网络编程socket、时间time、cmd参数获取模块import argparse, socket, ti
阅读全文
摘要:# coding: utf-8import socket# 定义一个消息列表messages = ['This is the message ', 'It will be sent ', 'in parts ', ]# 定义一个元祖,指定想要连接的服务端。server_address = ('loc
阅读全文
摘要:# can_read, can_write, _ = select.select(inputs, outputs, None, None)## 第一个参数是我们需要监听可读的套接字, 第二个参数是我们需要监听可写的套接字, 第三个参数使我们需要监听异常的套接字, 第四个则是时间限制设置.## 如果监
阅读全文
摘要:import argparse,socketdef recvall(sock,length): """传入一个套接字,和一个长度""" # 定义一个二进制的变量 data = b'' # 循环 while len(data) < length: print(len(data),length) # m
阅读全文

浙公网安备 33010602011771号