网络安全入门 | TCP/IP协议栈核心协议详解(附攻防案例)

一、网络模型基础:OSI vs TCP/IP

1.1 经典OSI七层模型

7. 应用层 : HTTP/FTP/DNS  
6. 表示层 : 数据加密/压缩  
5. 会话层 : 建立/维护会话  
4. 传输层 : TCP/UDP  
3. 网络层 : IP/ICMP  
2. 数据链路层 : ARP/PPP  
1. 物理层 : 网线/光纤

1.2 实际应用的TCP/IP四层模型

应用层(HTTP/HTTPS/DNS)  
传输层(TCP/UDP)  
网络层(IP/ICMP)  
网络接口层(ARP/Ethernet)

关键差异

  • TCP/IP将OSI上三层合并为应用层
  • 更注重协议的实际实现而非理论分层

二、应用层核心协议剖析

2.1 HTTP/HTTPS

▶ HTTP特性

# 典型请求头示例
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
  • 明文传输
  • 无状态协议(依赖Cookie/Session)
  • 默认端口80

▶ HTTPS安全机制

graph LR
A[客户端] -->|Client Hello| B(服务端)
B -->|Server Hello+证书| A
A -->|验证证书| CA[证书颁发机构]
A -->|生成会话密钥| B
B -->|加密确认| A
  • SSL/TLS加密隧道
  • 混合加密体系(RSA交换密钥 + AES加密数据)
  • 端口443
  • 证书验证(防中间人攻击)

2.2 DNS域名解析

▶ 查询过程

浏览器缓存 → 本地Hosts → 本地DNS → 根DNS → 顶级DNS → 权威DNS

▶ 记录类型

类型说明安全威胁
AIPv4地址记录DNS劫持
AAAAIPv6地址记录DNS缓存投毒
CNAME别名记录子域名劫持
MX邮件服务器记录钓鱼邮件伪造

防御方案

  • DNSSEC扩展(数字签名验证)
  • 使用DoH(DNS over HTTPS)

三、网络层关键协议

3.1 ARP协议

▶ 工作原理

# ARP请求示例(广播)
Sender MAC: 00:11:22:33:44:55  
Sender IP: 192.168.1.10  
Target IP: 192.168.1.1

▶ ARP欺骗攻击

攻击者伪造ARP响应 → 将网关MAC指向自己 → 流量劫持

防御手段

  • 静态ARP绑定
  • 部署ARP防火墙
  • 启用DHCP Snooping

3.2 ICMP协议

▶ 典型应用

  • Ping命令ping -n 5 www.baidu.com
  • Traceroute:路径追踪(TTL递增)

▶ 安全风险

ICMP Flood攻击:伪造大量请求耗尽目标资源

防护建议

  • 限制ICMP流量速率
  • 配置防火墙过滤异常类型

四、高频面试问题

  1. HTTPS握手过程中客户端如何验证证书合法性?
    → 检查颁发机构、有效期、域名匹配、CRL/OCSP吊销状态

  2. 如何检测ARP欺骗攻击?
    → 使用arp -a查看MAC一致性,Wireshark抓包分析异常ARP响应

  3. DNS查询为什么使用UDP协议?
    → 快速响应(单个包完成查询)、降低服务器开销


五、总结与学习建议

协议学习路线

  1. 掌握各协议在模型中的位置
  2. 使用Wireshark抓包分析真实流量
  3. 搭建实验环境复现协议攻击(推荐Kali Linux)
  4. 阅读RFC文档理解技术细节

下期预告:TCP三次握手/四次挥手全解析 & SYN Flood防御实战


✍️ 本文由【mermoy_mumu】原创,转载请注明出处。关注作者获取更多硬核技术干货!

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/977309.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

外包离职了,一周面试了20多场,竭尽全力进了字节......

外包离职之后,一周面试了20多场,最后进了字节跳动,分享一些面试经历,希望能对大家有帮助! 我的面试感受 先说一个字 是真的 “ 累 ” 安排的太满的后果可能就是经常一天只吃一顿饭,一直奔波在路上 不扯这个…

【Qt之QQuickWidget】QML嵌入QWidget中

由于我项目开始使用Widgets,换公司后直接使用QML开发,没有了解过如何实现widget到qml过渡,恰逢面试时遇到一家公司希望从widget迁移到qml开发,询问相关实现,一时语塞,很尴尬,粗略研究并总结下。 对qwidget嵌…

MATLAB在投资组合优化中的应用:从基础理论到实践

引言 投资组合优化是现代金融理论中的核心问题之一,旨在通过合理配置资产,实现风险与收益的最佳平衡。MATLAB凭借其强大的数学计算能力和丰富的金融工具箱,成为投资组合优化的理想工具。本文将详细介绍如何使用MATLAB进行投资组合优化&#…

【报错解决】vue打开界面报错Uncaught SecurityError: Failed to construct ‘WebSocket‘

问题描述: vue运行时正常,但是打开页面后报错 Uncaught SecurityError: Failed to construct WebSocket: An insecure WebSocket connection may not be initiated from a page loaded over HTTPS. 解决方案: 在项目列表中的public下的ind…

2.3 变量

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 变量是用来存放某个值的数据,它可以表示一个数字、一个字符串、一个结构、一个类等。变量包含名称、类型和值。在代码中…

