资讯动态

DHCP、HTTP、HTTPS、DNS

发布时间:2026/9/20 12:17:37 来源:尧图企业网站定制
单播Unicast一对一通信组播MULTICAST即多播一对多通信广播BROADCAST将广播地址做为目的地址的数据帧广播MAC地址FF-FF-FF-FF-FF-FF广播IP地址255.255.255.255查看ip地址的命令(linux中)1、ip add2、ifconfig--yum install net-tools -y3、nmcli查看路由表的命令ip route route -nDHCP动态主机配置协议(Dynamic Host Configuration Protocol)该协议允许服务器向客户端动态分配IP地址和配置信息有一台专门给其他电脑分配ip地址等信息的服务器--靠其他服务器给你分配ip地址这个ip地址不固定配置哪些信息ip地址、子网掩码、网关、dns服务器地址采用UDP作为传输协议客户端发送信息到DHCP服务器的67号端口服务器返回消息给客户端的68号端口 局域网里最好只有一个dhcp服务器优点1、减小管理员的工作量2、减小输入错误的可能3、避免IP冲突4、提高IP地址的利用率DHCP服务的原理客户机请求IP地址 --DHCPdiscover --广播服务器响应请求 --DHCPoffer --单播客户机选择IP地址 --DHCPrequest --广播服务器确认租约 --DHCPack --单播工作和生活场景中哪些地方会有dhcp服务器1、无线路由器/有线路由器/vpn服务器具体dhcp功能2、VMware中vmnet1和vmnet8网卡模式会自动一个dhcp服务器3、k8s和docker里面也有dhcp服务器给容器分配IP地址DHCP服务器如何知道哪些地址分配出去了哪些没有分配出去账本”文件用来记录所有的分配情况/var/lib/dhcpd/dhcpd.leases每当服务器把一个 IP 地址分配给客户端时它不仅仅是在内存里记一下而是会立刻把这个分配记录写入到这个文件中。记录的内容包括IP地址、客户端的 MAC 地址、租约开始时间、租约结束时间。DHCP服务器如何知道分配出去的ip地址不和别人手工配置的冲突呢发 Ping 包试探释放ens33接口的ip地址--dhclient -r ens33DHCP服务器搭建1、安装dhcp相关的软件包 [rootkafka2 ~]# yum install kea -y [rootkafka2 ~]# systemctl status kea-dhcp4 2、修改配置文件配置dhcp服务器 [rootkafka2 dhcp]# ls /etc/kea/ kea-api-password kea-ctrl-agent.conf kea-dhcp4.conf kea-dhcp6.conf kea-dhcp-ddns.conf #永久添加dhcp服务可以放行允许访问 [rootkafka2 kea]# firewall-cmd --add-servicedhcp --permanent [rootkafka2 kea]# firewall-cmd --reload success [rootkafka2 kea]# firewall-cmd --list-all public (default, active) icmp-block-inversion: no interfaces: ens33 sources: services: cockpit dhcp dhcpv6-client ssh [rootkafka2 ~]#vim /etc/dhcpd.conf subnet 192.168.1.0 netmask 255.255.255.0 { # 动态分配范围从 .100 到 .200 range 192.168.1.100 192.168.1.200; # 指定默认网关路由器地址 option routers 192.168.1.1; # 广播地址通常不需要手动写系统会自动计算但写上更规范 option broadcast-address 192.168.1.255; }HTTP超文本传输协议(Hypertext Transfer Protocol)80hhttps 是http协议的加密版本secure,443https://nginx.org/en/linux_packages.html1、安装yum-utils工具 [rootkafka2 ~]# yum install yum-utils -y 2、新建一个nginx.repo文件 [rootkafka2 ~]# cat /etc/yum.repos.d/ cat: /etc/yum.repos.d/: 是一个目录 [rootkafka2 ~]# cat /etc/yum.repos.d/nginx.repo [nginx-stable] namenginx stable repo baseurlhttps://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck1 enabled1 gpgkeyhttps://nginx.org/keys/nginx_signing.key module_hotfixestrue [nginx-mainline] namenginx mainline repo baseurlhttps://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck1 enabled0 gpgkeyhttps://nginx.org/keys/nginx_signing.key module_hotfixestrue 3、安装 [rootkafka2 ~]# yum install nginx -y 4、启动nginx并设置开机自启 [rootkafka2 ~]# service nginx start [rootkafka2 ~]# ps aux|grep nginx nginx 853686 0.0 0.0 14472 3760 ? S 14:12 0:00 nginx: worker process nginx 853688 0.0 0.0 14472 3888 ? S 14:12 0:00 nginx: worker process [rootkafka2 ~]# netstat -anplut|grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 853685/nginx: maste 5、设置开机自启 [rootkafka2 ~]# systemctl enable nginx 6、设置firewalld防火墙规则开放http服务对应的端口是80 [rootkafka2 ~]# firewall-cmd --add-servicehttp --permanent [rootkafka2 ~]# firewall-cmd --add-servicehttps --permanent [rootkafka2 ~]# firewall-cmd --reload success [rootkafka2 ~]# firewall-cmd --list-all [rootkafka2 ~]# firewall-cmd --info-service https https ports: 443/tcp http://192.168.1.131/ #进入nginx存放网页文件的目录 [rootkafka2 html]# vim /usr/share/nginx/html/index.htmlHTTP工作原理请求/响应交互模式--回车用户点击URL为http://www.sxtyu.com/index.html的链接后浏览器和Web服务器执行以下动作1、浏览器分析超链接中的URL2、浏览器向DNS请求解析www.sxtyu.com的IP地址3、DNS将解析出的IP地址202.2.16.21返回浏览器4、浏览器与服务器建立TCP连接(80端口)5、浏览器请求文档GET /index.html 客户机向服务器发出请求请求获得网页6、服务器给出响应将文档index.html发送给浏览器7、浏览器显示index.html中的内容8、释放TCP连接HTTP的连接方式和无状态性非持久性连接--短连接短暂的连接三次握手完成传输数据四次断开持久性连接--长连接稍微长一点时间的连接三次握手完成传输数据等65秒如果没有新的访问就断开连接如果有直接传输数据不需要再次进行三次握手避免了频繁的进行三次握手和四次断开--提供效率nginx在web访问的时间采用长连接http协议的主流版本1.1 2.0yum install python3-pip -y # 安装 requests 库 pip3 install requests python3 import requests response requests.get(http://www.baidu.com/) print(response.status_code) 200HTTP报文结构请求报文从客户端向web服务器发送的请求报文报文的所有字段都是ASCII码请求方法get posthost表示访问网站的地址可以是域名也可以是ipuser-agent表示客户机使用的浏览器是什么agent代理使用什么工具去访问的网站Connectionkeep-alive连接还在建立没有进行四次断开closed 表示连接已经断开Accept表示浏览器可以接受哪些类型的数据Accept-Encodinggzipdeflate 支持文件的解压缩(提高传输文件的效率)Accept-Language语言HTTP的协议版本 urlRefererhttp://192.168.203.201/ 表示访问的流量从哪个网站过来的--引流 表示我是从192.168.203.201网址跳转过来的 reference 引用参考https://www.baidu.com/s?ieutf-8f3rsv_bp1rsv_idx1tnbaiduwdcsdnfenlei256https:// 表示协议www.baidu.com 主机名/s 接口(路由)? 后面的内容是传参的值 表示传递了多个值给百度的接口去查询响应报文从web服务器到客户机(浏览器)的应答报文的所有字段都是ASCII码状态码Status-code 是响应报文状态行中包含的一个3位数字指明特定的请求是否被满足状态码分为以下五类状态码含义例子1XX通知信息100服务器正在处理客户请求2XX成功200请求成功(ok)3XX重定向301重定向Moved Permanently永久重定向302临时重定向4XX客户错误401认证没通过要求提交用户名和密码如果用户名和密码不对就会报401错误403用户没有权限访问 Forbidden404页面未找到Not Found405必须使用get方法但是你使用的是post方法 Method Not Allowed5XX服务器错误500服务器内部错误遇到了未曾预料的状况502作为网关或者代理工作的服务器(负载均衡)尝试执行请求时上游服务器接收到无效的响应 NOT Implemented503服务器尾货或者过载以后再试 Bad Gateway504未能及时从上游服务器收到响应 Gateway Timeout状态码200表示访问成功成功的将数据返回给客户机 ok404表示访问的url的路径不存在Not Found304表示网页的内容没有修改Not Modified--内容在浏览器里有缓存缓存的内容跟服务器上的内容一样 ctrlF5 强制刷新If-Modified-Since记录网页的内容是否修改的时间If-None-Match658938c3-2baServerApache/1.3.2(Unix) nginx/1.25.3 表示web服务器使用的软件是什么Content-Length4096 内容的长度(网页内容)Content-Typetext/html 网页内容的类型请求网页的方式get和post都是向服务器请求页面区别1、get传递参数是通过url里携带数据容易看到而且携带的数据有限https://search.jd.com/Search?keyword%E6%89%8B%E6%9C%BAencutf-8pviddd49e92d83634e7abf5d0d0e0bc045742、post 传递参数不是通过url是通过body部分传递不容易看到但是还是不安全的因为http协议是明文传输只是可以携带更加多的数据DELETE删除Web页面CONNECT用于代理服务器HEAD请求读取一个Web页面的首部PUT请求存储一个Web页面TRACE用于测试要求服务器送回收到的请求OPTION查询特定选项cookie和session是用来保存数据的方式cookie 是在客户端保存用户的数据的地方session 是在服务器端保存用户的数据的地方--会话(用户登录信息)http协议1.1和2.0的主要区别特性HTTP/1.1HTTP/2.0连接管理文本协议串行请求同一 TCP 连接同一时间只能发一个请求二进制协议多路复用同一 TCP 连接可并行处理多个请求 / 响应头部压缩每次请求和响应时都需要重复传输占用大量带宽在客户端和服务器之间共享状态信息减少了重复传输头部信息的需要提高效率服务器推送不支持客户端必须先请求才能获取资源支持Server Push服务器可主动推送客户端未来可能需要的资源如 CSS、JS流量控制和优先级管理无优先级机制请求按顺序处理支持流量控制和优先级管理机制浏览器可标记关键资源优先传输协议安全性明文传输HTTPS 是可选扩展规范上强制推荐 HTTPS实现复杂度简单基于文本调试友好复杂基于二进制需专门的工具调试https访问如何填充头部信息import requests # 1. 手动填充/构造请求头 headers headers { Host: www.baidu.com, User-Agent: Mozilla/5.0 (Windows 10) Chrome/120.0, Accept: text/html,image/*, Connection: keep-alive, Referer: https://www.baidu.com } # 2. 访问HTTPS网址带上自定义请求头 url https://www.baidu.com resp requests.get(url, headersheaders) print(响应状态码, resp.status_code) # 打印服务器返回的响应头 print(响应头部\n, resp.headers)进行反爬虫措施如何知道哪些访问是正常的用户行为哪些是爬虫行为访问频率爬虫高频匀速、并发高行为交互爬虫无页面交互、无滑动点击、只爬核心接口用户有正常浏览行为网络 IP爬虫多用代理 / 机房 IP普通用户为家庭 / 手机固定网络动态校验爬虫无法绕过验证码、前端签名、动态 TokenUser-Agent 缺失、 请求头残缺如何限制爬虫程序请求头校验验证 UA( User-Agent)、Referer 等拒绝非法请求。IP 限流封禁限制单 IP 访问频率封禁代理 / 机房异常 IP。人机验证触发验证码、浏览器指纹、行为检测区分人机。动态加密接口增加签名、Token、时间戳提高逆向难度。访问行为管控检测浏览轨迹、停留时长拦截机械访问。协议与规则约束配置 robots 协议约定允许 / 禁止爬取目录约束合规爬虫业务限制登录鉴权、接口限流、返回混淆数据反爬虫程序从日志里拿1分钟访问次数超过100的ip编写iptables规则使用前面获得ip禁止访问每间隔5分钟就进行一次分析http一键安装部署脚本#!/bin/bash # 一键编译安装 Nginx 脚本CentOS Stream 10 专用带HTTPS和HTTP/2支持 set -e # 1. 安装CRB源解决pcre依赖问题 echo 启用CRB仓库 dnf config-manager --set-enabled crb dnf install -y epel-release # 2. 安装依赖包适配CentOS Stream 10 echo 安装依赖包 dnf install -y \ zlib zlib-devel \ openssl openssl-devel \ pcre2 pcre2-devel \ gcc gcc-c autoconf automake make \ psmisc net-tools lsof vim wget # 3. 创建运行Nginx的专用用户 echo 创建运行用户 id wangguang || useradd wangguang -s /sbin/nologin # 4. 下载Nginx源码包 echo 下载Nginx源码 mkdir -p /wangguang cd /wangguang wget -c https://nginx.org/download/nginx-1.21.4.tar.gz # 5. 解压并进入源码目录 echo 解压源码包 tar xf nginx-1.21.4.tar.gz cd nginx-1.21.4 # 6. 编译前配置开启HTTPS和HTTP/2功能 echo 配置并编译Nginx ./configure \ --prefix/usr/local/wangguang \ --userwangguang \ --groupwangguang \ --with-http_ssl_module \ --with-http_v2_module # 配置失败直接退出 if [ $? -ne 0 ]; then echo ❌ configure 配置失败请检查依赖是否安装完整 exit 1 fi # 编译用2个进程加速 make -j 2 # 安装 make install # 7. 配置环境变量让系统能直接找到nginx命令 echo 配置环境变量 echo PATH/usr/local/wangguang/sbin:\$PATH /root/.bashrc source /root/.bashrc # 临时关闭防火墙和SELinux仅实验环境使用 echo 临时关闭防火墙实验环境 systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config echo ✅ Nginx 安装完成 echo 启动命令nginx echo 停止命令nginx -s stop echo 配置文件路径/usr/local/wangguang/conf/nginx.conf先编译安装 /usr/local/wangguang/conf/nginx.conf里面修改 编辑主配置文件 vim nginx.conf 添加监听的443接口 cat nginx.conf # 配置http2.0协议的支持 # HTTPS server # server { listen 443 ssl http2; # 关键443端口启用SSL和HTTP/2 server_name localhost; # 域名你这里是localhost正式环境要改成你的域名 # SSL证书路径pem是公钥key是私钥 ssl_certificate www.sanchuangedu.cn.pem; ssl_certificate_key www.sanchuangedu.cn.key; # SSL会话缓存和超时优化性能 ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; # 加密套件配置只使用高强度加密算法 ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # 静态页面根目录默认nginx/html下 location / { root html; index index.html index.htm; } # 反向代理配置访问 /admin 时转发到本地8000端口的服务 location /admin{ proxy_pass http://127.0.0.1:8000; } } 上传证书 解压证书 yum install unzip -y 解压之后 ls 域名.pem--公钥 域名.key--私钥 nginx -t 测试编辑的语法 #注意路径 nginx可以是绝对路径 echo $PATH nginx -s reload 重载 C:\Windows\System32\drivers\etc\hosts 添加HTTPSTLSSSL的四次握手什么是CA( Certificate Authority数字证书认证机构 )--其实就是公钥和私钥证书捆绑在什么上面--绑定到域名上为什么需要证书-- 身份认证 、 加密传输 、 提升可信度与合规性常见的 SSL 证书品牌DigiCert、GlobalSign、CFCA( 中国金融认证中心 )……SSL(Secure Socket Layer 安全套接字协议)为网络通信提供安全及数据完整性的一种安全协议TLS(Transport Layer Security)是SSL的升级版在传输层与应用层之间对网络连接进行加密加密算法对称加密 加密和解密用同一个密钥加解密速度快但密钥分发不安全。 ( AES)非对称加密 用一对密钥公钥 私钥公钥加密、私钥解密加解密慢但天生安全无需分发私钥 ( RSA/ECC)数字签名防篡改、防抵赖、验身份保证完整性、真实性、不可抵赖数据加密防偷看保证数据机密性自制ssl证书实现nginx的https功能DNS(domain name system) 域名解析协议--应用层2种类型的数据包1、dnsquery询问/查询数据包2、dnsresponse响应数据包域名解析默认UDP 53 端口大型域名 / 防劫持TCP 53 端口DNS系统的作用正向解析根据主机名称(域名)查找对应的IP地址(使用最多)反向解析根据IP地址查找对应的主机域名早期使用hosts文件解析域名--主机名称重复、维护困难hosts文件在域名解析的时候优先级非常高先查询hosts文件如果存在域名对应的ip就直接使用不再问dns服务器--如果没有就问dns服务器[rootkafka2 ca]# vim /etc/hostsDNS--分布式、层次性[rootkafka2 ca]# vim /etc/nsswitch.conf如何获得一个域名--阿里云、腾讯云、华为云去购买dns查询的基本步骤浏览器先查找自身缓存与本地 hosts 文件向本地 DNS 服务器发起递归查询本地 DNS 依次访问根服务器、顶级域名服务器、权威服务器权威服务器返回域名对应 IP逐级回传 IP 给用户完成解析建立网络访问。[rootkafka2 ~]# yum install bind-utils -y[rootkafka2 ~]# dig www.baidu.com[rootkafka2 ~]# dig trace www.baidu.com

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价