一、动态主机配置协议DHCP
1、关于协议配置:
- 在协议软件中,给协议参数赋值的动作就叫协议配置
- 一个协议软件在使用前必须已被正确配置,具体的配置信息取决于协议栈
- 连接到互联网的计算机的协议软件需要正确配置的参数包括①IP地址;②子网掩码;③默认路由器的IP地址;④域名服务器的IP地址
2、DHCP
提供了即插即用连网机制:允许一台计算机加入网络获取IP地址而不用手工配置。它给运行服务器软件、且位置固定的计算机指派一个永久地址,给运行客户端的计算机分配一个临时地址。
3、DHCP的客户服务器方式
- 需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文,这时该主机就成为HDCP客户。
- 本地网络上所有主机都能收到此广播报文,但只有DHCP才能回答
- DHCP服务器先在其数据库中查找该计算机的配置信息,找到的返回,找不到则从服务器的IP地址池中取一个地址分配给该计算机。回答报文叫提供报文
4、DHCP工作方式
- 使用呵护服务器方式,采用请求/应答方式工作
- 基于UDP,DHCP服务器在67号端口,HDCP客户端在68号端口
5、中继代理
并不是每个网络上都需要DHCP服务器,会导致服务器数量过多,若没有DHCP服务器,则每个网络至少有一个DHCP中继代理,它配置了DHCP服务器的IP地址信息
DHCP中继代理收到主机广播发送的发现报文后就以单播方式向DHCP服务器准发此报文,等待其回答。收到提供报文后中继代理将其发给主机。
6、租用期
- DHCP服务器分配给DHCP客户的IP地址是临时的,因此DHCP客户只能在一段有限的时间内使用这个分配到的IP地址,这段时间就是租用期。
- 租用期的数值应由DHCP服务器自己决定
- DHCP客户可在自己发送的报文中提出对租用期的要求
二、套接字编程
1、什么是Socket:
又称为套接字,应用程序通常通过套接字向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。
在python中可以用socket()函数来创建套接字
2、套接字编程和UDP
UDP:在客户端和服务器之间没有连接
- 没有握手
- 发送端在每一个报文中明确指定目标的IP地址和端口号
- 服务器必须从收到的分组中提取出发送端的IP地址和端口号
UDP套接字编程的概念是基于Socket套接字技术,通过创建UDP套接字来实现网络通信。UDP套接字编程的实现方法包括以下步骤:
- 创建UDP套接字:使用socket库的socket()函数创建一个UDP套接字。
- 绑定套接字:使用bind()函数将套接字绑定到指定的IP地址和端口号。
- 接收数据:使用recvfrom()函数从套接字接收数据。
- 发送数据:使用sendto()函数将数据发送到指定的目标地址。
3、套接字编程TCP
TCP套接字编程的概念是基于Socket套接字技术,通过创建TCP套接字来实现网络通信。TCP套接字编程的实现方法包括以下步骤:
- 创建TCP套接字:使用socket库的socket()函数创建一个TCP套接字。
- 绑定套接字:使用bind()函数将套接字绑定到指定的IP地址和端口号。
- 监听连接:使用listen()函数开始监听连接请求。
- 接受连接:使用accept()函数接受客户端的连接请求。
- 接收数据:使用recv()函数从套接字接收数据。
- 发送数据:使用send()函数将数据发送到连接的客户端。