摘要:工作流程: 1>服务器启动,在指定端口或随机选取端口绑定httpd服务。 2>收到一个http请求时(其实就是listen端口accept的时候),派生一个线程运行accept_request函数。 3>取出http请求中method(get或post)和url,对于get方法,如果有携带参数,则q
阅读全文
摘要:http通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: (1) 建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是T
阅读全文
摘要:最近看了tinyhttpd的服务器代理,看了看http请求数据包的格式和内容 http请求报包含三个部分: 请求行 + 请求头 + 数据体 请求行包含三个内容 method + request-URI + http-version method 包含有 post , get, head,delete
阅读全文
摘要:考虑下面的场景,server向client发送数据"_META_DATA_\r\n_USER_DATA_",要求"\r\n"之前的数据_META_DATA_在第一次recv中接收,剩下的recv调用读取_USER_DATA_部分的数据。因为tcp是stream协议,并且_META_DATA_数据不是
阅读全文
摘要:data.h server.c client.c
阅读全文
摘要:1.traceroute程序的操作过程。 traceroute主要能列出到达目的主机所经过的路由。 在ICMP中有一个IP记录路由(RR)选项,之所以还要另外开发traceroute是因为 1>IP首部中留下的选项的空间有限, 2>并不是所有的路由器都支持路由选项, 3>记录路由一般是单项的,所以发
阅读全文
摘要:C10K问题是指服务器同时支持成千上万个客户端的问题,也就是concurrent 10 000 connection(这也是C0K这个名字的由来)。由于硬件成本幅度降低和硬件版本的提高,如果服务器能够解决多客户端的问题,那么也就意味着将降低每一个客户端的成本。 解决IO的策略: 1>用一个线程来同时
阅读全文
摘要:nginx是个多进程web容器,不同的配置下它的启动方式也是不同的,这里我只说说最典型的启动方式。 它有1个master进程,和多个worker进程(最优配置的数量与CPU核数相关)。那么,首先我们要找到main函数,它在src/core/nginx.c文件中。谈到源码了,这时我们先简单看下源码的目
阅读全文
摘要:epoll & select & poll只能处理IO相关的操作,epoll每一个操作必须注册到时间监控机制中,并且还需要进程或者线程进行管理。 多进程/多线程 和epoll相比较 epoll用在大量链接,少处理的项目中; 多线程/多进程用在少量链接,复杂的业务处理。 在QQ中,处理登陆是epoll
阅读全文
摘要:http是应用层的协议,并且无连接,无状态的协议。 http协议的特点: 1.支持c/s模式 2.简单快速:客户端向服务器端传送数据的时候,只需要发送请求方法和路径,请求方法有:post,get,head。由于http协议简单,使得http服务器的程序规模小,因而通信速度很快。 3.灵活:http允
阅读全文
摘要:1 响应格式如(十六进制方式显示) 序列0(值01)为version,固定取1即可序列1(值06)为type,代表FCGI_STDOUT,表示应用的输出序列2 3(00 01)代表2字节的请求id,默认取1即可(准确说应该是和请求应用时发送的id一致,这里假设请求和响应的id都是1)序列4 5(01
阅读全文
摘要:转载自:SanMaoSpace 1.Web开发的定义首先看看微软对Web开发的定义:Web开发是一个指代网页或网站编写过程的广义术语。网页使用 HTML、CSS 和 JavaScript编写。这些页面可能是类似于文档的简单文本和图形。页面也可以是交互式的,或显示变化的信息。编写交互式服务器页面略微复
阅读全文