BOOTP实现 / BOOTP Implement 目录 BOOTP 的服务器建立过程 BOOTP 的客户端建立过程 Note: 理论部分请参考文末相关阅读链接 1 BOOTP 的服务器建立过程 服务器建立步骤主要有: (1)      设定服务器IP,传送ip(offer_ip),服务端口68,客户端口67; (2)      建立send_socket/UDP,广播模式允许复用,绑定到服务器ip,客户端端口; (3)      建立主循环,建立recv_socket进行监听广播地址和客户端口…
DHCP实现 / DHCP Implement 目录 DHCP 服务器建立过程 DHCP 报文加码实现过程 下面介绍建立一个简单的DHCP服务器,主要用于对基本的DHCP请求进行响应,目前只提供一个IP为客户端使用,实现最基本的通信示例.理论内容可参考 DHCP 理论部分. 1 DHCP 服务器建立过程 首先是基本服务器的建立,这个服务器实现了最基本的对DISCOVER和REQUEST报文的响应,在验证时会对魔术字进行验证,此处未对BOOTP进行处理,验证通过后会对Options字段进行验证,此…
DHCP协议 / DHCP Protocol 目录 DHCP 基本理论 DHCP 通信流程 DHCP 完整报文 DHCP 的 Optional 字段 DHCP 的报文类型 1 DHCP 基本理论 DHCP (Dynamic Host Configuration Protocol, 动态主机配置协议) 是一种局域网的网络协议,使用UDP协议进行工作,主要有两个用途,在RFC 2131中有详细的描述, 1. 给内部网络或网络服务供应商自动分配IP地址; 2. 给用户或者内部网络管理员作为对所有计算机…
BOOTP协议 / BOOTP Protocol 目录 基本理论 BOOTP 与 DHCP 通信流程 数据报文格式 报文加解码实现 1. 基本理论 / Basic Theory BOOTP(Bootstrap Protocol)是一种引导协议,基于RFC951协议,基于UDP协议,也称为自举协议,是DHCP协议的前身.BOOTP用于无盘工作站(类似网吧无盘结构)的局域网中,可以让无盘工作站从一个中心服务器上获得IP地址.通过BOOTP协议可以为局域网中的无盘工作站分配动态IP地址,这样就不需要管…
Modbus协议 / Modbus Protocol 目录 Modbus 协议简介 Modbus RTU协议 Modbus TCP协议与 Python 实现 Modbus 功能码 Modbus TCP/RTU对比 1 Modbus 协议简介 Modbus协议MODICON公司1979年开发的一种通信协议,是一种工业现场总线协议标准,1996年施耐德公司推出了基于以太网TCP/IP的Modbus协议—ModbusTCP. Modbus协议是一项应用层报文传输协议,包括ASCII / RTU / T…
FTP协议 / FTP Protocol FTP全称为File Transfer Protocol(文件传输协议),常用于Internet上控制文件的双向传输,常用的操作有上传和下载.基于TCP/IP,基于RFC959通信协议. 0 FTP理论 / FTP Theory 详细的理论可以参考这里. 1 FTP结构 / FTP Structure FTP如同其他的很多通讯协议,FTP通讯协议也采用客户机 / 服务器(Client / Server)架构.用户可以通过各种不同的FTP客户端程序,借助F…
使用 ftplib 建立 FTP 客户端 用于建立FTP Client,与 pyftplib 建立的 Server 进行通信. 快速导航 1. 模块信息 2. 建立 FTP 客户端 1. 模块信息 1.1 常量 / Constants FTP_PORT = 21 标准的FTP协议服务端端口 1.2 类 / Class 1.2.1 FTP()类 ftp = FTP() 无需参数传入直接生成FTP的客户端实例 1.2.1.1 connect()方法 函数调用: ftp.connect(address…
使用 pyftplib 建立 FTP 服务器 pyftplib 主要用于建立 FTP Server,与 ftplib 建立的 Client 进行通信. 快速导航 1. 模块信息 2. 建立 FTP 服务器 1 模块信息 1.1 servers模块 用于建立服务器 1.1.1 FTPServer()类 类实例化:ftpServer = FTPServer(address, handler) 类的功能: 用于建立服务器 传入参数: address, handler address: tuple类型,…
本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道.FIFO.消息队列) 同步(互斥量.条件变量.读写锁.文件和写记录锁.信号量) 共享内存(匿名的和具名的) 远程过程调用(Solaris门和Sun RPC) 但这些都不是本文的主题!我们要讨论的是网络中进程之间如何通信?首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.其实TCP/IP协议族已经帮我们解决了这个问题,网络层的"ip地址&quo…
在上一篇中我们简单的说了一下Python中网络编程的基础知识(相关API就不解释了),其中还有什么细节的知识点没有进行说明,如什么是TCP/IP协议有几种状态,什么是TCP三次握手,什么是TCP四次握手以及如何设计一个单线程多任务版的TCP服务器,这些问题都是本文需要解决的问题. 一.TCP/IP的11种状态 netstat -na  | grep port_num:可以查看TCP/IP状态 一个完整的Socket通信过程,会经过11种TCP/IP状态,状态图如下: 思考三个问题: 1.为什么T…