5.1 关于http与DNS的概念与操作

一、HTTP / HTTPS 基础

1. http与https的区别

  • HTTP :明文传输,端口 80,不安全,容易被窃听、篡改、劫持。
  • HTTPS :HTTP + TLS/SSL 加密,端口 443,数据加密传输,身份认证,防劫持。

2. get与post的区别

1)get的url可见,post不可以

2)get的参数是拼接在url中,post是在body体中

3)get回退页面没有什么影响,post需要重新发起请求

4)get可以缓存,post不可以

5)get数据大小限制在2k-4k左右,post是在php.ini设置参数

6)post比get更加安全

7)get产生一个TCP数据包,post产生两个TCP数据包(header、data)

3. 浏览器输入地址,到页面展示 的全过程

  • 浏览器输入url,解析url地址是否合法
  • 浏览器查看是否有缓存(浏览器缓存-系统缓存-路由器缓存),有就直接显示
  • 解析域名,获取对应的IP地址
  • 浏览器向服务器发送tcp连接请求,建立tcp连接
  • 握手成功后,浏览器向服务器发送http请求,请求数据包
  • 服务器收到处理的请求,将数据返回至浏览器
  • 浏览器解析收到的响应,如果响应可以缓存,则存入缓存
  • 浏览器发送请求,获取嵌入在HTML中的资源(html,css,JavaScript,图片,音乐等),对于未知类型,会弹出对话框
  • 浏览器发送异步请求
  • 页面全部渲染结束

4. HTTPS 工作原理

  • 客户端和服务器打招呼,交换随机数
  • 服务器发证书,客户端验证证书合法性
  • 客户端用服务器公钥加密一个密钥材料发过去
  • 双方算出相同的对称密钥
  • 之后所有数据都用这个密钥加密传输,安全可靠

5. 常用的http方法

  • GET:获取资源,参数在 URL,明文可见
  • POST:提交数据,参数在 body,更适合敏感数据
  • PUT:更新资源
  • DELETE:删除资源
  • HEAD:从服务端获取指定信息的头部
  • OPTIONS:查询针对请求URL指定的资源支持
  • **TRACE:**沿着目标资源的路径执行消息环回测试

6. WebSocket与 HTTP 的关键区别

特性 WebSocket HTTP
通信模式 全双工(双向同时) 半双工(请求 - 响应)
连接 持久长连接 短连接(一次请求即断)
服务器推送 支持 不支持(只能被动响应)
头部开销 极小(2--14 字节) 大(数百字节~KB 级)
适用场景 实时交互 文档 / 资源加载

工作原理(两步)

  • 握手(基于 HTTP) 客户端发 HTTP 请求,包含 Upgrade: websocket,服务器返回 101 Switching Protocols 完成协议升级。
  • 数据传输 握手后,双方用二进制 / 文本帧自由收发消息,直到主动关闭。

二、HTTP 状态码(必考)

按分类记:

1xx 信息性

  • 100 Continue:继续发送
  • 101 Switching Protocols:切换协议(如升级到 WebSocket)

2xx 成功

  • 200 OK:正常返回
  • 201 Created:创建成功
  • 204 No Content:无响应体
  • 206 Partial Content:断点续传

3xx 重定向

  • 301 Moved Permanently:永久重定向
  • 302 Found:临时重定向
  • 304 Not Modified:缓存未变化,使用本地缓存
  • 307/308:严格重定向,保留请求方法

4xx 客户端错误

  • 400 Bad Request:请求格式错误
  • 401 Unauthorized:未认证
  • 403 Forbidden:拒绝访问
  • 404 Not Found:资源不存在
  • 405 Method Not Allowed:方法不允许
  • 429 Too Many Requests:请求频率限制

5xx 服务端错误

  • 500 Internal Server Error:服务器内部错误
  • 502 Bad Gateway:网关错误
  • 503 Service Unavailable:服务不可用 / 过载
  • 504 Gateway Timeout:网关超时

一些小补充:
1. 304 怎么触发?浏览器缓存机制

1)触发条件:

客户端发送请求时带上缓存标识:

  • If-Modified-Since
  • If-None-Match

服务器检查:资源没变化 → 返回 304 Not Modified 浏览器直接用本地缓存,不下载内容。

2)浏览器缓存流程

  1. 先看强缓存Cache-Control / Expires
    • 没过期:直接用本地缓存,不发请求
  2. 强缓存过期 → 发请求带协商缓存头
    • 资源没变 → 304
    • 资源变了 → 200 + 新内容

2. DNS 污染是什么?

DNS 污染 = DNS 缓存投毒

  • 攻击者伪造 DNS 响应,让你把域名解析到错误 IP
  • 结果:你访问正常网站,却跳到恶意网站、广告页、钓鱼页。
  • 特点:污染的是递归 DNS 服务器缓存,不是你本机。

常见场景:

  • 公共 WiFi 劫持
  • 某些地区网络干扰
  • 恶意软件篡改 DNS

三、DNS 解析完整流程

