自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hulk

愚公移山

  • 博客(132)
  • 收藏
  • 关注

原创 IKEV1

介绍ipsec IKE流程

2023-03-15 21:18:51 1249

原创 基本密码技术

先将明文分组与前一个密文分组进行XOR操作,再进行加密。单向散列函数有一个输入一个输出,输入为消息,输出为散列值Hash。由于第一个明文分组不存在前一个密文分组,使得需要准备一个长度为一个分组长度的初始化向量IV.该模式中,前一个密文分组会送回到密码算法的输入端,所谓反馈,这里是指返回输入端的意思。输入为消息以及发送和接收者之间的共享秘钥key,输出为固定长度的数据。每个分组对应一个逐次累加的计数器,并通过计数器进行加密来生成秘钥流。GCM是一种既认证,又加密的技术,其中C为CTR模式。

2023-02-26 16:22:57 783

原创 以太网要点

LLC与MACLLC逻辑链路控制 和 MAC介质访问控制, LLC是IEEE定义的机制,作用是识别以太网帧携带的数据,MAC层定义了用来随机访问的以太网系统的协议。以太网帧帧开头是64位的帧头域,作用为在实际内容来之前同步数据流,SFD结束表示帧内容到来。但是高速以太网系统采用更复杂的机制进行信号编码,以避免信号启动丢失,不需要帧头保护,但是为了兼容低速以太网,仍然保留。但是,当帧传递到以太网接口的时候,该帧头会自动剥离。数据域长度为46-1500,但是若存在801.1Q标.

2022-03-09 22:07:51 1417

原创 (2) wireshark一些特性

1. 相对seq切换实际seqSeq的初始值理论上是一个随机值,但是wireshark可以把它设置为从0开始的相对值:在编辑-首选项-protocols-TCP 取消相对seq:2. TCP确认号TCP 发出的确认号 = 上一个接收报文的seq + 上一个接收报文的len。三次握手不套用这条公式(需要seq+1)。但是,len == 0 并不代表没有意义,该Len并不包括tcp的头部信息,其实也表示有一个报文。3. Tcp接收窗口TCP接收窗口表示发送

2022-02-22 21:15:51 1891

原创 (1) wireshark基本操作

1. 标记数据包选中报文,右击,选择标记,该报文显示黑色。2. 设置相对时间选择某个报文时间为基准时间0,后面报文时间相对于此偏移。选择报文右击,选择设置时间参考。3. 包过滤设置一些选项,过滤报文。ip.src == 1.1.1.1ip.dst == 2.2.2.2ip.addr == 3.3.3.3tcp.port == 80tcp.port <= 80tcp.srcport == 80tcp.dstport == 80tcp

2022-02-21 21:19:40 3842

原创 vim (11) 自动补全

vim自动补全可以在 插入模式 下触发。当在插入模式下,可以先输入单词前面几个字母,然后按 ctrl p 或者 ctrl n 进行反向/正向 选择匹配的单词。ctrl e 终止补全,将补全窗口关闭。

2021-10-24 20:06:37 872

原创 vim (10) vimgrep

vim下的搜索,:grep 允许不离开编辑器的情况下调用外部程序,:vimgrep命令允许通过vim自带的查找引擎,在多个文件中查找指定的模式。举例:在当前目录下查找test关键字(*表示当前目录,**表示当前目录和子目录)::grep test *不区分大小写检索: :grep -i test * 以下命令,可以对检索结果进行操作::cn 查找下一个匹配:cp 查找上一个匹配:cw 打开quickfix:cclose 关闭qui...

2021-10-24 19:45:39 1477

原创 vim (9) ctags建立索引

ctags是一个外部程序,通过扫描代码库,生成关键字索引,使得可以快速跳转到函数或变量定义处。ubuntu安装:sudo apt-get install exuberant-ctags查看:chk@ubuntu:~$ ctags --versionExuberant Ctags 5.9~svn20110310, Copyright (C) 1996-2009 Darren Hiebert Addresses: <[email protected]&g..

2021-10-22 20:49:41 1004

原创 vim (8) 替换

substitute 简称 s,替换时,可携带以下标志符:g 在全局范围内,而不仅仅是第一处匹配。c 确认或拒绝每一处的修改 (y:替换此处匹配 n:忽略此处匹配 q:退出替换过程)举例::%s/old/new/gcs前不加%表示当前行。...

2021-10-20 21:25:56 67

原创 vim (7) 查找

