
Linux 高性能服务器编程:高性能服务器架构二 7
两种高效的并发模式 并发编程的目的是让程序“同时”执行多个任务。 如果程序是计算密集型的,并发编程并没有优势,反而由于任务的切换使效率降低。 但如果程序是I/O密集型的,比如经常读写文件,访问数据库等,则情况就不同了。 由于I/O操作的速度远没有CPU计算速度快,所以让程序阻塞I...
两种高效的并发模式 并发编程的目的是让程序“同时”执行多个任务。 如果程序是计算密集型的,并发编程并没有优势,反而由于任务的切换使效率降低。 但如果程序是I/O密集型的,比如经常读写文件,访问数据库等,则情况就不同了。 由于I/O操作的速度远没有CPU计算速度快,所以让程序阻塞I...
服务器模型 C/S模型 TCP/IP协议在设计和实现上并没有客户端和服务器的概念,在通信过程中所有机器都是对等的。 C/S模型的逻辑很简单。 服务器启动后,首先创建一个或多个监听socket,并调用bind函数将其绑定到服务器感兴趣的端口上。 然后调用listen函数等待客户连接...
概述 守护进程 Linux服务器程序一般以后台进程形式运行。后台进程又称为守护进程(daemon)。 它没有控制终端,因而也不会意外接收到用户收入。 守护进程的父进程通常是init进程(PID为1的进程)。 日志 Linux服务器程序通常有一套日志系统,它至少能输出日志到文件,有...
pipe pipe用于创建一个管道,以实现进程间通信。 pipe函数的参数是一个包含两个int的数组指针。 该函数成功时返回0,并将一对打开的文件描述符值填入其参数指向的数组。 如果失败,返回-1并设置errno。 通过pipe创建的这两个文件描述符fd[0]和fd[1]分别构成...
网络信息API gethostbyname和gethostbyaddr gethostbyname根据主机名称获取主机的完整信息。这个函数是通常先在本地的/etc/hosts.conf配置文件中查找主机,如果没有找到,再去访问DNS服务器。 gethostbyaddr根据IP地址...
socket地址API 字节序 现代CPU的累加器一次都能装载(至少)4个字节(32位机器),即一个整数。 这4个字节在内存中排列的顺序将影响它被累加器装载成的整数的值,这就是字节序问题。 字节序分为大端字节序和小端字节序。 大端字节序是指整数的高位字节存储在内存的低地址处,低位...
TCP/IP通信案例 HTTP代理服务器的工作原理 在HTTP通信链上,客户端和目标服务器之间通常存在某些中转代理服务器,它们提供对目标资源的中转访问。 一个HTTP请求可能被多个代理服务器转发,后面的服务器称为前面服务器的上游服务器。 代理服务器按照其使用方式和作用,分为正向代...
TCP的建立和关闭 复位报文段 在某些特殊的情况,TCP连接的一端会向另一端发送携带RST标志的报文段,即复位报文段,以通知对方关闭连接或重新建立连接。 收到复位报文段的一端应该关闭连接或重新连接,而不能回应这个复位报文段。 异常终止连接 TCP提供了异常终止一个连接的方法,即给...
TCP特点 面向连接 字节流 可靠传输 关于TCP 使用TCP通信的双方必须先建立连接,然后才能开始数据的读写。 双方都必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。 TCP连接是全双工的,双方的数据读写可以通过一个连接进行。完成数据交换之后,通信双方都必须...
IP协议 概述 IP协议是TCP/IP协议族的核心协议,也是socket网络编程的基础之一。 IP头部信息出现在每个IP数据报中,用于指定IP通信的源端IP地址、目标端IP地址,指导IP分片和重组,以及指定部分通信行为。 IP数据报的路由和转发发生在除目标机器之外的所有主机和路由...
搜索当前分类