计算机网络——应用层(4)DHCP和套接字编程

一、动态主机配置协议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()函数将数据发送到连接的客户端。
相关推荐
123过去1 天前
wifi-honey使用教程
linux·网络·测试工具
志栋智能1 天前
低成本自动化巡检:7×24小时守护业务稳定
运维·网络·自动化
云飞云共享云桌面1 天前
非标自动化研发成本高?云飞云共享云桌面:1台主机=10台工作站,年省数十万。
大数据·运维·服务器·人工智能·自动化·云计算·电脑
Linux运维技术栈1 天前
生产环境Linux应用目录迁移至LVM独立分区 标准化实战方案
linux·运维·服务器·lvm·逻辑卷
tang777891 天前
小红书平台用什么代理 IP 比较好?2026年3月实测数据 + 选型推荐
网络·爬虫·python·网络协议·tcp/ip·数据挖掘·ip
feasibility.1 天前
SSH Agent Forwarding 与 tmux 排障笔记
linux·运维·服务器·经验分享·笔记·ssh
ShawnLiaoking1 天前
Linux 会话窗口常开
linux·运维·服务器
wheelmouse77881 天前
网络排查基础与实战指南:Ping 与 Telnet
开发语言·网络·php
IMPYLH1 天前
Linux 的 dir 命令
linux·运维·服务器·数据库
fanged1 天前
操作系统番外1(Linux的测试体系)(TODO)
linux·运维·服务器