- 博客(18)
- 收藏
- 关注
原创 系统信号发送函数
在Linux系统中有很多种信号的发送函数,比如kill,raise,abort,以及pause等等,在这里把这几种常见的系统柜信号发送函数做一个总结和对比。killkill函数的作用是给指定的进程发送信号,存在于函数库signall.h中int kill(pid_t pid,int sig);函数调用成功返回0,失败返回-1并设置errno函数的两个参数,第一个表示进程号,表示向指定进...
2020-01-31 11:09:12 457
原创 进程管理命令--ps和top
Linux系统中提供了很多的进程管理命令,用于用户更好的管理进程,这里主要分享两个比价常用的两种,ps和top。ps命令ps即process status,进程状态,在命令行中输入ps即可查看进程的相关信息。命令的格式是 ps [选项] [参数]在命令行敲出ps输出以下信息其中pid指的是进程号;TTY是启动该进程的终端;TIME是所占的CPU时间;CMD是启动该进程的命令一般ps...
2020-01-21 12:02:54 509
原创 TCP协议报文分析
众所周知TCP是面向连接的字节流传输,但是虽然是面向字节流,但是传送单元还是报文段。报文段分为首部和数据两个部分,其中首部是用来存放各种控制信息,对首部进行分析能更好的掌握TCP。先放一个TCP报文的格式图TCP协议报文段各字段分析源端口和目的端口,都是16位,用来存放源端口和目的端口。序号,占4个字节,范围是0-232-1,因为TCP面向的是字节流,所以每个字节都对应一个序号,这里...
2020-01-15 12:25:25 4349
原创 DNS域名解析
所谓DNS域名解析就是把互联网中的命名系统转换成对应的IP地址。互联网中的域名解析系统被设计成C/S结构的数据库系统,称为域名服务器,数据库中存的有域名–IP地址的映射关系。不过大多数的域名解析都是在本地进行解析的,所以总和来说DNS域名解析的效率很高。注:一个域名可能对应多个IP,根据场景,不同的本地域名服务器中对应的IP地址可能是不同的。比如百度在深圳和北京都已一台服务器,那么其中深圳的本...
2020-01-15 11:39:07 264
原创 traceroute的原理与使用
traceroute,路由跟踪,用来跟踪一个分组从源点到终点的整个过程。原理分析traceroute是通过ICMP协议中的时间超时差错报告报文来实现的,他从源主机到目的主机发送一连串的IP数据报p1-pn,并且数据报是无法交付的udp数据报。第一个数据报的TTL设置为1,这样当这个数据报转发到第一个路由器的时候,路由器收到后TTL减1,减完1之后发现TTL变为0,路由器会向源主机发送一个超时差...
2020-01-13 19:58:57 1953
原创 探究网际层协议--ARP和ICMP协议
上一篇文章主要讲述了IP协议的报文分析,今天准备写一篇与IP协议配套使用的协议ICM网际控制报文协议,以及ARP地址解析协议。先放一张图这张图是各层之间的各种协议,其中网络层除了IP还有三大常用的协议,RARP作为逆地址解析协议,适合ARP配套使用的,但是现在已经被淘汰了,IGMP以后有时间再说,今天重点分析一下ICMP和ARP。APR地址解析协议地址解析,顾名思义就是对地址的翻译。在说明...
2020-01-13 12:56:28 354
原创 IP数据报的报文分析
IP协议又叫网际协议,是TCP/IP协议体系中最重要的协议之一,而遵循相同IP协议的物理网络实现了虚拟互联网络,而这种虚拟的互联主要得益于他们遵守相同的数据传输的格式,这种格式的规定主要通过IP协议的报文头部来实现。先放一张IP协议的报文。4位的版本,指明IP协议的版本,通信双方只有使用相同的IP版本才能够实现通信,常用的IP协议版本有ipv4和ipv6.首部长度,表示IP报文头部的长度...
2020-01-12 18:46:03 2476
原创 二叉树的三种遍历方式(非递归)
二叉树是一种数据结构,简单的二叉树的结构可以分为左子节点,右子节点,以及一个指向数据域的指针,二叉树的基本遍历方式可以分为四种,即前序遍历,中序遍历,后序遍历以及层序遍历,这里先讲解前三种遍历方式。我们拿一个二叉树作为例子进行解释说明。树使用如下结构:typedef struct treenode{ int val; struct treenode *left; struct tr...
2020-01-11 18:09:15 396 1
原创 子进程的回收
为何要回收子进程一个进程在终止时会关闭所有文件描述符,释放在用户空间分配的内存,但它的PCB还保留着,内核在其中保存了一些信息:如果是正常终止则保存着退出状态,如果是异常终止则保存着导致该进程终止的信号是哪个。这个进程的父进程可以调用wait或waitpid获取这些信息,然后彻底清除掉这个进程。我们知道一个进程的退出状态可以在Shell中用特殊变量查看,因为Shell是它的父进程,当它终止时...
2020-01-03 17:40:11 709
原创 TCP连接的建立--connect函数
众所周知,TCP是面向连接的协议,我在前面的文章中也有写到过三次握手的过程有兴趣的可以看一看tcp三次握手和四次挥手今天就来看一看socket编程中关于三次握手建立连接的函数–connect我们在这里还是把建立连接的一方抽象为客户端,接收连接的抽象成服务端函数原型#include <sys/socket.h>int connect(int sockfd,const str...
2019-12-31 13:27:18 1734
原创 【Linux系统编程】对mmap的理解
之前第一遍学习mmap的时候很多人都说它有很多优点,也翻了一些大佬的博客,发现并不是很能理解,最近钻研了虚拟内存的知识之后豁然开朗,让我对mmap有了新的认识,在这里简单的总结一下。建议如果大家对一些概念性的东西不是很理解的话可以先看一看《深入理解计算机系统》的第九章,之后你可能会跟我一样豁然开朗哈哈哈。Linux进程虚拟内存学过linux应该对这个图非常了解,从这个图中可以看出Linux...
2019-12-26 16:16:30 288
原创 测试电脑大端小端
在学习linux网络编程的时候,有一个htons函数和一个ntohs函数,他们主要的作用就是进行大小端的转换,后来就有个疑惑,怎么查看自己电脑是大端还是小端。首先理解一下大小端用一张图形象的表示下,地址从低到高,小端的低位放在了低地址,大端的低位放在了高地址下面进行大小端的测试#include <iostream>using namespace std;int mai...
2019-12-21 11:30:37 321
原创 nullptr和NULL的区别
今天同学给我科普了一波NULL和nullptr的区别,在这里做个总结,分享一下首先作为null,c++将其定义为0,但是不同的编译器对NULL和nullptr的定义可能不太相同以vs为例:NULL更趋向被定义为0nullptr更趋向被定义为((void*)0)下面写个例子理解一下:#include <iostream>using namespace std;void...
2019-12-18 13:05:01 314
原创 【网络编程】shutdown与close的区别
本篇文章主要参考《Unix网络编程 卷1》进行总结,如有错误,欢迎指正谢谢????????close#include<unistd.h>int close (int sockfd);sockfd:要关闭的文件描述符(套接字)成功返回0,失败返回-1close的默认行为是把对应的套接字标记为关闭,返回返回到调用进程。之后该套接字不能作为通信套接字使用进行读写操作。在并发服务器下,一...
2019-12-18 11:16:21 310
原创 netstat查看TCP连接状态
这篇文章主要记录一下使用netstat查看tcp连接状态的实例tcp的连接状态主要是通过三次握手和四次挥手进行状态转移,关于三次握手和四次挥手的详情可以看我的上一篇文章《总结三次握手和四次挥手》先上一张状态转移图其中红色线代表客户端的正常状态转换流程黑色虚线表示服务端的正常状态转换流程这里看到了其中有几处红色标号,这是几种异常的状态转换,在这里介绍一下(这里还是抽象主动连接一方为客户端...
2019-12-05 13:18:28 8487
原创 总结TCP三次握手和四次挥手
众所周知,TCP是面向连接的协议,那么建立连接和释放连接就是必不可少的过程。所以在整个数据传输过程中一共分为三个阶段,连接建立、数据传输、连接释放。三次握手作用1.确定通信双方都有收发数据的能力2.通信双方协定一些规则,(进行序号同步,确定双方的接收窗口剩余大小以及单次最大报文字节数等等) 握手过程如同所示,在这里假设连接请求方为客户端A,连接接收方为服务器B,刚开始A处于C...
2019-12-04 22:34:40 355
原创 常用排序算法总结
常用的排序算法总结(一)定义排序算法其实就是通过特定的算法将一组数据或多组数据按照既定的模式或者规则进行排列排序算法稳定性排序的稳定性是指在排序的过程中如果有两个数据的主关键词一致,那么结果如果存在多样性,那么就说明该排序方法不稳定,反之说明稳定。假设a=b,在排序之前a的位置在b的前面,在排序之后a的位置仍然在b的前面,那么说明稳定,反之就代表不稳定。内排序和外排序内排...
2019-12-01 22:17:41 181
原创 记录自己第一篇博客
记录第一次使用博客自己可能常用操作记录下自己可能经常使用的功能的操作方法以及实例快捷键设置文章标题改变文本样式插入链接插入图片插入代码片创建表格设置内容位置(居中,居左,居右)FLowchart流程图导入导出快捷键ctrl+shift+U 插入无序列表ctrl+shift+O 插入有序列表ctrl+B 加粗ctrl+I 字体倾斜ctrl+shift+R 水...
2019-11-30 23:03:18 161
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人