LINUX/网络
草戍无心
这个作者很懒,什么都没留下…
展开
-
TCP的学习记录汇总
*一,TCP的服务: TCP全双工的一对一通信,不能用于广播和多播。提供可靠的,面向连接的字节流服务 。 如何可靠的: 1.应用数据被分割成TCP认为最适合发送的数据块(在三次握手时,可协商MSS的大小,双方都通告自己期望的MSS,若有一方没有接收,默认536),防止IP层发生IP分片导致发送失败重传。 2.当TCP发送一个段后,会启动一个定时器,等待目的端确认收到,如果不能及时收到回复则...原创 2018-05-01 17:00:15 · 196 阅读 · 0 评论 -
x86内存相关(32位)
《程序员的自我修养》中介绍详细 带着相关问题分析: 1>为什么要引入虚拟内存 2>内存分布及各部分详解 3>分页分段机制 4>如何进行地址映射Q:为什么要有虚拟内存?? A:有了虚拟内存,每个进程都独享一个较大的空间,这样能够用占用内存更大的程序。虚拟内存分布图128M预留空间:禁止访问.text(代码段) 可执行文件加载...原创 2018-06-09 15:15:18 · 420 阅读 · 0 评论 -
epoll的一些总结
epoll介绍 epoll是一种当文件描述符的内核缓冲区非空的时候,发出可读信号进行通知,当写缓冲区不满的时候,发出可写信号通知的机制。使用DEMO#define MAX_EVENTS 10struct epoll_event ev, events[MAX_EVENTS];int listen_sock, conn_sock, nfds, epollfd;epo...原创 2018-06-08 16:16:08 · 213 阅读 · 0 评论 -
网络嗅探器设计(三)
用到的libnet中定义的协议首部,以及类型。按照posix标准,一般整形对应的*_t类型为:1字节 uint8_t2字节 uint16_t4字节 uint32_t8字节 uint64_t转换:ntohs ==> 16位网络转主机htons ==> 是将整型变量从主机字节顺序转变成网络字节顺序inet_nto...原创 2018-06-07 17:19:48 · 527 阅读 · 0 评论 -
LINUX命令
文件 ps:列出系统中的进程-A理出所有进程-a列出当前终端的进程-c列出进程的真实名称-H列出树状结构cat:将整个文件显示在目录上more:分屏显示空格为下一页,b为上一页more +6 main.c 从第三行开始more -5 main.c 每次显示五行more +/char main.c 第一次出现char的位置开始打印ls -l | more -5 ...原创 2018-05-23 23:10:05 · 110 阅读 · 0 评论 -
网络嗅探器设计(二)
//系统和本机信息===>#include<sys/utsname.h> struct utsname { char sysname[_UTSNAME_SYSNAME_LENGTH];//当前操作系统名 char nodename[_UTSNAME_NODENAME_LENGTH];//网络上的名称 char r...原创 2018-05-27 13:32:55 · 759 阅读 · 0 评论 -
网络嗅探器设计(一)
功能 @网络数据包的截取 扫描主机上的网络接口,使用Libcap 库截取数据报文 @主机端口扫描 指定要扫描的主机,以及要扫描的端口范围,构造TCP 数据报文,扫描目标主机端 @返回端口状态,端口服务类型 网络层数据报文分析 @分析数据报文,处理IP,ARP,RARP 数据报文 将IP 数据报文交给下一层再做进一步分析 @传输层数据报文分析 ...原创 2018-05-26 19:11:56 · 2700 阅读 · 1 评论 -
nginx内存池学习
特点 优点: 将大量小内存的申请聚集到一块,能够比malloc 更快 减少内存碎片,防止内存泄漏 减少内存管理复杂度 缺点: 造成内存空间浪费,以空间换时间内存池的结构:struct ngx_pool_s{ ngx_pool_data_t d; //数据区 size_t max; ...原创 2018-05-26 17:11:16 · 122 阅读 · 0 评论 -
http协议
HTTPHTTP属于应用层的面向对象的协议,简洁快速,适用于分布式超媒体信息系统;1>支持C/S模式2>简单快速:客户发起请求时,只需要传输请求方法和路径。3>灵活:允许任意类型的数据对象。4>无连接:每次只处理一个请求,处理完就断开连接(可以设置为长连接)5>无状态:对事物处理没有记忆能力,优点是:服务器不需要先前信息时应答快。缺点:后续需要先前的...原创 2018-05-25 22:48:50 · 92 阅读 · 0 评论 -
反应器模式
1、定义两种I/O多路复用模式:Reactor和Proactor一般地,I/O多路复用机制都依赖于一个事件多路分离器(Event Demultiplexer)。分离器对象可将来自事件源的I/O事件分离出来,并分发到对应的read/write事件处理器(Event Handler)。开发人员预先注册需要处理的事件及其事件处理器(或回调函数);事件分离器负责将请求事件传递给事件处理器。两个与事...原创 2018-05-07 22:22:38 · 374 阅读 · 0 评论 -
半同步半异步
一、同步异步 同步:当一个同步调用发出后,调用者要一直等待返回消息(或者调用结果)通知后,才能进行后续的执行; 异步:当一个异步过程调用发出后,调用者不能立刻得到返回消息(结果)。实际处理这个调用的部件在完成后,通过消息回调来通知调用者是否调用成功。同步与异步着重点在消息通知的方式,也就是调用结果通知的方式。二、半同步半异步 同步模式编程简单,但是I/O的利用利率低...原创 2018-05-07 22:04:34 · 731 阅读 · 0 评论 -
进程间通信
一、管道 管道的作用是在具有亲缘关系的进程之间传递消息,所以管道并不是只可以用于父子进程通信,也可以在兄弟进程之间还可以用在祖孙之间等,反正只要共同的祖先调用了pipe函数,打开的管道文件就会在fork之后,被各个后代所共享。不过由于管道是字节流通信,没有消息边界,多个进程同时发送的字节流混在一起,则无法分辨消息,所有管道一般用于2个进程之间通信,另外管道的内容读完后不会保存,管道是单...原创 2018-05-10 16:37:05 · 151 阅读 · 0 评论 -
多进程/多线程
进程是表示资源分配的基本单位,又是调度运行的基本单位。 线程是进程中执行运算的最小单位,亦即执行CPU调度的基本单位。一,适用场景: 1>需要大量的计算 如果你在实际的应用中需要大量的计算,那么你可以优先使用线程。由于大量的计算会耗费很多的CPU并且切换回很频繁。而我们上文中也有说到,线程的切换简单而且CPU的利用率高。 2>需要频繁创建销毁 如果你实...原创 2018-05-01 19:34:17 · 277 阅读 · 0 评论 -
ptmalloc
内存管理器的设计目标: 1.最大兼容性 2.最大可移植性 3.浪费最小空间 4.最快的速度 5.最大可调式性ptmalloc折中上述目标: 具有长生命周期的大内存分配使用mmap。 特别大的内存分配总是使用mmap。 具有短生命周期的内存分配使用brk。 尽量只缓存临时使用的空闲小内存块,对大内存块或是长生命周期的大内存块在释放时都直...原创 2018-06-10 16:01:49 · 745 阅读 · 0 评论