1. DNS 作用

  • 域名 → IP 地址的映射
  • 分布式、层级域名系统

2. 完整解析流程(标准 8 步)

  1. 浏览器查自身缓存
  2. 查操作系统缓存(hosts 文件)
  3. 向本地 DNS 服务器(LDNS)发起查询
  4. LDNS 查自身缓存
  5. LDNS 向 根域名服务器 查询
  6. 根服务器返回 顶级域服务器(如 .com)地址
  7. LDNS 向顶级域服务器查询
  8. 顶级域返回 权威 DNS 服务器 地址
  9. LDNS 向权威 DNS 查询,拿到最终 IP
  10. LDNS 缓存并返回给客户端
  • 根 DNS:只管顶级域(.com/.cn/.net)
  • 顶级域 DNS :管二级域名(baidu.com
  • 权威 DNS:管具体域名解析,存真正 IP
  • LDNS:帮你代理查询,负责缓存
  • 本地缓存 /hosts:最快,优先级最高

3. 常见 DNS 记录

  • A 记录:域名 → IPv4
  • AAAA 记录:域名 → IPv6
  • CNAME:域名别名
  • NS:域名服务器
  • MX:邮件服务器
  • TXT:验证、SPF、DKIM
  • PTR:反向解析 IP → 域名

四、nslookup 详细讲解

1. 基本用法

直接查 A 记录(默认)

复制代码
nslookup baidu.com

指定 DNS 服务器查询

复制代码
nslookup baidu.com 8.8.8.8

查询指定类型记录

复制代码
nslookup -type=mx baidu.com
nslookup -type=ns baidu.com
nslookup -type=aaaa baidu.com
nslookup -type=cname www.baidu.com
nslookup -type=txt baidu.com

交互模式

复制代码
nslookup
> server 8.8.8.8
> set type=mx
> baidu.com

2. 输出结构

复制代码
Server:  114.114.114.114      # 你使用的递归DNS
Address: 114.114.114.114#53

Non-authoritative answer:     # 非权威应答(来自缓存)
Name:    baidu.com
Address:  223.119.241.111
  • Non-authoritative:不是域名的权威 DNS 回答,是缓存结果
  • Authoritative:权威 DNS 直接回答

五、dig 详细讲解

1. 最基础用法

复制代码
dig baidu.com

2. 常用参数

查询指定记录类型

复制代码
dig A baidu.com
dig AAAA baidu.com
dig NS baidu.com
dig MX baidu.com
dig TXT baidu.com
dig CNAME www.baidu.com
dig SOA baidu.com

指定 DNS 服务器

复制代码
dig @8.8.8.8 baidu.com
dig @1.1.1.1 baidu.com

只看关键答案

复制代码
dig +short baidu.com

显示完整 DNS 解析路径

复制代码
dig +trace baidu.com

3. dig 输出结构详解

典型输出分为 5 段:

1. HEADER(头信息)
复制代码
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY:1, ANSWER:1, AUTHORITY:4, ADDITIONAL:1
  • status: NOERROR:查询成功
  • qr:响应报文
  • rd:要求递归
  • ra:服务器支持递归
  • ANSWER:返回几条记录
2. QUESTION SECTION(你问了啥)
复制代码
;; QUESTION SECTION:
;baidu.com.   IN   A
3. ANSWER SECTION(服务器回答)
复制代码
;; ANSWER SECTION:
baidu.com.  324  IN  A  223.119.241.111
  • 324:TTL(缓存时间)
  • IN:Internet Class
  • A:IPv4 记录
  • IP:最终地址
4. AUTHORITY SECTION(权威 DNS 服务器)

告诉这个域名由谁管理。

5. ADDITIONAL SECTION(附加信息)

一般是权威 DNS 的 IP。

六、总结概念

  1. DNS是什么?(文中有说)

  2. DNS端口是什么?采用的协议是什么?

  • 默认查询用UDP53
  • 查询用UDP,同步用TCP
  1. DNS完整解析流程(文中有说)
相关推荐
H Journey2 小时前
Linux 下网络编程:高性能 IO 多路复用,epoll 事件处理循环
linux·网络·epoll 事件处理循环
徐子元竟然被占了!!2 小时前
网络地址转换(NAT)
网络·智能路由器
Gofarlic_oms12 小时前
Adams许可排队严重?不想买新许可,闲置回收立即可用
java·大数据·服务器·开发语言·人工智能
Bushlet2 小时前
交换综合实验
网络
白緢2 小时前
二、Linux 开发工具
linux·运维·服务器
思茂信息2 小时前
CST可重构雷达吸波器设计与仿真
网络·算法·平面·智能手机·重构·cst·电磁仿
计算机安禾2 小时前
【计算机网络】第25篇:Linux网络数据包的解剖路径——从网卡驱动到协议栈的关键路径
linux·网络·计算机网络
深蓝易网2 小时前
工厂目视化实操手册,告别形式主义
运维·网络·数据库·人工智能·汽车
小明同学012 小时前
linux———进程间通信
linux·服务器·网络