说实话,我见过太多人学网络安全的第一步就走歪了。他们打开教程,先装一个扫描器,对着靶场跑一遍,看到几个开放端口就兴奋得不行。但真到了自己搭环境、分析流量、排查问题的时候,才发现连最基础的“这个包为什么要这样发出去”都说不清楚。我自己的弯路走得比这还长——早期直接学漏洞利用,结果遇到多网段环境彻底懵住,又老老实实回到计算机网络,花了整整三周把地基补上。回头看,这三周的价值超过后面看十篇攻击教程。
这篇笔记就是第一阶段“计算机网络”的完整梳理。我不会按教材顺序把OSI七层模型从头抄到尾,而是按一个安全从业者真正需要的逻辑重排知识点:数据包从浏览器到服务器经历了什么、TCP为什么非要握三次手、ARP欺骗为什么在内网里屡禁不止、DNS和HTTP里藏着哪些安全研究的入口。读完这篇文章,你能读懂抓包结果,能解释常见攻击为何发生,能知道下一步该往哪个方向深入。适合完全零基础刚入门的同学,也适合学了一段时间但总感觉基础不牢、想回头补课的朋友。
1. 为什么安全学习的第一站是计算机网络,而不是漏洞工具
1.1 我先走了一段弯路,希望你不用重走
我最开始学安全的时候,做的事情和目标完全脱节。听说某个工具能扫漏洞,就装来跑,跑出来一堆插件版本号,然后去网上搜对应的利用方法,打下来了就觉得自己很厉害。但这种“扫描器依赖症”的副作用特别明显——靶场换一个拓扑、加一层内网转发,我立刻不会玩了。
后来一次很尴尬的经历让我彻底改变思路。当时我在某个模拟环境里做内网渗透练习,扫到了一个数据库端口,但读写数据始终不成功。后来才发现问题根本不是数据库配置,而是我完全没搞懂目标主机和我的攻击机之间的路由关系——数据包要从哪个网关走、要不要经过转发、目标主机是不是在同网段,这些网络基础概念我全是一团浆糊。那一刻我才意识到,网络知识不是“学安全之前应该知道的东西”,它本身就是安全能力的一部分。
1.2 安全从业者需要的网络知识地图
一般人学计算机网络,目标是配置路由器、排查网络故障。安全从业者的目标完全不同:我们要通过报文理解一台机器如何被暴露、一个协议在设计上存在哪些可以被利用的薄弱点。我梳理了一张“安全视角的网络知识地图”,这是我在第一阶段反复对照的框架:
| 网络知识模块 | 核心内容 | 后续对应的安全课题 |
|---|---|---|
| 地址编址 | IP地址、子网掩码、网关、CIDR | 资产测绘、内网渗透、网段规划 |
| 链路层通信 | MAC地址、ARP、交换机转发 | 中间人攻击、内网嗅探、VLAN安全 |
| 传输层机制 | TCP/UDP、端口、握手挥手、连接状态 | 端口扫描、拒绝服务攻击、会话劫持 |
| 路由与转发 | 路由表、NAT、ICMP | 路由绕过、网络诊断、痕迹清理 |
| 应用层协议 | HTTP、DNS、TLS | Web渗透、域名安全、流量分析 |
这张表的意思是:网络不是一门孤立的课,每个知识点都能直接映射到安全领域的某个具体方向。学的时候你不只是在记概念,而是在为后面的攻击和防御建立底层直觉。
1.3 怎么学才不白学:把教材顺序“拆碎重排”
我强烈建议你不要抱着教材从第一章硬啃到最后一章。标准教材为了体系完整,会把物理层的电压、编码讲得很细,但这些东西对一个安全初学者来说性价比太低。我的方法是:以“一次数据包的完整旅程”为主线来组织知识。
你打开浏览器输入一个域名,敲下回车,到这个页面显示出来,中间到底发生了什么?沿着这个问题走一遍,你会自然地接触到DNS解析、TCP连接建立、IP路由、ARP寻址、HTTP报文构造、TLS加密协商等一连串知识点。每个点学到什么程度算够?标准是——你能用自己的话解释这个环节“为什么这么设计”以及“如果这里被攻击会怎样”。
2. TCP/IP分层解剖:每一层都是一片攻击面
2.1 从一次浏览网页看数据包的封装旅程
我习惯用一个生活化类比来理解协议分层:你把一封信交给邮局。信的内容是你的业务数据,但不可能直接丢进邮筒就走——你要先写上收件人姓名(对应应用层逻辑),再套上信封写上收件地址(对应网络层IP地址),最后还得贴邮票、交给邮差(对应链路层MAC寻址和物理传输)。邮局不关心你信里写了什么,只关心信封信息是否准确;收件方则逐层拆开,最后才看到信的内容。
对应的真实过程是:浏览器构造HTTP请求(应用层)→ 操作系统加上TCP头,标记源端口和目标端口(传输层)→ 加上IP头,写清源IP和目标IP(网络层)→ 网卡根据目标IP查地址解析,封装成帧发出去(链路层)。每一层只关心自己处理的那部分数据,这种“层间隔离”的设计让协议栈可以独立演进——发HTTP的不需要关心底下是光纤还是信号塔。同时,每一层也都是潜在的攻击面,因为每一层都定义了需要被信任的字段。
2.2 物理层与数据链路层:MAC地址、交换机与本地网络
物理层解决的事很简单:把0和1变成电信号、光信号或无线电波。这一层的安全问题不多,但物理断网、信号干扰是永远的“最终武器”。
真正值得投入精力的是数据链路层。这里的主角是MAC地址——48位的硬件地址,可以理解成每块网卡出厂时带的一个“身份证号”。在同一局域网内,设备之间通信不是直接用IP找对方,而是先通过地址解析协议把IP地址翻译成MAC地址,然后交换机根据MAC地址把帧从正确的端口转发出去。
从安全视角看链路层,有两点特别重要:
- 交换机不等于保险箱。很多人以为用了交换机就安全了,其实交换机只是把“冲突域”切小了,广播域还在。广播域内的设备依然能收到发给别人的广播信息,恶意行为也可以主动注入伪造帧。
- MAC地址太容易被伪造。发送方完全可以在构造帧的时候写一个并不存在于自己网卡上的源MAC地址,这就是链路层欺骗的基础,也是为什么很多内网攻击都从这一层“下手”的原因。
2.3 网络层:IP编址、子网、路由与网关
网络层负责“数据包如何从源到目的地”。IPv4地址是32位的,为了好记拆成四段,比如192.168.1.10。但光有IP还不够,你还得知道哪一部分是网络号、哪一部分是主机号,这就需要子网掩码。
我顺手整理了一张最常用的对照表,初学者直接照着记就行:
| 子网掩码 | CIDR | 包含IP数量 | 可用主机数 | 典型场景 |
|---|---|---|---|---|
| 255.255.255.0 | /24 | 256 | 254 | 小型局域网 |
| 255.255.255.128 | /25 | 128 | 126 | 小办公室 |
| 255.255.0.0 | /16 | 65536 | 65534 | 大中型网络 |
子网掩码决定了你和哪些主机在一个“广播域”里。同一个子网内的机器可以直接通信,跨子网的通信必须把包交给网关——网关是连接本地网络和外部世界的“大门”。所以你在看内网拓扑的时候,第一件事永远是先搞清楚哪些主机在同一网段、网关在哪、如果网关被攻陷会波及多大范围。
路由器维护着一张路由表,决定收到数据包后该转发给谁。安全角度看路由表很有意思:一台被攻陷的主机,它的路由表往往暴露了网络拓扑的关键信息——有几个网段、默认网关指向哪、有没有指向内网其他网段的静态路由。这也是为什么基础阶段就要养成“拿到一台机器先看网络配置”的习惯。
2.4 传输层:端口与TCP/UDP
传输层的核心是“端口”和“连接”。端口可以理解成主机上的门牌号,一台服务器可能同时开着Web服务(80/443)、SSH服务(22)、数据库服务(3306),每种服务监听一个端口,客户端连过来必须先找到正确的门牌号。
安全从业者必背的常用端口表:
| 端口 | 服务 | 安全关注点 |
|---|---|---|
| 21 | FTP | 明文传输,容易被嗅探 |
| 22 | SSH | 常见爆破目标 |
| 23 | Telnet | 明文协议,基本不建议使用 |
| 25 | SMTP | 邮件服务,开放转发风险 |
| 53 | DNS | 缓存投毒、劫持隐患 |
| 80/443 | HTTP/HTTPS | Web攻击主战场 |
| 3306 | 数据库 | 弱口令、未授权访问 |
| 3389 | 远程桌面 | 爆破、横向移动高频端口 |
| 6379 | 键值数据库 | 未授权访问典型案例 |
传输层还有一对老冤家:TCP和UDP。TCP面向连接,提供可靠传输,适合文件传输、网页访问这类丢一个字节都不行的场景;UDP面向无连接,发出去就不管了,适合实时性要求高的语音、视频。安全视角上,TCP的连接状态机复杂,握手过程可以被利用来消耗资源;UDP虽然没有握手,但容易被伪造源地址、放大流量。
2.5 应用层:真正面向业务逻辑的攻击现场
应用层是离用户最近的一层,也是攻击最密集的一层。HTTP、DNS、FTP、SMTP这些协议都在这一层。为什么应用层的安全问题最多?因为这一层直接承载业务逻辑——代码漏洞、权限缺陷、输入校验失误都暴露在这里。注入、认证绕过、逻辑错误……Web安全里绝大多数问题,归根到底都是应用层的协议实现和业务设计出了问题。
链路层、网络层、传输层的漏洞相对“通用”,打的是协议实现本身;而应用层的攻击则千变万化,因为每个业务系统都不一样。这就是为什么渗透测试里,信息收集和协议分析永远是第一步——你连目标用的什么协议栈、什么服务都没搞清楚,攻击面分析就是空谈。
3. TCP连接管理:三次握手、四次挥手的攻防观察
3.1 TCP握手到底想解决什么问题
TCP要在一根不可靠的信道上建立可靠连接,首先要解决三件事:确认对方在线、确认自己能收到对方的包、协商双方使用的初始序号。三次握手不是多余的礼貌,每一轮都有实际意义。
我用一个打电话类比:你在嘈杂的会场里,拨通对方电话后会先说“喂,听得到吗”(SYN),对方回答“听得到,你也能听到我吗”(SYN+ACK),你再回一句“我也听得到”(ACK)。只有经历了这三轮确认,双方才确信通信链路是可用的。如果只发一轮“喂”就直接说话,万一对方没听到,你说的一切都白费。
3.2 三次握手的报文细节
初学者必须能画出下面的流程,并且能说出每个字段的意思:
- 客户端发送SYN包,初始序号seq=x,进入SYN_SENT状态。
- 服务端收到后,回复SYN+ACK包,确认号ack=x+1,同时带上自己的初始序号seq=y,进入SYN_RECEIVED状态。
- 客户端收到后,发送ACK包,确认号ack=y+1,两端都进入ESTABLISHED状态。
你注意看,第二次握手时服务端把SYN和ACK合并成一个包发送了,这是TCP设计上的一个优化。抓包的时候,三次握手一眼就能认出来:第一个包只有SYN标志,第二个包有SYN和ACK两个标志,第三个包只有ACK标志。
3.3 半连接队列与SYN Flood攻击原理
前面说的三次握手里,服务端在收到SYN但还没收到ACK时,连接处于一个“半开”状态,内核会给它分配一个条目放进半连接队列(也叫SYN队列),等待客户端完成第三次握手。这个队列的大小是有限的。
如果有个攻击者疯狂地向服务器发送SYN包,但永远不回应后续的握手包,半连接队列就会被源源不断的假连接请求塞满。等队列满了,正常用户的SYN包就直接被丢弃,表现为“网站无法访问”。这就是SYN Flood攻击的基本原理——它利用的不是某个代码漏洞,而是TCP握手设计本身的一个资源消耗盲点。
对应的防御思路也很有意思,比如SYN Cookie机制不把半连接放在队列里,而是用Cookie把连接信息编码在SYN+ACK包中,等客户端回ACK时再校验这个Cookie,确认是真实连接才分配资源。所以学习安全一定要养成“从设计动机出发”的习惯:只要理解了握手为什么存在,你就自然理解了这个攻击为什么有效,也理解了防御为什么长这样。
3.4 四次挥手与CLOSE_WAIT、TIME_WAIT
断开连接需要四次挥手,因为TCP是全双工的,通信双方都要独立地关闭各自的发送方向。过程大致是:主动方发FIN,被动方回ACK,然后被动方发FIN,主动方再回ACK。
我最初很不理解,为什么多出这来回两轮,不能像三次握手那样合并吗?后来才明白:被动方收到FIN后,它可能还有数据没发完,所以不能立刻关闭发送方向。它先回ACK告诉对方“我收到你的结束请求了”,等自己的数据发完了,再发FIN表示“我也没东西要发了”。这个一前一后,导致了四次挥手。
挥手之后的两个状态对排查问题极有价值:
- TIME_WAIT:主动关闭方发送最后一个ACK后,不会立刻释放连接,而是等待2个MSL(最长报文段寿命)的时间。这样做是为了保证旧连接的报文段在网络中消失,不会干扰相同端口的新连接。你大量看到TIME_WAIT说明系统处于正常的主动关闭状态,但如果数量异常,可能是短连接建得太频繁。
- CLOSE_WAIT:表示被动关闭方收到了对方的FIN,但自己还没调用close关闭套接字。如果你的服务器出现大量CLOSE_WAIT,几乎可以断定是程序里某个连接没有正常释放——这是排查连接泄漏时最常用的突破口。
3.5 用抓包验证三次握手
只看文字容易看过就忘。我在本机做了个最简单的验证实验:起一个本地Web服务,然后在抓包工具里过滤回环接口,访问一次,立刻就能看到三次握手报文。操作步骤:
- 在本地启动一个Web服务,监听在某个端口。
- 启动抓包工具,选择回环接口开始抓包。
- 用浏览器或命令行工具访问本地服务地址。
- 在抓包工具里设置过滤条件,只保留目标的TCP报文。
- 停止抓包,你会在列表里看到SYN、SYN+ACK、ACK三个连续的报文。
这个实验成本极低,但带来的直观感受是看一百张示意图都比不了的。后面分析任何攻击流量,你都得先在抓包结果里能认出正常的三次握手长什么样,才能发现异常。
4. 地址解析与内网通信:ARP欺骗为什么一直是内网安全的老大难
4.1 ARP协议:IP和MAC之间的“翻译官”
网络层用的是IP地址,链路层用的是MAC地址,两者怎么对应?答案就是地址解析协议(ARP)。当一个主机要和同一网段的另一台主机通信时,它先查看自己的ARP缓存表,看有没有目标IP对应的MAC地址。如果没有,就向整个广播域发送一个ARP请求:“谁的IP是192.168.1.1?请告诉我你的MAC地址。”目标主机收到后会单播回复“这是我的IP,我的MAC是xx:xx:xx:xx:xx:xx”。
看到这里你应该已经意识到一个问题:这个协议建立在“所有人都会诚实回答”的假设上。设计年代里没有恶意用户,所以它根本没有考虑验证应答的真伪。
4.2 交换机为什么不是内网的保险箱
很多人的误区是把交换机当成内网安全的边界,觉得用了交换机大家都隔开了。但交换机隔离的是冲突域,不是广播域。ARP请求本来就是广播发出去的,网段内每一台主机都能收到、也都能回复。
更重要的是,交换机的端口学习机制也不安全:它根据收到的帧的源MAC地址建立端口映射表,但如果攻击者发送大量伪造源MAC的帧,把交换机的MAC表塞满,交换机就会退化为“广播模式”,把帧向所有端口转发,攻击者就达到了端口监听的目的。
4.3 ARP欺骗的原理与后果(只讲原理和防御)
ARP欺骗的核心思路特别简单:攻击者持续向目标主机发送伪造的ARP应答,声称“网关IP对应的MAC地址是我的”,或者“目标主机IP对应的MAC地址是我的”。目标主机的ARP缓存被污染后,发自它的流量就被错误地送到了攻击者的机器上。
后果有三种典型表现:
- 中间人窃听:流量先经过攻击者网卡,攻击者转发给真正的接收方,同时复制一份留给自己。用户名、口令、明文内容全部被截获。
- 内容篡改:攻击者能在转发的过程中修改数据,比如往页面里注入恶意代码。
- 网络瘫痪:攻击者不做转发,直接丢弃接收到的数据,目标主机就“断网”了。
防御手段从几个层面展开:可以在主机上配置静态ARP表,固定网关和关键主机的MAC映射;可以在交换机上做端口安全,限制每个端口的MAC学习数量;更专业的是在交换机上启用动态ARP检测(DAI),对ARP报文进行合法性校验。理解这些防御才知道,内网加固不是光靠防火墙就完事的。
4.4 子网、网段与内网渗透的关联
学网络的时候你可能觉得子网划分是纯理论,实际做内网渗透就发现这是底层地图。目标主机处在哪个网段,决定了攻击者能否直接访问、需不需要通过跳板机转发。攻击者拿下一台机器后,第一件事就是查看它的IP配置和路由表,确认它在什么位置,然后判断这个位置能触达哪些其他网段。
很多人在学习时忽略网段拓扑的意义,导致后面做横向移动时举步维艰。我建议第一阶段就养成习惯:每一个实验环境,第一件事不是装工具,而是先画一张网段和网关的拓扑图。
5. DNS与HTTP:安全从业者最常打交道的两个应用协议
5.1 DNS解析的完整链条
输入网址到拿到IP地址,这个过程的细节远比想象中多。浏览器先查操作系统里的hosts文件,没命中再查本机DNS缓存,还没命中才把查询请求发给系统配置的DNS服务器。这个配置的DNS服务器会执行递归查询:它先问根域名服务器“.com由谁负责”,再问顶级域名服务器“example.com由谁负责”,最后问权威域名服务器“www.example.com的IP是多少”,然后把结果逐级返回,同时按TTL时间缓存下来。
安全视角看DNS,核心是把这条链路上的每个环节都变成可审查的点:hosts文件有没有被改、本机缓存有没有被污染、配置的DNS服务器是不是可信的、查询过程中的应答是不是正确的。第36页的博文里我写了自己排查DNS问题的经验,这里就不再重复。
5.2 DNS劫持的主要思路与检测认知
DNS劫持之所以危险,是因为用户无法直观感知。常见的劫持入口有这几类:终端上的配置被篡改(把DNS服务器指向恶意解析服务)、本地hosts文件被写入恶意条目、网络中有人篡改DNS应答包,以及更隐蔽的缓存投毒。普通用户层面能做的检测有限:一是对比不同来源的解析结果是否一致,二是注意浏览器对证书异常的警告不能随手忽略。作为安全学习者,理解这个链路的存在比掌握某个具体工具更重要——你要能在面对异常网络环境时想到“DNS层面的问题”这个排查方向。
5.3 HTTP报文四件套
HTTP是最“亲民”的应用层协议,但很多初学者对报文的细节理解是错位的。一个HTTP请求由四部分组成:请求行、请求头、空行、请求体。请求行包括方法、URI、协议版本,比如“GET /index.php HTTP/1.1”;请求头是键值对,携带Host、User-Agent、Cookie等信息;空行是边界标志;请求体在GET请求里通常为空,在POST请求里携带表单数据。
响应报文的结构对称:状态行、响应头、空行、响应体。状态行里的状态码就是服务端给客户端的结果码。
5.4 状态码速查与安全意义
| 状态码 | 含义 | 安全意义 |
|---|---|---|
| 200 | 请求成功 | 正常 |
| 301/302 | 重定向 | 注意跳转是否可被伪造,开放重定向风险 |
| 401 | 未认证 | 需要身份验证,可尝试绕过 |
| 403 | 禁止访问 | 权限控制生效,可能还有路径绕过机会 |
| 404 | 资源不存在 | 信息泄露少,但目录扫描常伴随大量404 |
| 500 | 服务端内部错误 | 可能泄露堆栈和错误详情,排查配置问题 |
| 502/503 | 网关/服务不可用 | 反代理异常、后端挂掉 |
我在信息收集时最关注的是401和403的区别。401说明资源需要身份凭证,认证机制可以成为研究目标;403说明服务端知道你是谁但拒绝你访问,这时要思考的是有没有权限绕过、路径穿越、方法篡改的可能。
5.5 Cookie与Session:会话管理的安全链条
HTTP是无状态协议,服务端不记得你上一次请求做了什么。为了让“登录状态”能跨请求保留,就有了会话机制:用户登录成功后,服务端生成一个会话标识,写入客户端的Cookie里,后续请求带上这个Cookie,服务端据此恢复会话状态。
这套机制的安全问题集中在会话标识的保密性和不可预测性上。如果会话标识是简单的递增数字,攻击者可以枚举;如果通过JavaScript注入和网络窃听拿到会话标识,就能冒充目标用户请求——这就是会话劫持的基本链路。另一类问题是会话固定:攻击者先自己获取一个有效的会话标识,诱惑受害者去使用这个标识登录,登录后攻击者因为提前知道标识就能直接复用受害者的会话。理解了这个链条,你再看很多Web安全漏洞,会发现它们都是在“会话标识的全生命周期”的某个环节出了纰漏。
5.6 HTTPS的TLS握手:加密不等于万灵药
HTTPS就是在HTTP外层套了一层TLS加密。TLS握手简化的过程是:客户端发起连接并携带支持的加密套件,服务端返回证书并选定算法,客户端验证证书合法性后生成会话密钥,双方协商完成后用对称加密通信。这个设计解决了两个最关键的问题:验证服务端身份(通过证书链)和加密传输内容。
但学安全的人必须清醒:TLS解决的是传输链路上的窃听和篡改问题,完全不管应用层业务逻辑的漏洞。一个伪造的登录接口、一个参数可篡改的业务流程,即使跑在HTTPS上也一样危险。另外,证书校验的薄弱环节经常是提示被忽略的警告——这才是很多中间人攻击得逞的原因。看到证书警告就敲一下“继续访问”的习惯,几乎是致命的。
6. 动手阶段怎么练:三个实验把网络知识焊死
6.1 实验一:本地抓包观察三次握手和四次挥手
网络知识光看不练是记不住的,抓包是性价比最高的实验方式。我在本机起了一个临时Web服务,然后抓回来访请求的全部过程,亲眼看到了三次握手和四次挥手。建议按这个流程走一遍:
- 启动抓包工具监听回环接口。
- 使用命令行工具或浏览器访问本地服务。
- 停止抓包,过滤进出的TCP报文。
- 找出一对连接的四次挥手过程,观察FIN、ACK的交替顺序。
做完之后可以给自己提几个问题:第三个握手ACK里,确认号是多少?挥手时是客户端先发FIN还是服务端先发FIN?这两个问题能回答清楚,说明你真正理解了握手挥手的原理。
6.2 实验二:用扫描工具理解端口探测原理
端口扫描本质上是向目标主机的若干端口发送探测包,观察反应。一个最基本的思想是:如果对主机发送连接的请求,目标端口返回了响应,就说明这个端口是开放的。我用老牌的扫描工具Nmap对本机做了一次扫描,然后对照抓包结果,理解了两种典型扫描方式的差异。
特别注意:扫描实验只能在你自己的机器、自建的虚拟机上做,任何未授权的扫描行为都是违法的。学习的重点是理解原理,不是追求扫描的“杀伤力”。扫描器只是自动化地完成你手工抓包也能验证的过程,它的输出不是魔法。
6.3 实验三:搭一张三网段的实验网络
虚拟机技术让搭网络实验的成本降到了几乎为零。我建议第一阶段做一个经典实验:三台虚拟机分别处在三个不同网段,中间一台充当路由器,手动配置路由表让两端通信。
步骤大致是:
- 创建三台虚拟机,配置不同的网络接口。
- 设置中间虚拟机的IP转发功能。
- 在两端的机器上配置静态路由指向中间虚拟机。
- 使用ping命令测试跨网段连通性,再用路由跟踪命令观察数据包经过的路径。
这个实验会让你直观理解路由、网关、子网这些概念。做一次之后,再看内网拓扑图就不会发怵了。
6.4 过关自测清单
我给自己列了一份问题清单,每个阶段结束都会拿来自测。你如果大部分问题都能不看资料回答上来,这一阶段就算真正过了:
- 一个数据包从浏览器到服务器,依次经过哪几层封装?
- /24子网里有多少可用主机地址?网络地址和广播地址分别是什么?
- TCP三次握手每步的SYN/ACK标志和序号变化是什么?
- 半连接队列耗尽会导致什么现象,SYN Cookie的思路是什么?
- 四次挥手为什么是四次,TIME_WAIT和CLOSE_WAIT分别代表什么?
- ARP欺骗让目标主机把流量发给自己,利用了协议的什么弱点?
- 交换机的MAC表被塞满后会发生什么?
- DNS递归查询和迭代查询的区别是什么?
- HTTP请求的四个组成部分分别是什么?
- 401和403状态码的语义有什么本质区别?
- 会话固定攻击和会话劫持攻击的核心区别是什么?
- 假定用户忽略了证书报警,HTTPS是否能防止中间人攻击,为什么?
6.5 第一阶段常见踩坑
几个容易让人卡住的坑,我顺手记录一下:
- 五元组概念一定要记牢。源IP、目标IP、源端口、目标端口、传输层协议,这五个元素唯一确定一条TCP连接。排查任何连接问题,先从五元组下手。
- DNS缓存会骗人。改完域名解析不生效,先清本地DNS缓存,不然排查半天其实是旧缓存的结果。
- 抓包别乱抓公网流量。在自己实验环境里抓回环流量、虚拟网卡流量就够了,随便抓公网流量既涉及隐私风险,又容易把自己绕晕。安全学习的第一原则是自己搭建环境,一切实验在授权范围内进行。
7. 阶段复盘:网络基础这一关怎么算真的过了
写完这篇笔记回头整理,我发现计算机网络这一关卡住了很多人,不是因为它难,而是因为它确实枯燥。但换个角度想:协议本身就是把前人的设计决策和经验教训压缩在报文格式里,你看懂了,就等于站在前人的肩膀上重新设计了一遍互联网。
我个人在学完这个阶段后最明显的变化,不是记住了多少命令,而是看问题的方式变了。以前拿到一个环境,我想到的是“装什么工具”,现在第一反应是“这个环境的数据通路是怎么设计的,网关在哪,哪些流量会经过谁,我能触达哪些网段”。这种从“数据如何流动”出发的思维方式,让我后面学漏洞利用、流量分析、内网渗透都顺畅了很多。
最后分享一个我一直在用的学习习惯:学完一个协议,试着把它讲给一个完全不懂技术的朋友听,如果能用大白话让对方听懂为什么TCP要握手、为什么ARP不可信,那才是真的把知识内化了。第一阶段的路走得慢一点没有关系,地基这件事,急不来。