关闭

在ubuntu下编译linux版客户端遇__GNUC_PREREQ编译错误的解决方法

使用linux编译调试,今天尝试编译发现如下错误: error: missing binary operator before token "(" __BEGIN_DECLS does not name a type 第一个错误位置为系统的string.h的这个位置: #if defined __cplusplus && __GNUC_PREREQ (4, 4) 让人困惑,于是在...
阅读(358) 评论(0)

linux内核学习笔记------ARP:地址解析协议

当发送ARP请求时,发送方填入发送方以太网地址、发送方ip地址以及目标ip地址。目标主机接收到这个ARP广播包时,会在响应报文中填上自己的以太网地址。ARP报文格式如下: 硬件类型 协议类型 硬件地址长度 协议地址长度 操作码 src硬件地址 src ip地址 dst硬件地址 目标ip地址 1、硬件类型都是以ARPHDR_开头 2、操作码包...
阅读(1656) 评论(0)

linux内核学习笔记------邻居子系统(一)

在学习之前,可以先读读这两篇博客,特别是第一篇: http://blog.csdn.net/minghe_uestc/article/details/7794852 http://blog.csdn.net/qy532846454/article/details/6806197 邻居子系统的结构由多个数据结构组成: 1、neigh_table结构:该结构主要用来存储与邻居协议相关的参数...
阅读(1462) 评论(0)

linux内核学习笔记------ip报文组装

ip报文有分片就会有组装。在接收方,只有报文的所有分片被重新组合后才会提交到上层协议。内核组装ip报文用到了ipq结构体:(注,这系列源码中的注释都来自:http://blog.csdn.net/justlinux2010) struct ipq { struct inet_frag_queue q; /* * 标识分片来源,取值为IP_DEFRAG_LOCAL_DELIVER等。 ...
阅读(1489) 评论(0)

nginx的文件异步io

nginx使用的文件异步io的基于linux内核的,而并不是glibc库提供的。glibc通过的异步io是基于多线程实现的,并不是真正意义上的异步io。nginx只是在读文件时使用了异步io。那么有的童鞋就会问:那nginx为什么在写文件时不使用异步io?原因是这样的:linux内核的文件异步io是不支持缓存操作的,而正常的写入文件时往往是写入内存中就立刻返回,这样效率就比较高,而使用异步io写入...
阅读(1958) 评论(0)

linux内核学习笔记------ip报文的分片

对网络比较熟悉的童鞋都知道,当发送的ip报文长度超出了最大的传输单位MTU,且允许分片的情况下,就会对ip报文进行分片。在上层要发送数据时就会调用dst_output,dst_output就会调用ip_output,而ip_output就会调用ip_finish_output,在ip_finish_output把数据发送出去之前就会判断该报文是否进行分片。 static int ip_finis...
阅读(2614) 评论(0)

linux内核学习笔记------ip选项处理(二)

在以前的笔记中讲过ip数据报的处理,里面提到过ip_rcv_finish这个函数,这个函数会调用ip_rcv_options来解析并处理iP首部中的ip选项。 if (iph->ihl > 5 && ip_rcv_options(skb)) goto drop;在ip_rcv_finish中会判断ip首部长度是否大于5,只有首部长度大于20的情况下才会有ip选项,并调用ip_rcv_opti...
阅读(1282) 评论(0)

linux内核学习笔记------iP选项处理(一)

ip首部分为固定部分和选项部分;固定部分为20个字节,而选项部分则是变长的,最长不超过40个字节。选项的格式分为单字节和多字节两种。单字节只包括一个字节的选项类型,而多字节则除一个字节的类型之外,还包括选项长度以及选项数据。包括以下几种ip选项: 1、选项列表的结束符 此选项标识了选项列表的结束,所有选项的结束,而不是一个选项的结束。如下图 0 0 0 0 0 0 ...
阅读(1289) 评论(0)

linux内核学习笔记------ip数据报的输入处理

链路层接收到数据包后会通过netif_receive_skb将数据包丢给网络层,而网络层处理接口就是ip_rcv。网络层接口都是通过网络层协议号从ptype_base散列表中找到相应的接收函数。ipv4的数据包类型为ip_packet_type,通过dev_add_pack注册到系统的ptype_base中。 ip_rcv功能: 1、首先会丢弃不是发往本地的数据报; 2、如果数据报是一个共享...
阅读(1250) 评论(0)

linux内核学习笔记------对端信息块

首先,什么是对端信息块? 在linux内核源码剖析——tcp/ip实现这本书中是真么介绍的:对端信息块主要用于组装ip数据包时防止分片攻击,在建立tcp连接时检测连接请求段是否有效以及其序列号是否回绕 在linux内核中是通过inet_peer结构体描述的: struct inet_peer { /* group together avl_left,avl_right,v4daddr to...
阅读(874) 评论(0)

nginx运行期间修改配置文件的处理

今天在群里讨论到一个问题就是:如果在nginx运行期间,修改了配置文件,这个时候是重启nginx还是有别的办法呢?对nginx比较熟的童鞋,脑子立马肯定会有答案。执行下面的命令就好了 ./nginx -s reload那么nginx是怎么处理reload的呢?是像squid那样停止所有的任务后再重读配置文件还是别的处理呢?nginx是不需要停止服务去读取配置文件的,下面来看nginx具体的处理。...
阅读(4424) 评论(0)

nginx的sendfile指令的作用

linux为了解决对读文件产生的从应用空间到内核空间复制数据产生的效率影响引进了零拷贝。什么是零拷贝?这里就不多说了,请参考http://blog.csdn.net/crazyguang/article/details/2423708,我们主要是讲述nginx怎么是用sendfile的。 nginx通过使用sendfile指令来控制是不是用linux提供的零拷贝功能。具体配置如下: sendf...
阅读(5311) 评论(0)

redis数据库之VM(虚拟内存)

reids数据库是一种内存数据库,也提供了两种持久化的方式。作为内存数据库, 访问数据的速度肯定是杠杠的。但是随着数据的不断增加,消耗的内存也就越来越多直到内存消耗完。这种问题要么增加内存,要么就是将内存中的很少用到的数据替换到硬盘中。redis采用的就是第二种方法,也就是redis中的虚拟内存实现的功能。redis采用了阻塞式更替和非阻塞式更替,这个等会再讲。先来看下虚拟内存的初始化: voi...
阅读(2119) 评论(1)

redis数据库之主从复制

redis除了基本功能外,还提供了主从复制功能。一个redis服务可以有多个slave服务,而这个slave服务又可以有slave服务。...
阅读(1746) 评论(1)

redis数据库之rdb持久化

redis是一种内存数据库,也就是redis的数据在正常工作的情况下都是存储在内存中。但并不是说redis只能把数据存储在内存中,redis提供了两种数据持久化机制:rdb和aof。rdb持久化有三种方式被启动:用户向redis发送save或者bgsave命令。save和bgsave的不同就在于save会阻塞redis服务器,而bgsave不会。这样bgsave就在不影响redis服务器正常工作的...
阅读(1950) 评论(1)
40条 共3页1 2 3 下一页 尾页
    个人资料
    • 访问:75043次
    • 积分:1099
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:8篇
    • 译文:0篇
    • 评论:11条
    博客专栏
    最新评论