服务器
文章平均质量分 92
theanarkh
这个作者很懒,什么都没留下…
展开
-
利用多线程和 C++ 实现一个简单的 HTTP 服务器
无原创 2022-09-07 23:43:25 · 1174 阅读 · 0 评论 -
服务器处理连接的架构演变
服务器是现代软件中非常重要的一个组成。首先我们先来了解,什么是服务器。顾名思义,服务器,重点是提供服务。那么既然提供服务,那就要为众人所知。不然大家怎么能找到服务呢。就像我们想去吃麦当劳一样,那我们首先得知道他在哪里。所以,服务器很重要的一个属性就是需要发布服务信息,服务信息包括提供的服务和服务地址。这样大家才能知道需要什么服务的时候,去哪里找。对应到计算机中,服务地址就是ip+端口。所以一个如果你想成为一个服务器,那么你就要首先公布你的ip和端口,但是ip和端口不容易记,不利于使用,所以又设计出DNS协议原创 2021-05-12 23:06:20 · 160 阅读 · 0 评论 -
nginx的timeout(基于nginx1.17.9)
nginx中使用timeout的地方非常多,本文主要分析客户端和nginx通信时涉及到的几个timeout。连接建立成功,接收业务数据超时接收http报文的超时1 连接建立成功,接收业务数据超时这个逻辑从ngx_event_accept函数开始分析,ngx_event_accept是nginx在监听某个端口时,底层建立tcp连接成功后回调的函数。我们首先需要了解,在nginx中。一个连接是使用ngx_connection_t表示。每个ngx_connection_t对应两个ngx_event_t原创 2020-06-14 23:19:37 · 498 阅读 · 0 评论 -
ngx_http_auth_basic_module源码解析(基于nginx1.17.9)
auth_basic模块是nginx中比较简单的模块。地址在http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html。我们通过分析这个模块的代码,不仅知道如何使用,还可以了解到http认证的实现。该模块支持http认证和验证的功能。支持两个配置。location / { // 在浏览器弹框里的提示语 auth_basic "hello"; // 用户输入密码后,以password文件来判断是否正确原创 2020-06-14 17:22:39 · 348 阅读 · 0 评论 -
云风coroutine库源码分析
coroutine库是云风大佬以前写的一个协程库,短小精悍,源码分析在这(https://github.com/theanarkh/read-coroutine-code)。今天就分析一下这个库的原理。话不多说,直接开始。首先了解一下数据结构。// 记录协程公共数据的结构体struct schedule { // 协程的公共栈 char stack[STACK_SIZE]; // 主上...原创 2020-04-21 13:20:26 · 592 阅读 · 0 评论 -
理解服务器设计的基本模式
前言:服务器是现代软件中非常重要的一个组成。今天分享一下服务器设计的一些模式。因为现代的服务器软件中,常见的都是基于TCP的,所以本文的内容也是基于TCP的。 首先我们先来了解,什么是服务器。顾名思义,服务器,重点是提供服务。那么既然提供服务,那就要为众人所知。不然大家怎么能找到服务呢。就像我们想去吃麦...原创 2020-04-18 16:08:20 · 246 阅读 · 0 评论 -
通过tinyhttpd-0.1.0源码理解服务器原理
tinyhttpd是一个demo版的服务器。代码几百行。源码分析在这。从中可用一窥服务器的基础原理。他采用的是一个请求新开一个线程处理的方式。里面涉及了多进程、多线程、进程间通信等知识。 我们从main函数开始分析。int main(void){ int server_sock = -1; u_short port = 0; int cli...原创 2020-04-10 00:51:55 · 266 阅读 · 0 评论 -
tinyhttpd-0.1.0源码解析
/* J. David's webserver *//* This is a simple webserver. * Created November 1999 by J. David Blackstone. * CSE 4344 (Network concepts), Prof. Zeigler * University of Texas at Arlington *//* Thi...原创 2019-01-23 23:21:57 · 271 阅读 · 0 评论 -
用nodejs创建一个http2服务器
使用谷歌的spdy协议。首先安装spdy协议,npm install spdyconst http2 = require('./node_modules/spdy/lib/spdy');var fs = require('fs');var options = { key: fs.readFileSync('./files/server-key.pem'), ca: [fs.rea原创 2017-07-12 00:10:38 · 1952 阅读 · 0 评论 -
用nodejs创建一个https服务器
var https = require('https');var fs = require('fs');var options = { key: fs.readFileSync('./files/server-key.pem'), ca: [fs.readFileSync('./files/ca-cert.pem')], cert: fs.readFileSync('./f原创 2017-07-12 00:07:50 · 608 阅读 · 0 评论 -
squid缓存服务器安装和使用
1.首先在http://www.squid-cache.org/Versions/下载源码,我下载的版本是3.5。环境是ubuntu。 2.解压源码,然后cd到该文件夹下,执行编译三部曲。具体可参见网上的教程。 这里说一下我安装的时候遇到的问题。 主要是文件权限的问题。 1.squid.conf里需要打开dir_cache这个配置,否则启动的时候会提示dir_cache没有配置。 2./u原创 2017-05-06 04:14:57 · 3653 阅读 · 0 评论 -
php设置缓存
在php中设置<?phpheader('Cache-Control:max-age=1000000');echo 1;?>用火狐访问,然后f5刷新,看到请求里带了Cache-Control:max-age=0指令,所以达不到缓存效果。 点击url栏,回车,没有发请求,直接从缓存里拿到响应的数据。原创 2017-05-06 04:21:37 · 1956 阅读 · 0 评论 -
古老的xst攻击
xst主要是使用http的trace方法,该方法会返回浏览器发给服务器的所有请求信息,但该方法不能带body,主要是利于debug。现在前端后端都做了很多xst攻击的措施,很难在浏览器端发起trace请求了,所以只能用fiddler模拟一下,服务器是wamp,支持trace方法。该攻击主要是在网站存在xss漏洞但设置了cookie的httponly属性的时候结合trace方法进行攻击。如果原创 2016-08-25 00:12:55 · 3097 阅读 · 0 评论 -
http range头
range头可用于断点传输和向对个服务器下载文件 浏览器的http请求头中会带上range:bytes 开始字节的偏移-结束字节偏移。然后服务器会返回accept-range:bytes;content-range:start-end/totalBytes头信息。并且返回状态码是206 partial content;这样就实现了获取部分内容的传输。原创 2016-11-28 23:26:07 · 835 阅读 · 0 评论 -
chrome的Upgrade-Insecure-Requests: 1头
如果在https的页面需要加载http的资源,那么浏览器就会报错或者提示,为了促进用户升级协议,同时不需要网站开发者劳师动众地把整个网站的http资源改成https资源,chrome增加一个Upgrade-Insecure-Requests: 1头,告诉服务器,浏览器可以处理https协议,然后服务器返回Content-Security-Policy: upgrade-insecure-reque原创 2016-12-03 03:00:59 · 20971 阅读 · 0 评论 -
解决https网站根证书不安全的问题
调试时,我们访问某些https的网址时,页面会提示该网址的根证书不受信任,有安全问题。解决方法有两个。1 访问网站时页面或提示证书安全问题,然后选择增加例外。2 如果是使用的fiddler的话,在fiddler的菜单选择工具->https tab ->点击action->导出fiddler根证书到桌面打开火狐选择右上角->点击选项->高级->证书->查看证书->证书机构->导入,然原创 2016-12-12 12:22:22 · 17887 阅读 · 0 评论 -
点击劫持和防御
原页面source.php //header('X-Frame-Options:DENY'); ?><!DOCTYPE html><html><head> <title></title> <style type="text/css"> html,body{ margin: 0px; padding: 0px;原创 2016-12-13 02:16:25 · 2197 阅读 · 0 评论 -
http缓存
请求中的缓存: cache-control: no-cache/max-age = 0 不能使用缓存,包括浏览器和代理的,必须去服务器拉取新的数据。 cache-control: no-cache/max-age = 0(有etag或者ifmodifiedsince头)必须去服务器进行验证,如果文件已经更新则返回最新的,否则返回304. 因为没有条件头,服务器无法判断用户的条件,只能把最新的原创 2016-11-24 20:08:25 · 395 阅读 · 0 评论 -
搭建https服务器
1.安装openssl sudo apt-get install openssl2.生成服务器的私钥和证书 openssl genrsa -des3 -out cyb.key 2048 openssl req -new -key cyb.key -out cyb.csr openssl rsa -in cyb.key -out cyb_nopass.key openssl req -new原创 2016-12-09 13:50:02 · 790 阅读 · 0 评论 -
node框架express路由的大致原理
昨晚准备洗澡的时候,突然想实现一下express的路由逻辑,但时间有限,只能先写这么多。这个不完全是express的路由原理,只是提供一点思路,具体逻辑可以参考源码,express的路由,好不好不敢说,但是做法挺新颖的,给我一个新的思想。function Layer(config) { if (config.handle instanceof route) { this.ro原创 2016-12-29 13:35:55 · 2074 阅读 · 0 评论 -
从零开始学习nginx
首先搭建环境:安装ubuntu,然后安装vmware tools,安装vmware tools的时候要先在虚拟机某个地方新建一个目录,然后把所以tools的文件复制过去,然后解压安装。直接解压会提示read-only file system。准备两台充当服务器的电脑,让三个电脑处于一个局域网内,并通过ipconfig找到三个主机的局域网ip,把虚拟机的上网方式设置为桥接方式,这样虚拟机和其他主机的原创 2016-06-25 17:05:18 · 1476 阅读 · 0 评论