普通模式下, 按下 / (正向) ? (反向)调用vim的查找提示符,输入查找字符,回车进行查找。ESC键从查找模式返回普通模式。n 跳转到下一个匹配N 跳转到上一个匹配

2021-10-20 21:13:03 83

原创 vim (6) 复制粘贴

dd 剪切一行,该行内容存储在寄存器中,可用于粘贴。de 剪切从光标开始位置的剩余单词。yy 复制一行到寄存器中。p 将寄存器中的内容粘贴到光标之后P 将寄存器中的内容粘贴到光标之前...

2021-10-20 20:49:00 74

原创 vim (5) 文档中移动

h: 左移l: 右移j: 下移k : 上移w: 正向移动到下一个单词的开头b: 反向移动到当前/上一个 单词开头e: 正向移动到当前/下一个 单词结尾

2021-10-17 20:28:55 63

原创 vim (4) 命令行模式

输入 : 进入命令行模式,输入命令之后,回车执行。在命令模式下,ctrl d 进行命令的补全。在命令模式下,@: 重复上次命令。原始文本::n 光标跳转到第n行:2,4 yark 复制2~4行,并放入寄存器:2,4 delete 删除2~4行,并放入寄存器:10 put 在第10行后粘贴寄存器中的内容:1,4 copy 10 将1~4行复制到10行之后:1,4 move 10...

2021-10-17 19:44:37 364

原创 vim (3) 可视模式

vim的可视模式允许选中一块文本区域并在其上进行操作,有3种不同的可视模式:操作字符文本,行文本,块文本。v: 激活面向字符的可视模式 (上下左右可选中字符或者行)V: 激活面向行的可视模式 (只能通过上下选中行)Ctrl v: 激活面向列块的可视模式 (可选中多行进行左右移动)...

2021-10-16 20:35:00 398

原创 vim(2) 插入模式

在插入模式下也可以执行一些命令。i : 进入插入模式ESC: 返回普通模式原始文本:ctrl w :删除前一个单词:ctrl u :删除到行首:

2021-10-16 20:15:08 274

原创 vim (1) 普通模式

1. 删除原文本:dw: 删除该光标以及之后的单词部分:x: 删除光标所在的字符:daw: delete a word (d2w: 删除2个单词)dd: 删除一整行2.撤销与重逢u: 撤销上一次操作. :重复上一次操作...

2021-10-16 19:57:06 125

原创 状态机编程 (三) 层次状态机实现

层次式状态嵌套可以通过从超类继承全部共同的东西,而得到新的行为,可以通过定义和现有状态的不同之处而快速定义新的状态,而不是每次从头开始创建每一个新的状态。层次式概念图:需要定义一个函数切换的宏,以进入不同层次的状态机:typedef void (*SM_FUN) (int, int);#define SUCCESS 0#define CHANG_SM(fun) ((SM_FUN)fun, SUCCESS)void sm_fun_level1(int state, i..

2021-08-04 21:28:36 981

原创 状态机编程 (二) 标准状态机实现

状态机的典型实现方法:嵌套的switch语句 状态表 面向对象的状态设计模式嵌套的switch语句

2021-08-04 20:46:58 733 1

原创 状态机编程 (一) 状态机相关概念

基本概念状态机编程,又称事件驱动型编程。事件驱动程序需要一系列的精细粒度的事件处理函数来处理事件。这些事件函数必须处理的很快并返回主事件循环。所以其非常依赖于通过使用静态变量维护在从一个事件驱动函数转换到下一个执行函数时的执行上下文。大多数事件驱动型系统行为可以被分解为相对小数目的块,在每个单独的块的事件响应实际上取决于当前的事件类型。行为的快被称为状态,行为的改变对应着状态的改变,称为状态装换。状态机与流程图的区别在于,当状态机停在某个状态等待一个事件时,是空闲的;而流程图停留在某个节

2021-08-01 20:28:07 1850

原创 GUN make (11) ISS makefile 架构

2020-06-08 20:25:48 197

原创 GUN make (10) make的约定

1. 基本约定1.1 所有的makefile中应该包含:SHELL = /bin/sh目的是为了避免变量SHELL在有些系统上可能继承同名的系统环境变量而导致错误。1.2 不同make可识别后缀和隐含规则可能不同,需要明确限定可识别后缀:.SUFFIXES: #取消make默认的可识别后缀.SUFFIXES:.c .o #重新指定可识别的...

2020-03-12 21:11:54 151

原创 GUN make (9) make的静态库文件

