Scapy 是一个强大的数据包处理工具,可以轻松的按照层次构建网络包, 比如这样
1 | packet = Ether()/IP(dst="192.168.0.1")/TCP(dport=80)/b'data' |
Scapy 是一个强大的数据包处理工具,可以轻松的按照层次构建网络包, 比如这样
1 | packet = Ether()/IP(dst="192.168.0.1")/TCP(dport=80)/b'data' |
OSI 五层协议
物理层:一般是基于电信号进行 bit 流传输
数据链路层: 定义 bit 信号分组方式,常见的协议是 以太网协议 (Ethernet)
Ethernet 数据帧 [帧头,数据,帧尾]
网络层: 划分广播域 / 子网, 一般网络层都是 IP 协议
IP 数据帧 [报头,数据]
传输层: 建立端口到端口的通信, 常见传输层协议有 TCP/UDP
TCP 基于连接,提供可靠传输,面向字节流,三次握手 / 四次挥手 (创建 / 断开连接), 粘包 / 拆包,timewait, 报文头长,总体传输慢,窗口, 拥塞控制
UDP 无连接,尽可能快,不可靠传输,面向报文,过长报文会被分片
应用层
使用 Wireshark 分析数据包时,一般关注的是后面三层, 每层的报文头中都包含了特定信息,在数据层存放更上层的数据
函数调用约定(Calling Convention)是规定函数在栈上的参数传递和清理方式的约定。不同的编程语言和编译器可能使用不同的调用约定,主要有以下几种常见的函数调用约定:
1 | #ifdef __cplusplus |
extern "C"
修饰的变量和函数按照 C 语言方式编译和连接
位运算是计算机中最常用的操作之一, 运用好位运算可以在特定情况下大幅提高计算效率
正数的原反补码都是自身 负数的补码为原码取反,符号位不变; 补码为反码加 1, 符号位需要进位时丢弃进位符号位变 0 (进位溢出) 计算机中的数字都是以补码表示
以 char (signed char, 1 字节) 为例
1 | 0 = 0000 0000 b |
Arch 是众多 Linux 发行版中的其中一个,但是它比较纯净, 同时安装也相比于其它的 Linux 发行版复杂一些, 从头安装一个 ArchLinux 可以学习不少 Linux 知识
推荐按照官方的安装教程一步步执行: https://wiki.archlinux.org/title/Installation_guide
最好阅读英文版,更新日期比较新
以下是折腾 Arch 的记录
手头上的旧手机为小米 6, 本文可能部分内容只在小米 6 上适用 [xiaomi 6 sagit]
且本文主要讨论 LinuxDeploy (需要 root) 的方式, 非 root 用户可使用 Termux 方式
现在多少年轻人都莫名其妙的大病或猝死, 不好的生活习惯会让我们的身体一直处于亚健康状态, 后面可能任何一个小的触发点都能是压垮骆驼的最后一根稻草, 比如生个气喝个酒甚至猛然的剧烈运动一下都可能直接人没了
原文地址: const 和 constexpr 区别与联系
提到 const 和 constexpr, 就需要引入常量表达式。常量表达式是指值不会改变, 并且编译过程就能得到计算结果的表达式. => 编译阶段就能得到值, 并且不能改变.
让人上瘾,又伤心、伤脑…… 这味调料家家都有,但劝你别多吃!
2022-03-01 14:00 来源: CCTV 回家吃饭
糖果、冰激凌、蛋糕、饼干、巧克力…… 甜食让不少人欲罢不能, 情绪不好时来一口,感觉整个世界都明媚了;时下的网红饮品奶茶, 更是被戏称为 “肥宅快乐水”, 深受年轻人的喜爱~
殊不知,大快朵颐的同时,甜食更像是一位隐形的 “甜蜜杀手”, 不仅会让人慢慢 “上瘾”, 还会悄悄摧毁着你的身体!