【学习笔记】Google的Lyra项目:基于神经网络的超低比特率语音编解码技术

一、引言:语音通信的带宽挑战与技术突破 在实时音视频通信占据全球数字化生活核心地位的今天,Google于2021年推出的Lyra编解码器标志着语音编码技术进入新的时代。这款基于机器学习的新型音频编解码器以3kbps的极低比特率实现接近原始音质的语音重建能力…

力扣3464. 正方形上的点之间的最大距离

力扣3464. 正方形上的点之间的最大距离 题目 题目解析及思路 题目要求在points集合中找出k个点,k个点之间的最小的曼哈顿距离的最大值 最大最小值的题一般直接想到二分 将正方形往右展开成一条线,此时曼哈顿距离为两点直线距离**(仅起点右边的点)** …

【Java】多线程和高并发编程(四):阻塞队列(上)基础概念、ArrayBlockingQueue

文章目录 四、阻塞队列1、基础概念1.1 生产者消费者概念1.2 JUC阻塞队列的存取方法 2、ArrayBlockingQueue2.1 ArrayBlockingQueue的基本使用2.2 生产者方法实现原理2.2.1 ArrayBlockingQueue的常见属性2.2.2 add方法实现2.2.3 offer方法实现2.2.4 offer(time,unit)方法2.2.5 p…

Crack SmartGit

感谢大佬提供的资源 一、正常安装SmartGit 二、下载crackSmartGit crackSmartGit 发行版 - Gitee.com 三、使用crackSmartGit 1. 打开用户目录:C:\Users%用户名%\AppData\Roaming\syntevo\SmartGit。将crackSmartGit.jar和license.zip拷贝至 用户目录。 2. 用户…

性能巅峰对决:Rust vs C++ —— 速度、安全与权衡的艺术

??关注,带你探索Java的奥秘!?? ??超萌技术攻略,轻松晋级编程高手!?? ??技术宝库已备好,就等你来挖掘!?? ??订阅,智趣学习不孤单!?? ??即刻启航,编…

面试题 - Vue 3 如何优化性能?

面试题 - Vue 3 如何优化性能? 最近,总有小伙伴来问我,在面试时应该如何回答关于优化方面的问题。其实,我们在日常的项目开发中,或多或少都接触过一些优化技巧,只是有时候自己没有特别留意,或者…

easyexcel和poi同时存在版本问题,使用easyexcel导出excel设置日期格式

这两天在使用easyexcel导出excel的时候日期格式全都是字符串导致导出的excel列无法筛选 后来调整了一下终于弄好了,看一下最终效果 这里涉及到easyexcel和poi版本冲突的问题,一直没搞定,最后狠下心来把所有的都升级到了最新版,然…

MTK-Android13-包安装器PackageInstaller 静默安装实现

目的 我们最终是为了搞明白安装的整个流程。一方面通过安卓系统自带的包安装器来了解PMS 安装流程;另一方面熟悉框架层Framework 针对Android apk 安装流程。 前两篇文章分析了PackagerInstaller 安装流程。 Android13-包安装器PackageInstaller-之apk安装跳转 An…

MacOS本地部署Deepseek,不联网也可以使用AI,保护隐私

苹果笔记本本地部署deepseek主要用到Ollama与open-webui 1. 安装Ollama “Ollama” 是一个轻量级的 AI 模型运行时环境(runtime),旨在简化在本地部署和使用大语言模型(LLM)的过程。它由 Vicarious 公司开发&#xff…

Golang笔记——Interface类型

大家好,这里是,关注 公主号:Goodnote,专栏文章私信限时Free。本文详细介绍Golang的interface数据结构类型,包括基本实现和使用等。 文章目录 Go 语言中的 interface 详解接口定义实现接口空接口 interface{} 示例&…

docker容器网络配置及常用操作

Linux内核实现名称空间的创建 ip netns(网络名称空间)命令 可以借助ip netns命令来完成对 Network Namespace 的各种操作。ip netns命令来自于iproute安装包,一般系统会默认安装,如果没有的话,请自行安装。 注意&am…

leetcode - hot100 - python - 专题二:双指针

1、移动0 (一句话概括题眼:右指针找非0元素) 简单 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例…

【玩转 Postman 接口测试与开发2_020】(完结篇)DIY 实战:随书示例 API 项目本地部署保姆级搭建教程(含完整调试过程)

《API Testing and Development with Postman》最新第二版封面 文章目录 最新版《Postman 接口测试与开发实战》示例 API 项目本地部署保姆级搭建教程1 前言2 准备工作3 具体部署3.1 将项目 Fork 到自己名下3.2 创建虚拟环境并安装依赖3.3 初始运行与项目调试 4 示例项目的用法…

【第五节】C++设计模式(创建型模式)-Prototype(原型)模式

目录 一、问题背景 二、 模式选择 三、讨论总结 一、问题背景 在软件开发中,有时我们需要通过已有对象来创建新对象,而不是从头开始构建。这种需求让我想起了现代制造业中的 3D 打印技术。通过扫描一个现有的物体,3D 打印机可以快速复制出…

next.js-学习2

next.js-学习2 1. https://nextjs.org/learn/dashboard-app/getting-started2. 模拟的数据3. 添加样式4. 字体,图片5. 创建布局和页面页面导航 1. https://nextjs.org/learn/dashboard-app/getting-started /app: Contains all the routes, components, and logic …