静态库文件也称为 文档文件, 是由一些 .o 文件的集合。在linux中使用工具 ar 对其进行维护管理。1. 库成员作为目标库成员作为目标时,使用如下格式:ARCHIVE(MEMBER) #表示库ARCHIVE的成员MEMBER。同时指定库的多个成员:foolib(hack.o dge.o) #等价于 foolib(hack.o) foolib...

2020-03-12 20:37:28 143

原创 GUN make (8) make的隐含规则

隐含规则为make提供了一类目标文件通用方法,不需要在makefile中明确的给出重建特定目标文件所需的细节描述。只要目标文件中除后缀以外其他部分相同,make都能够使用若干隐含规则来最终产生这个目标文件。对应关系:EXENAME.o 对应 EXENAME.cEXENAME 对应 EXENAME.o1.隐含规则的使用foo:foo.o cc -o ...

2020-03-11 21:56:54 164

原创 GUN make (7) 执行make

1. 替代命令的执行在某些时候,并不希望更新那些已经过期的目标文件(比如只是检查更新目标的命令是否正确,或者查看那些目标需要更新)。可以通过一些特定的参数限定make执行的动作,来替代make默认动作的执行。-n --just-print--dry-run--recon指定make执行空操作,只打印需要重建目标使用的命令,而不对目标进行重建。-t --tou...

2020-03-09 20:35:59 177

原创 UN make (6) makefile的条件执行

条件判断的基本语法:CONDITIONAL-DIRECTIVETEXT-IF-TRUEelseTEXT-IF-FALSEendif其中,CONDITIONAL-DIRECTIVE为判断条件判断语句:判断是否相等:ifeq (ARG1,ARG2)ifeq 'ARG1' 'ARG2'ifeq "ARG1" "ARG2"ifeq "ARG1" 'ARG2'ifeq 'A...

2020-03-08 20:30:53 142

原创 GUN make (5) makefile中的变量

makefile中的变量具有以下特征:makefile中变量和函数的展开是在make读取Makefile文件时进行的。 变量名不包括 : # = 前置空白 尾空白 的任何字符串。 变量名大小写敏感。1.变量的引用变量引用的展开方式是严格的文本替换过程,与C语言中的宏展开过程相同。变量的引用方式:$(VAR)${VAR}$X //仅限于单字符...

2020-03-07 21:11:37 186

原创 GUN make (4) 规则的命令

规则的命令是由一些shell命令行组成,被一条一条执行。通常系统中存在不同的shell,但在make处理Makefile过程中,如果没有明确指定,那么对所有规则中的命令行解析使用 “/bin/sh” 完成。1. 命令回显回显是指在执行命令之前将要执行的命令输出到标准输出设备。@参数:如果命令行以 @ 开始,则make在执行这个命令时不会回显这个要被执行的命令。比如:...

2020-03-04 22:09:25 374

原创 GUN make (3) Makefile的规则

11

2020-03-01 20:31:36 360

原创 GUN make (2) 总述

1.makefile文件的命名默认情况下,make会在工作目录下按照文件顺序寻找makefile文件并执行:GUNmakefile,makefile,Makefile如果make程序在工作目录下无法找到三个文件中的任何一个,它将不读取任何其他文件作为解析对象。此时,需要通过-f NAME / --file=NAME 选项来指定make读取的makefile文件。注:...

2020-02-25 20:21:05 203

原创 GUN make (1) 简介

1. GNU make 介绍make通过比较对应的文件的最后修改时间,来决定哪些文件需要更新,哪些文件不需要更新。当使用make工具进行编译时,工程中以下几种文件在执行make时会被编译:所有的源文件没有被编译过,则对各个C源文件进行编译链接,生成可执行文件。 每一个在上次执行make之后修改过的C源文件在本次执行make时将会被重新编译。 头文件在上一次执行make之后被修...

2020-02-24 20:36:04 996

原创 计算机网络 -- 链路层 (3)点击WEB页面请求后,背后网络发生的事情

1.将www.google.com 输入主机web浏览器,操作系统生成一个DNS查询报文,该报文具有www.google.com以及53端口号,目的IP为DNS服务器地址68.87.71.226, 源IP为主机地址86.85.2.101。2.主机将DNS请求报文放入以太网帧,该帧将发送到主机所在网络的网关路由器中,使用ARP获取网关路由器的MAC作为下一跳MAC地址。于是,主机生成一个具有...

2020-02-20 21:00:32 363

原创 计算机网络 -- 链路层(1)多路访问链路和协议

