《Linux高性能服务器编程》阅读笔记
摘要:《Linux高性能服务器编程》阅读笔记 bind成功时返回0,失败时返回-1并设置errno。其中,两种常见的errno是EACCES和EADDRINUSE,他们的含义分别是: EACCES:被绑定的地址是受保护的地址,仅有超级用户可以访问 EADDRINUSE:被绑定的地址正在使用中。 liste
阅读全文
tcp协议详解(四
摘要:以下都是按客户端主动连接方和主动断开连接方 【1】tcp的半关闭状态 服务器接收到客户端的FIN请求后回复了ACK确认信息,但没有发送FIN请求给客户端,就进入了半连接状态,这时客户端人可以接收服务器传来的数据但不可以发送数据;客户端可以发送数据给客户端单收不到客户端的数据:即客户端单方面断开了连接
阅读全文
tcp协议详解(三)
摘要:tcp状态转移 1.CLOSED:起始点,在超时或者连接关闭时候进入此状态。 2.LISTEN:ser端在等待连接过来时候的状态,ser端为此要调用socket,bind,listen函数,就能进入此状态。此称为应用程序被动打开(等待客户端来连接)。 3.SYN_SENT:客户端发起连接,发送SYN
阅读全文
tcp协议详解(二)
摘要:tcp头部结构 tcp头部结构信息出现在每个tcp报文段中,用于指定通信的源端口,目的端口,管理tcp连接等,本文将详细介绍tcp的头部结构,包括固定头部结构和头部选项。 tcp固定头部结构: 常见的几种tcp头部选项
阅读全文
tcp协议详解(一)
摘要:tcp协议是tcp/ip协议族的重要成员,相比于ip协议;TCP协议更靠近应用层;可操作性根强,一些重要的socket都和tcp协议有关; 本文将从以下四个方面去介绍tcp协议: 【1】tcp头部信息:tcp头部信息出现在每一个tcp报文段中,用于确定通信的源端口号,目的端口号,管理tcp链接,控制
阅读全文
网络编程
摘要:这一部分编程较为简单,都有固定的模式,主要是对程序和协议的理解难以掌握,对于这种情况,如何去学好网络编程呢? 那么以下几个问题会让你初步深入网络编程,让你揭开网络编程的神秘面纱; 【1】什么是网络? 把独立自主的计算机连接起来就构成了网络,构建网络是为了实现计算机与计算机之间的信息交互和资源共享;
阅读全文
线程和多线程学习
摘要:线程的概念:线程是进程内部的一条执行路径(或者序列)。一个只有一条执行路径的进程是一个单线程。线程就是进程执行的一条通路; 从操作系统的角度看,线程有三种实现模型: 用户级线程 内核级线程 组合模型 用户级线程的创建管理都是由线程库的代码实现完成的,内核并不知情,所以用户级线程的创建代价比较小,不需
阅读全文
进程间通信
摘要:进程间通讯的五种方法:管道,信号量,共享内存,消息队列 套接字 Socket 【1】管道 管道的创建方法:无名管道的创建方法 pipe(int fd[2]) 有名管道的创建方法 int mkfifo(char * path , mode_t mode); 相关问题: 1.有名管道和无名管道的区别?搞
阅读全文
进程fork应用解析
摘要:【1】什么是进程? 进程是一个正在运行的程序。 【2】pcb是什么?有什么作用? pcb是进程控制块,他包含了进程各种信息,是一个数据结构类型。系统可以根据PCB来实现对进程的控制和管理,PCB是进程唯一的标志。 【3】内存的分页管理,页表是什么?在程序中我们使用的是逻辑地址还是物理地址?引入虚拟内
阅读全文
linux库
摘要:linux库分为静态库和共享库 ldd 静态库生成命令:ar crv libfoo.a add.o max.o 共享库生成命令:gcc -shared -fPIC -o libfoo.so add.o max.o 生成库可能一下子就可以去操作的来,写了这么多,那么下面来几个问题 【1】什么是库呢?静
阅读全文
动态内存开辟(一)
摘要:malloc的申请方式 1.具有长生命周期的大内存将使用mmap分配。 2.对于短生命周期的内存分配将使用brk系统调用。 3.对于小内存块的释放将返回到bin数组下,大内存(使用mmap分配的)将直接返回给操作系统。 4.小内存块的合并(切割)仅仅在malloc和free的时候,并且合并(切割)以
阅读全文