利用原始套接字实现TCPSYSFlooding:四川大学信息安全实践
1星 需积分: 10 152 浏览量
更新于2024-07-19
收藏 115KB DOC 举报
"四川大学计算机学院、软件学院的一份信息安全实践第十一次作业,涉及使用原始套接字实现TCPSYNFlooding程序的实验报告。实验环境为Red Hat Enterprise Linux虚拟机,通过学习和理解IP及TCP头部结构体,利用网络层原始套接字进行操作。"
本次实验的主要知识点集中在以下几个方面:
1. **原始套接字(Raw Sockets)**:
原始套接字允许程序员访问网络协议栈的较低层次,如网络层或数据链路层。这使得可以直接构建和发送自定义的IP和TCP报文,而不必依赖于高层的协议栈。在实验中,由于仅需要修改IP和TCP头部,因此选择了网络层的原始套接字。
2. **TCP SYN Flooding攻击**:
这是一种拒绝服务(DoS)攻击,攻击者发送大量的SYN请求但不完成三次握手,导致受害服务器的SYN队列积满,无法处理新的连接请求,从而瘫痪服务。实验中,学生需使用原始套接字构造这样的攻击程序,理解其工作原理和危害。
3. **IP和TCP头部结构体**:
实验要求对这两个头部有深入的理解。IP头部包含源和目标IP地址、协议类型、总长度、标识、标志、片偏移等字段;TCP头部则有源和目标端口号、序列号、确认号、数据偏移、标志(如SYN、ACK等)等字段。熟悉这些结构体是构建和解析自定义报文的基础。
4. **Linux系统调用**:
实验代码中涉及了`socket()`、`htons()`等系统调用。`socket()`用于创建套接字,参数`PF_PACKET`表示协议族,`SOCK_RAW`表示原始套接字,`htons()`则是将主机字节序转换为网络字节序,这是在跨网络通信时必要的步骤。
5. **链路层套接字与网络层套接字的区别**:
链路层套接字通常用于嗅探和操纵链路层数据,如以太网帧。而网络层套接字则用于处理网络层数据,如IP包。实验中提到的`packet.c`示例程序是一个使用链路层套接字的嗅探器,而原始套接字实验则更专注于网络层操作。
6. **编程实践**:
实验报告中展示了部分C语言的代码片段,包括创建原始套接字、接收和处理数据包的流程。这部分涉及到如何使用系统调用进行网络编程,以及如何操作和修改IP和TCP头部。
通过这次实验,学生不仅能掌握原始套接字的使用,还能深化对TCP/IP协议栈的理解,特别是IP和TCP协议的工作细节,同时了解到网络安全威胁和防御机制,这对于信息安全领域的学习和实践至关重要。
2018-06-08 上传
2023-06-08 上传
912 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
六芒_龙
- 粉丝: 1
- 资源: 15
最新资源
- turtle-logo:用于Turtle徽标编程语言的MakeCode扩展
- screepsmod-mongo:用MongoDB和Redis替换LokiJS
- Personal-Website:我的个人作品集展示了我的经验和项目
- elirehema:自述文件
- EightInSeven:Minecraft 1.8 1.7.10 的可见性行走算法
- illustrator-scripts-for-mobile:Illustrator脚本的集合,这些脚本可将图层或画板导出到不同密度的PNG(iOS Retina Display,Android设备等)
- Andron
- 安卓电视机大屏显示ui设计
- Assertions:作证断言集
- 正常运行时间:st stitcombe的正常运行时间监控器和状态页面,由@upptime提供支持
- mern:Mern edu应用
- 行业文档-设计装置-一种降低混合机物料残留的方法.zip
- nvim:这是我的nvim点文件。 它已经被配置为在您的系统中自动安装vim-plug
- 疯狂java讲义源码下载-The-Way-I-Learn-Android:我的Android学习之路,主要记录我的android的学习过程,时
- html_rocketseat
- Python库 | FuXi-1.0_rc.dev-py2.5.egg