多路访问是指 多个发送和接收节点对一个共享广播信道的访问。多路访问协议是指 节点通过这些协议来规范他们在共享广播信道上的传输行为。当所有节点同时接到多个帧,则传输的帧在接收方发生了碰撞,当碰撞发生时,没有一个节点能够有效的获得任何传输的帧,则需要多路访问协议来进行协调。多路访问协议有以下3种类型:信道划分协议 随机接入协议 轮流协议1. 信道划分协议1.1 时...

2020-02-19 20:55:10 1099

原创 计算机网络 -- 网络层(2)网络地址转换NAT

NAT使得路由器对于外部世界来说就像一个具有一个单一地址的单一设备。从本质上来讲,NAT使得路由器对外界隐藏了家庭网络的细节。所有离开家庭路由器流向因特网的报文都拥有一个源IP地址138.76.29.7; 所有进入家庭的报文都拥有同一个目的IP地址138.76.29.7; 路由器通过NAT转换表知道它应该将某个分组转发到哪个内部主机。 当报文离开路由器的时候,将源IP替代...

2020-02-13 20:07:11 238

原创 计算机网络 -- 网络层(1)概述

1.网络层功能网络层有两大功能,转发和路由选择。转发:当一个分组到达路由器的一条输入链路的时候,路由器必须将该分组移动到适当的输出链路。路由选择:当分组从发送方流向接收方时, 网络层必须决定这些分组所采用的路由或路径。2.虚电路和数据报网络运输层能够为应用程序提供无连接服务或面向连接服务。网络层同样能够在两台主机之间提供无连接服务或连接服务。仅在网络层提供的...

2020-02-13 19:39:20 496

原创 计算机网络 -- 运输层(3)TCP流量控制与拥塞控制

1.流量控制TCP提供流量控制服务,以消除发送方使接收方缓存溢出的可能。其就是一个速度匹配服务,即发送方的发送速率与接收方应用程序读取速率匹配。TCP让发送方维护一个接受窗口变量来提供流量控制,接受窗口用于给发送方一个指示:该接收方还有多少可用的缓存空间。由于TCP是全双工通信,在连接两端的发送方都各自维护一个接收窗口。连接如何使用接收窗口实现流量控制的呢?主机B通过把当...

2020-01-08 21:43:04 616

原创 计算机网络 -- 运输层(2)TCP可靠性传输实现

因特网的网络层服务(IP服务)是不可靠的,IP不保证数据报的交付,不保证数据报中完整性。TCP在IP不可靠的尽力而为服务至上创建一种可靠数据传输服务。1.累计确认TCP采用累计确认,ACK y 表示字节编号在y之前的所有字节都已经收到。累计确认几种情况:主机A向B发送一个报文段,在发出之后,主机A等待来自主机B系列号为100的报文段。虽然主机B收到了A的报文,但是发往主...

2020-01-06 21:13:11 527

原创 计算机网络 -- 运输层(1)TCP和UDP基础

1.运输层与网络层关系网络层(IP)实现了不同主机之间的通信。 运输层(TCP/UDP)实现了不同主机上的进程之间的通信(通过端口号实现)。2.TCP实现可靠传输方法流量控制,序号,确认,定时器3.多路复用/分解多路分解:将运输层报文段中的内容交付到正确的套接字。(UDP通过二元组实现,TCP通过四元组区分实现分解到响应套接字。) 多路复用:在主机的不同套接字中搜集数据块,为...

2020-01-05 21:20:09 256

原创 缓冲

完全缓冲,在以下情况发生I/O (标准I/O缓冲区大小为8k):缓冲区满; 显式调用fflush; 进程调用exit终止自身;行缓冲,在以下情况发生I/O:遇到换行符 \n; 显式调用fflush; 进程调用exit终止自身;不缓冲:每次调用标准I/O输出函数都发生I/O;...

2019-12-19 22:00:48 129

原创 recvmsg & sendmsg

我们可以把read,readv, recv, recvfrom 调用替换为recvmsg,各类输出函数调用也可以替换为sendmsg。函数原型:ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags);ssize_t sendmsg(int sockfd, struct msghdr *msg, int flags);...

2019-12-18 21:58:15 318

原创 readv & writev

readv和writev特点在于允许单个系统调用读入到或者写出自一个或多个缓冲区。这些操作分别称为分散读和集中写。因为来自读操作的输入数据被分散到多个应用缓冲区中,而来自多个应用缓冲区的输出数据则被集中提供给单个写操作。ssize_t readv(int filedes, const struct iovec *iov, int iovcnt);ssize_t writev(int ...

2019-12-17 22:05:11 593

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除