分类: 服务器

服务器

如何配置微信公众号服务器

在现代社会中,公众号已经普遍开来,那么作为开发者的人们首先要做的就是服务器的配置,配置不成功下面的事情也进行不下去,那么如何配置呢?身为小白的我就简单总结一下。

共分为3个步骤:

填写服务器配置
验证信息是否来自微信服务器
依据借口文档实现业务逻辑
首先你得有自己的一个公众号,进入平台后进入基本设置界面点修改配置会出现如下图(本人的已经填写)

Url:填写的URL即是你服务器验证代码的地址。

Token:这里的值可以根据要求随意设置,但必须与上面的URL地址的Token值保持一致,不一致也会导致验证失败,从而配置不成功。
%title插图%num

点提交即可。

运行

<?php
/**
* wechat php test
*/

//define your token
define(“TOKEN”, “weixin”);//Tolen 记得和基础设置里面的Token一致,不一定就是weixin
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();//首次配置使用此方法

class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET[“echostr”];//首次配置会传输

//valid signature , option
if($this->checkSignature()){//此处调用方法 判断是否来自微信服务器
echo $echoStr;
exit;
}
}

public function responseMsg()//配置完成后调用此方法
{
//get post data, May be due to the different environments
$postStr = $GLOBALS[“HTTP_RAW_POST_DATA”];

//extract post data
if (!empty($postStr)){

$postObj = simplexml_load_string($postStr, ‘SimpleXMLElement’, LIBXML_NOCDATA);//将字符串转换为对象
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = “<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>”;
if(!empty( $keyword ))
{
$msgType = “text”;
$contentStr = “Welcome to wechat world!”;
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo “Input something…”;
}

}else {
echo “”;
exit;
}
}

private function checkSignature()
{
$signature = $_GET[“signature”];
$timestamp = $_GET[“timestamp”];
$nonce = $_GET[“nonce”];

$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );//数组转换为字符串
$tmpStr = sha1( $tmpStr );//加密

if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}

?>

%title插图%num

点击提交若显示配置成功,那祝你成功配置好了,接下来就开动你的脑筋编写你的代码吧!

Web服务器工作原理详解(基础篇)

概述:Web服务器概念较为广泛,我们*常说的Web服务器指的是网站服务器,它是建立在Internet之上并且驻留在某种计算机上的程序。Web服务器可以向Web客户端(如浏览器)提供文档或其他服务,只要是遵循HTTP协议而设计的网络应用程序都可以是Web客户端。

Web服务器和HTTP服务器可以说是同一个东西,当然非得细分的话,HTTP服务器是建立在HTTP协议之上的提供文档浏览的服务器,更多的是提供静态的文件。而Web服务器涵盖了HTTP服务器(这一点可以自行百度百科), Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。
Web服务器 约等于 HTTP服务器 + 其他服务

目前所熟知的Web服务器有很多,其*主流的是 Apache, Nginx, IIS
各大Web服务器的实现细节都不同,是为了某种情形而设计开发的。但是它们的基础工作原理是相同的,这也是本次基础篇所讲解的内容。

一、Web服务器工作原理图解
%title插图%num

首先我们暂时不考虑HTTP协议的各种请求方式,我们先跟着**(Web服务器工作原理总体描述01)这张图,将一次Web服务的工作流程过一遍,我们假设以浏览器作为客户端
(1) 用户做出了一个操作,可以是填写网址敲回车,可以是点击链接,可以是点击按键等,接着浏览器获取了该事件。
(2) 浏览器与对端服务程序建立TCP连接。
(3) 浏览器将用户的事件按照HTTP协议格式**打包成一个数据包,其实质就是在待发送缓冲区中的一段有着HTTP协议格式的字节流。
(4) 浏览器确认对端可写,并将该数据包推入Internet,该包经过网络*终递交到对端服务程序。
(5) 服务端程序拿到该数据包后,同样以HTTP协议格式解包,然后解析客户端的意图。
(6) 得知客户端意图后,进行分类处理,或是提供某种文件、或是处理数据。
(7) 将结果装入缓冲区,或是HTML文件、或是一张图片等。
(8) 按照HTTP协议格式将(7)中的数据打包
(9) 服务器确认对端可写,并将该数据包推入Internet,该包经过网络*终递交到客户端。
(10) 浏览器拿到包后,以HTTP协议格式解包,然后解析数据,假设是HTML文件。
(11) 浏览器将HTML文件展示在页面
以上为Web服务器工作基本原理。其实不难发现,这仅仅只是一个简单的网络通信。我们应该深信,作为一个服务器,其根本的工作无非有三个

接收数据 2. 发送数据 3. 数据处理
而Web服务器的本质就是 接收数据 ⇒ HTTP解析 ⇒ 逻辑处理 ⇒ HTTP封包 ⇒ 发送数据
高级的服务器无非就是将这三个部分更加细致的设计了。
二、Web服务器之提供静态文件工作原理图解
Web服务器*主要的功能是提供静态的文件。日常的上网浏览大多是网页浏览,少数时候才会有一些数据的提交操作。因此,我们结合上一张图示来重点讲解在GET请求下的Web服务器工作原理。

%title插图%num

其他流程基本不变,着重在于红色与蓝色部分。
(1) 当用户点击一个网页链接或浏览器加载一些资源(css,jpg …)时产生。
(6) 服务程序解包后,确定其为GET请求,并且是对该服务器上的某一资源的请求。首先服务程序会去确认该路径是否存在,再确定该路径的文件是否可以获取。
(7-1) 如果请求的路径有误,或者该资源不能被用户获取,则返回错误提示页面。很多服务器的错误页面只有404,更专业的应该是将错误分类并返回对应的错误代码页面。
(7-2) 如果该路径合法且文件可以被获取,那么服务程序将根据该文件类型进行不同的装载过程,记录其类型作为(8)中HTTP协议中对应的返回类型,并加入响应头。

假设以点击一个页面链接为例,浏览器首先将HTML文件请求过来,再以同样的流程对HTML文件中包含的资源文件路径进行依次请求。

%title插图%num

三、Web服务器之数据提交工作原理图解
仅仅只是网页的浏览并不能满足所有人的需求,客户端与服务器应当是有数据交互的。
即使单方面的资源请求任然是网络的主力军。
我们应该清楚的知道,数据提交对于用户来说有什么作用。
(1) 资源上传 (2) 登陆验证 (3) API接口调用 (4) 远程指令等
数据提交使得用户的操作性有了质的飞跃,它使得HTTP短连接获取静态文件的方式提升到了动态交互的层次上。该性质也催化出各式各样的编程语言、框架。例如PHP,JavaWeb。
如果你留意目前主流的那些大型服务器,你会发现再高级再牛逼的东西实际是也是*基础的东西建造的。那么我们还可以顺便学习一下*古老的动态技术CGI

%title插图%num

其他流程基本不变,着重在于红色与蓝色部分。
(1) 用户提交数据,假设用户点击一个按键提交填好的信息。在(3)中将以POST格式写入,并填入提交至服务端的可执行程序的路径。
(6) 服务端将参数与该CGI绑定,复制进程,用管道传递参数和接收结果
(7) 子进程执行CGI,接收(6)父进程传来的参数,运算完成返回结果。
*后父进程将结果装入静态模板文件,放入缓冲区

四、动态技术
我们得明白,Web服务器是以短连接为主,并且获取的数据到达浏览器的那一刻一定是静态的不变的。那么所谓动态实际是指两种情况

服务端产生:
(1) 用户POST提交数据到某个程序,程序根据该数据作为参数运行,得出结果并装入静态的模板页面中,返回该静态页面。但对于用户来说,同一个页面,做了一个操作后数据不一样了。好了,这就是动态页面。(CGI原理)
(2) PHP的原理是,用户GET请求一个php后缀的文件,服务器先执行该php后缀文件中的PHP代码,将结果填入代码的位置,再返回。当然也可以提交数据参与运算再返回。
客户端产生:
(1) 用户GET请求一个JavaScript文件,服务端不做任何运算返回该静态文件。浏览器收到该JS文件,在本地执行并更新页面。
(2) 用户POST提交数据到服务端,服务端根据该提交的数据指令返回静态文件,浏览器收到后执行并更新。

Ubuntu搭建DNS服务器

前言

其实在我们没有安装DNS服务之前,可以将/etc/hosts文件比作一个DNS服务配置文件,因为它实现和DNS类似。

之所以会独立出DNS服务,是因为因特网主机多,如果每个主机都靠/etc/hosts文件来维护主机名到ip的映射,那么工作量非常大,对本地更新、网络资源占用都很浪费,所以出现了DNS。

相关文件

/etc/host 本地的一个小”DNS”文件。

/etc/resolv.conf 用来指定DNS服务的地址,在没有自定义DNS地址时,发现其指向本机。如下:

root@jammg:/etc/bind# cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND — YOUR CHANGES WILL BE OVERWRITTEN
#nameserver 192.168.1.115

nameserver 127.0.0.1

所以,此时主机查找域名时或许是根据本地/etc/hosts.
/etc/host.conf 指定主机找哪个DNS解析的顺序.如下:

root@jammg:/etc/bind# cat /etc/host.conf
# The “order” line is only used by old versions of the C library.
order hosts,bind
multi on

所以,是先在本地搜索(hosts),然后再用bind指定的DNS区找(相关的查找信息在/etc/bind目录中)。

配置
Ubuntu15.10默认没有安装DNS 相关daemon,其中BIND是提供DNS服务的软件,安装:

#apt-get install bind9

那么,在/etc/bind下就有了DNS服务的相关配置文件,而named则是DNS服务主程序,在/usr/sbin目录下。

先来介绍一下/etc/bind目录下的文件:

root@jammg:/etc/bind# ls -la
总用量 68
drwxr-sr-x 2 root bind 4096 3月 31 11:45 .
drwxr-xr-x 150 root root 12288 3月 31 15:40 ..
-rw-r–r– 1 root root 2389 3月 8 22:59 bind.keys
-rw-r–r– 1 root root 237 3月 8 22:59 db.0
-rw-r–r– 1 root root 271 3月 8 22:59 db.127
-rw-r–r– 1 root root 237 3月 8 22:59 db.255
-rw-r–r– 1 root root 353 3月 8 22:59 db.empty
-rw-r–r– 1 root root 270 3月 8 22:59 db.local
-rw-r–r– 1 root root 3048 3月 8 22:59 db.root
-rw-r–r– 1 root bind 463 3月 8 22:59 named.conf
-rw-r–r– 1 root bind 490 3月 8 22:59 named.conf.default-zones
-rw-r–r– 1 root bind 165 3月 8 22:59 named.conf.local
-rw-r–r– 1 root bind 890 3月 31 00:28 named.conf.options
-rw-r—– 1 bind bind 77 3月 31 00:28 rndc.key
-rw-r–r– 1 root root 1317 3月 8 22:59 zones.rfc1918

其中,主要的是named.conf文件,它包括了DNS的重要配置信息,它有下面三个文件组成:
named.conf.default-zones
named.conf.local
named.conf.options

①named.conf.default-zones

包含了反解文件:db.0 db.127 正解文件:db.root db.local.

指定了DNS查找的配置信息,如db.local:

root@jammg:/etc/bind# cat db.local
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 127.0.0.1
@ IN AAAA ::1

@代表域名,在这里是local.(有个点)。
另外,db.root 包含了*顶层的域名和对应的地址,所有有需要的DNS都可以从这些地址得到其它域名的地址信息。

②named.conf.local暂时没用到

③named.conf.options

包含了一些设置信息,如设置为cache-only DNS,添加forwarding功能等。

测试
#dig +trace www.google.com @127.0.0.1

后面的@server就是指定使用本主机配置的DNS服务,如果返回如下信息则说明配置成功了。
www.google.com. 300 IN A 216.58.197.100
*次时,它是通过去找db.root配置文件的*顶层域名,由上到下一层层往下找到www.google.com的;第二次如果缓存还没过期则只需从本地获取结果。

关闭服务

#/etc/init.d/bind9 stop
还是关了本地的dns上网快点,毕竟目前只有*顶层的域名ip,要一层层找下来。

时间戳问题汇总

时间戳问题汇总
用一个 VLC(流媒体客户端) 去请求流媒体服务器上的数据, 但是获得的数据播放速度明显快于1倍速,大概是 timestamp 不对, 不知道是服务器的错误,还是客户端解码时出错, 总感觉服务器那边有问题
TAG: 时间戳 PTS DTS

我刚接触流媒体不久, 现在遇到一个非常奇怪的问题,向各位大侠请假,请你们指点。
问题是这样的 用一个 VLC(流媒体客户端) 去请求流媒体服务器上的数据, 但是获得的数据播放速度明显快于1倍速,大概是 timestamp 不对, 不知道是服务器的错误,还是客户端解码时出错, 总感觉服务器那边有问题, 由于服务器端是客户端提供的,客户说是我们的问题, 我还不知道如何证明是谁的错。

A:RFC3984 规定采用 90000 Hz 的时钟,因此如果编码帧频是 30,那么时间戳间隔就该是 90000 / 30 = 3000,根据抓包来看,似乎时间戳间隔的确是 3000。

时间戳的 间隔不固定,比如有的时间戳间隔是 2990 有的是 3002,会导致解析出来的视频快播的效果么

Q:各位大侠好:
我现在正在开发视频实时流播放,简单的过程如下:
采集视频流 -> 视频流转换为Sorenson H.263编码格式 -> 把编码的实时流通过RTMP协议发送 -> flash客户端进行播放。
现在我的时间戳颗粒是这样生成的:
*帧的时间戳为0;
第二帧的时间戳的算法为:*个字符编码的当前时间 – 上一帧*个字符编码的当前时间
根据这个时间颗粒的算法,我在flash客户端播放就会产生延时。
请问各位大侠有什么好的建议或是文档之类的,以前firstime管管建议我看RFC4629文档,但是效果不太明显?
谢谢!

A;时间戳顺序累加就行了,每次加1

Q:*近做了一个捕捉摄像头并保存FLV的小东西,发现转换完毕后的FLV文件,用播放器播放的时候,速度特别快,大概是正常速度的4倍。请问这是怎么回事?网上搜了一下,说是时间戳的问题,可是PTS我跟了,AVPacket的PTS是每帧增长40,time_base为: 25/s.。DTS是个无效值。PTS的计算是根据ffmpeg的例子写的。

pkt.pts= av_rescale_q(oAcc->coded_frame->pts, oAcc->time_base, audio_st->time_base);

1. dts到底需不需要自己计算?
2. 还有播放速度过快的可能原因?
3. 还有PTS和DTS的具体含义?
int64_t pts; ///< presentation time stamp in time_base units
int64_t dts; ///< decompression time stamp in time_base units

上面的意思是不是说,播放器根据PTS进行播放。然后DTS是在编码的时候自己设置?

刚用ffmpeg,好些东西不懂,还请大侠多多指教——刚才又试了一下,把time_base降为10帧每秒。播放速度和正常速度接近。但是不知道FLV文件的帧率该设置多少合适。有没有一个权威的说法。

A:我也做摄像头捕捉,跟你出现一样的问题,我自己分析的话,应该是捕捉摄像头的图像的速度只有10帧每秒,但是保存成视频25帧每秒的话播放看起来就非常快,但是我摄像头捕捉设定的是25帧每秒,难道是速度达不到?
反正我还没解决,LZ解决了的话告诉下,

谢谢。暂时认为是摄像头捕捉速率问题。换了一个高清无驱摄像头就好了

Q:在每个音视频数 据包中都含有PTS和DTS,一个数据包中应该含有多个数据帧以及音频数据,那么这里的PTS和DTS它是如何来标识数据帧的?PTS和DTS的单位是什 么?视频的*小单位是帧,可通过PTS来指定它何时播放,那音频的*小单位是什么?这里的PTS对音频而言它标识的是什么?是这个时间点采样点吗?

在网上找了很久关于音视频编解码的资料,都没有合适的

A:

audio_timebase = av_q2d(fmtctx->streams[audio_index]->time_base);
video_timebase = av_q2d(fmtctx->streams[video_index]->time_base);

last_video_pts = pts * video_timebase;
last_audio_pts = pts * audio_timebase;

timebase就是单位

以audio为基准同步video。只要设置好了 ao 的参数,如sample rate, channels, sample size等, audio驱动就能以正确的速度播放,所以只要程序里write不出大问题的话,这种同步是非常有效的。

在video out里如下做:

pre_time = av_gettime();
gl_vo->vo_display(pic);
after_time = av_gettime();
rest_time = 1000*1000/fps – (after_time – pre_time);

av_diff = last_audio_pts – last_video_pts;

if ( av_diff > 0.2 )
{
if( av_diff < 0.5 ) rest_time -= rest_time / 4;
else rest_time -= rest_time / 2;
}
else if ( av_diff < -0.2)
{
if( av_diff > -0.5 ) rest_time += rest_time / 4;
else rest_time += rest_time / 2;
}

if ( rest_time > 0 )
usleep(rest_time);
Q:谢谢kf701的回复,看后明白了不少
这种同步是音频抽样一次就与一帧图像去同步的吗?

A:上面的代码是每display一个picture,就与audio的PTS比较一下,
如果没有audio,只有video,那么video就会以fps显示, 靠的就是那个 usleep(rest_time)

Q:如何利用AVPacket包里的pts,dts实现音视频同步?声频播放是只管自己播放,视频有一个初始化播放帧率,如何根据AVPacket里的pts,dts还实现两者的同步?
现在我的视频播放一直按原始播放帧率播放,声音有点卡!哪位知道,尽快告知小弟!

A:DTS:decoding time stamp
PTS:presentation time stamp

Generally the PTS and DTS will only differ when the stream we are playing has B frames in it.

Q:关于b帧和时间戳的问题

我从mpeg2视频中用av_read_frame()读取视频帧并解码,顺序是IPBBPBB…
它们的pts顺序是1423756…现在我要把这个视频再用mpeg2编码,*大b帧数还是2.那么我在编码时是否要将视频数据调整为按显示时间先后的顺序,再交给avcodec_encode_video()编码?即把第2帧放在3、4帧之后,第7帧放在5、6帧之后?

A:你不能这么做,编码器会给你这么做的。如果你有B帧,那么所有的B帧都会被放在缓冲区里直到下一个I/P帧到来

例如:你的输入序列是IBBPBBPBBI

那么输出的序列是

输入I,编码I,输出I

输入B

输入B

输入P,编码P,输出P

编码B,输出B

编码B,输出B

输入P,编码P,输出P

。。。。。。

在解码端所有的P帧都会被放在缓冲力直到下一个I/P真的到来

如:解码I,输出I

解码P,放入缓冲P

解码B,输出B

解码B,输出B

解码P,输出上一次P帧

Q:解码出来的图片的时间戳问题 MPEG一个包中包含有时间戳, 而可能几个包才能解码出一张图象, 也可能一个包能解码出几张图, 请问包中的时间戳与解码出来的图象如何对应上?

A: 在ffmpeg中通过parser部件把从avformat部件取下来的原始包重新“合成”为有仅包含一个完整帧的包。从MPEG2部份的代码中看出,如 果“几个包才能解码出一张图象”的话,会取*个包的PTS和DTS,如果“也可能一个包能解码出几张图”,则会跟据这个包的PTS和DTS通过帧频推算 出其它帧的DTS。

Q: ffmpeg的avcodec_decode_video 函数解码时间戳问题?在 VLC 中调用 avcodec_decode_video() 函数进行解码时,AVFrame->pts 时间戳不对,导致我的图像不能够显示? 请问有谁知道它的解码原理,这个 PTS 怎么得出的吗?还是外部传入的?

A: /* NOTE: ipts is the PTS of the _first_ picture beginning in
this packet, if any */
is->video_st->codec->reordered_opaque= pkt->pts;
len1 = avcodec_decode_video(is->video_st->codec,
frame, &got_picture,
pkt->data, pkt->size);

if( (decoder_reorder_pts || pkt->dts == AV_NOPTS_VALUE)
&& frame->reordered_opaque != AV_NOPTS_VALUE)
pts= frame->reordered_opaque;
else if(pkt->dts != AV_NOPTS_VALUE)
pts= pkt->dts;
else
pts= 0;
pts *= av_q2d(is->video_st->time_base);

Q:我贴下 VLC 的代码,(vlc-0.9.8a/modules/codec/avcodec/video.c 文件中)

i_used = avcodec_decode_video( p_sys->p_context, p_sys->p_ff_pic,
&b_gotpicture,
p_sys->i_buffer <= 0 && p_sys->b_flush ? NULL : (uint8_t*)p_sys->p_buffer, p_sys- >i_buffer );

中间省略

取得 PTS ,

if( p_sys->p_ff_pic->pts )
{
printf(” p_sys->p_ff_pic->pts = %Lx\n”, p_sys->p_ff_pic->pts);
p_sys->i_pts = p_sys->p_ff_pic->pts;
}

从 AVFrame 结构中取得 这个 PTS ,但是这个 AVFrame 结构中取得 这个 PTS 从哪里取得的呢?

A:时间戳一般是在编码的时候加入到媒体文件中的,所以在解码时可以从中分析出PTS。

服务端统一时间戳 boost::date_time UTC

多服务器在多时区部署时, 需要按utc时间统一计算。

可以使用boost::date_time

#include <boost/date_time.hpp>
#include <iostream>
#include <string>
using namespace std;
using namespace boost;
using namespace boost::gregorian;
using namespace boost::posix_time;

int main(int, char *[])
{
ptime ct2(second_clock::universal_time()); //输出的就是UTC时间。 如果是使用second_clock::local_time()构造, 得到的就是localtime
cout << to_simple_string(ct2) << endl;

return 0;
}

无需其他库、或者自己写的程序, 太易出错了

时间戳引起的网站访问不了的问题

针对有些用户能ping通我们的网站,但是连接时超时服务器没有任何响应,怀疑问题处在了了http的三次握手环节,这是决定通过抓包进行分析:

1、有问题机器的截图:

2、正常机器的截图:

3、发现问题

从抓包数据发现,web服务器对出问题机器和正常机器系统的tcp syn包都返回ACK包,但存在问题发出的tcp syn包有时候响应,有时候不响应。不响应时,终端与web服务器之间的tcp连接无法正常建立,导致页面不能打开。对比这两种数据包,就在时间戳上有差异,存在问题的机器发出的tcp syn包带有时间戳,因此怀疑时间戳问题导致的故障。

4、解决问题

既然怀疑是时间戳导致的,那我们就着手分析如果将出现问题的机器的时间戳去掉会不会解决问题。针对带有时间戳的tcp syn包不响应的问题,查阅了相关资料得知产生问题的原因是出问题系统中的注册表中有Tcp1323opts这个选项,会导致其在发包时加入时间戳,经过nat之后,如果前面相同的端口被使用过,且时间戳大于这个链接发出的syn中的时间戳,服务器上就会忽略掉这个syn,不返会syn-ack消息,表现为用户无法正常完成tcp3次握手,从而不能打开web页面。在业务闲时,如果用户nat的端口没有被使用过时,就可以正常打开;业务忙时,nat端口重复使用的频率高,很难分到没有被使用的端口,从而产生这种问题。

目前看有两种方法解决:

(1)    是在服务器上修改变量

首先我们先查看一下我们服务器net.ipv4.tcp_timestamps的默认值,如果该值为0测说名不是该问题导致,如果是1我们需要将该值设置为1。

查看默认值的方法:[root@localhost ~]# cat /proc/sys/net/ipv4/tcp_timestamps

修改该值的方法:vim /etc/sysctl.conf  添加 net.ipv4.tcp_timestamps=0

(2)修改客户端的注册表Tcp1323Opts设置为0。

 

备注:

Tcp1323Opts

说明:该参数控制 RFC 1323 时间戳与窗口缩放选项。默认情况下,启用时间戳与

窗口缩放,但是可以使用标志位进行控制。0 位控制窗口缩放,1 位控制时间戳。

值为0(禁用 RFC 1323 选项)

值为1(仅启用窗口缩放)

值为2(仅启用时间戳)

值为3(两个选项均启用)

 

net.ipv4.tcp_timestamps=0

说明:时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉。

值为0(禁用时间戳)

值为1(启用时间戳)

 

只有客户端和服务端都开启时间戳的情况下,才会出现能ping通不能建立tcp三次握手的情况,所以做为提供服务的公司,不可能保证所有的用户都关闭时间戳,这个功能,所以我们必须关闭时间戳,这样才能给所用用户提供正常的服务。

使用该命令使其立马生效:/sbin/sysctl-p

国内常用NTP服务器地址及IP

210.72.145.44 (国家授时中心服务器IP地址)

133.100.11.8 日本 福冈大学
time-a.nist.gov 129.6.15.28 NIST, Gaithersburg, Maryland
time-b.nist.gov 129.6.15.29 NIST, Gaithersburg, Maryland
time-a.timefreq.bldrdoc.gov 132.163.4.101 NIST, Boulder, Colorado
time-b.timefreq.bldrdoc.gov 132.163.4.102 NIST, Boulder, Colorado
time-c.timefreq.bldrdoc.gov 132.163.4.103 NIST, Boulder, Colorado
utcnist.colorado.edu 128.138.140.44 University of Colorado, Boulder
time.nist.gov 192.43.244.18 NCAR, Boulder, Colorado
time-nw.nist.gov 131.107.1.10 Microsoft, Redmond, Washington
nist1.symmetricom.com 69.25.96.13 Symmetricom, San Jose, California
nist1-dc.glassey.com 216.200.93.8 Abovenet, Virginia
nist1-ny.glassey.com 208.184.49.9 Abovenet, New York City
nist1-sj.glassey.com 207.126.98.204 Abovenet, San Jose, California
nist1.aol-ca.truetime.com 207.200.81.113 TrueTime, AOL facility, Sunnyvale, California
nist1.aol-va.truetime.com 64.236.96.53 TrueTime, AOL facility, Virginia
————————————————————————————————————
ntp.sjtu.edu.cn 202.120.2.101 (上海交通大学网络中心NTP服务器地址)
s1a.time.edu.cn 北京邮电大学
s1b.time.edu.cn 清华大学
s1c.time.edu.cn 北京大学
s1d.time.edu.cn 东南大学
s1e.time.edu.cn 清华大学
s2a.time.edu.cn 清华大学
s2b.time.edu.cn 清华大学
s2c.time.edu.cn 北京邮电大学
s2d.time.edu.cn 西南地区网络中心
s2e.time.edu.cn 西北地区网络中心
s2f.time.edu.cn 东北地区网络中心
s2g.time.edu.cn 华东南地区网络中心
s2h.time.edu.cn 四川大学网络管理中心
s2j.time.edu.cn 大连理工大学网络中心
s2k.time.edu.cn CERNET桂林主节点
s2m.time.edu.cn 北京大学

ntp服务器是什么,有什么用?

ntp服务器隶属于小众时间频率行业,对于初次接触者和未涉猎此行业的人群来说,就会有很大的疑问:ntp服务器能做什么,为什么会需要ntp服务器?

本文主要通过这两个问题,对ntp服务器进行分总式的说明,希望更多的人能认识ntp服务器,了解ntp服务器,并意识到随着科学技术发展ntp服务器对人文生活,科技发展的重要性和不可或缺性。

ntp服务器是什么,有什么用?

1、什么是ntp服务器?

ntp服务器,对大多数人来说是一个一穷二白的陌生词汇,但是要理解ntp服务器必须先了解什么是ntp和什么是服务器?

1)什么是ntp?

NTP全名“Network TimeProtocol”,即网络时间协议,是由RFC 1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步。

NTP基于UDP报文进行传输,使用的UDP端口号为123。使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用。对于运行NTP的本地系统,既可以接收来自其他时钟源的同步,又可以作为时钟源同步其他的时钟,并且可以和其他设备互相同步。

2)什么是服务器?

服务器,英文名“server”也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

在网络环境下,根据服务器提供的服务类型不同,分为文件服务器,数据库服务器,应用程序服务器,WEB服务器等。

3)什么是NTP服务器?

前面我们分别了解到了NTP和服务器,那到底是什么NTP服务器呢?根据表面意思理解NTP服务器,即基于NTP协议的服务器,用来在分布式时间服务器和客户端之间进行时间同步。

NTP服务器在应用于时间同步中分为客户端NTP服务器和服务端NTP服务器两种。客户端主要应用于现有NTP网络环境中,获取前端NTP服务器,主要是利用已经存在的网络环境,搭建时间同步系统,实现的是一个从时钟的功能。服务端NTP服务器主要是指用于后端网络环境中设备的时间同步,为网络中的服务器,计算机等网络设备提供一个时间统一的功能,实现主时钟的同步功能。

2、ntp服务器能做什么?

前面,我们很自然的了解到了什么是ntp,也有了一个大概的认识,那么ntp服务器是做什么的,它到底能做什么,这也是我们对于ntp服务器这个名称属性放在这里,我们*需要传达的东西。

NTP服务器主要用来同步网络中各个计算机的时间的协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网上*大多数的地方其精度可以达到1-50ms。它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)进行时间同步,它可以提供高精准度的时间校正,而且可以使用加密确认的方式来防止病毒的协议攻击。

很多人可能会说,我的计算机每天自己走时,为何还需要用一个ntp服务器再同步时间呢?这主要是因为在计算机中芯片本身通常并不具备时钟信号源,因此须由专门的时钟电路提供时钟信号,石英晶体振荡器(Quartz Crystal OSC)就是一种*常用的时钟信号振荡源。石英晶片之所以能当为振荡器使用,是基于它的压电效应:在晶片的两个*上加一电场,会使晶体产生机械变形;在石英晶片上加上交变电压,晶体就会产生机械振动,同时机械变形振动又会产生交变电场。虽然这种交变电场的电压*其微弱,但其振动频率是十分稳定的。

从PC诞生至今,主板上一直都使用一颗14.318MHz的石英晶体振荡器作为基准频率源。主板上除了这颗14.318MHz的晶振,还能找到一颗频率为32.768MHz的晶振,它被用于实时时钟(RTC)电路中,显示精确的时间和日期。初始化后以每秒约18.2次发出脉冲,这些脉冲经过操作系统计算形成BIOS日时钟计数。通过由BIOS电池供电,关机后它仍然正常运行。这也就是为啥我们关了电源,第二天开机依然会显示正确时间的原因。

每个计算机各自有了时钟,但是一旦它们联网后,又出现一个问题:各自运行的计算机时钟,彼此之间日积月累的累计误差如何解决。这就出现了网络时间协议NTP,它是用于互联网中时间同步的标准之一,它的用途是把计算机的时钟同步到世界协调时UTC,并满足于用户环境中的计算机(服务器同理)设备的时间同步。

3、为什么要使用ntp服务器?

对大多数人来说可能会很疑问,我的计算机时间已经够我用了啊,我为何需要单独的ntp服务器。那么问题来了,一个系统里整体运行的所有计算机服务器,如果都独立运行那整个系统工作是否都乱套了?

我们举几个简单的例子:如果公共大楼遇到突发事情每个监控装置时间不一,后期事故调查取证监控时间参差不齐无法还原本质,责任谁来担当?医院系统各个科室职能兼受,若时间相互差开,病人数据记录与实际时间前后出入,若出现分歧责任甩给设备原因,设备是否能够出面来协调?电力电厂系统中有很多需要互相协调合作的设备,若出现各个系统设备之间时间紊乱,就会导致运行机制无法协调合作,那整个电厂的运行失调,所造成的损失无法估量。

所以,ntp服务器在各行各业系统发挥协调作用的同时,已经成为了不可或缺的必备系统,是各个系统稳定运行基于安全因素中必须存在的重要设备。ntp服务器服务器应用于不同行业系统中,为网络内设备提供标准的时间基准,使得各个独立又相互关联的设备有了可参考的维度标准。

随着科技电子产业的发展,ntp服务器在社会国家发展中具有必然存在的重要性。在不同行业,不同领域中由于系统环境的要求对ntp服务器的配置也不尽相同。

适用于国内的 NTP 服务器地址,可用于时间同步或 Android 加速 GPS 定位

NTP 是什么?
NTP 是网络时间协议(Network Time Protocol),它用来同步网络设备【如计算机、手机】的时间的协议。

NTP 实现什么目的?
目的很简单,就是为了提供准确时间。因为我们的手表、手机、电脑等设备,经常会跑着跑着时间就出现了误差,或快或慢的少几秒,时间长了甚至误差过分钟。

NTP 服务器列表
*常见、熟知的就是 www.pool.ntp.org/zone/cn,国内地址为:cn.pool.ntp.org

Windows 系统上自带的俩个:time.windows.com 和 time.nist.gov

Mac OS X 上自带的俩个:time.apple.com 和 time.asia.apple.com

一个国内无偿提供的 NTP 服务器,速度挺快,但地址池有两个 IP 已不可用,我已邮件给官方。官网:NTP授时快速域名服务,NTP 服务器:cn.ntp.org.cn

来自阿里云的 NTP 服务器:

ntp.aliyun.com

ntp1.aliyun.com

ntp2.aliyun.com

ntp3.aliyun.com

ntp4.aliyun.com

ntp5.aliyun.com

ntp6.aliyun.com

ntp7.aliyun.com

注意! ntp.aliyun.com 和 ntp2 – ntp7 均为同一个服务器,实际只有 ntp.aliyun.com 和 ntp1.aliyun.com 两个服务器。
1
新增一个国家授时中心:ntp.ntsc.ac.cn

Android 中怎么修改 NTP 服务器地址加速 GPS 定位呢?
要修改这货,除了部分第三方 ROM 在设置里直接可以修改外,就只能 ROOT 后修改了。ROOT 有风险,请考虑清楚后再操作。

确保手机已 ROOT 并已安装上权限管理软件(例如 SU 什么的……就不多提了)
挂载 /system 读写权限(ES/RE 文件管理器里可以设置挂载)
进入 /system/etc 目录,找到 gps.conf 文件,先复制一个备份一下命名为 gps.conf.bak
编辑 gps.conf 文件,找到:NTP_SERVER=north-america.pool.ntp.org【也许值不一样,找到 NTP_SERVER 就对了】
修改其为上方任一 NTP 服务器地址即可,推荐 cn.ntp.org.cn 或阿里云,修改后保存并关闭即可,注意重启手机生效。

nginx静态资源服务器简单配置

传统的web项目,一般都将静态资源存放在 webroot的目录下,这样做很方便获取静态资源,但是如果说web项目很大,用户很多,静态资源也很多时,服务器的性能 或许就会很低下了。这种情况下一般都会需要一个静态资源的服务器。

搭建nginx服务器首先得安装nginx服务,关于nginx服务的安装可以参考我的另一篇博客《nginx服务安装》这里直接介绍静态服务器的配置
进入nginx安装目录的conf目录下,修改nginx.conf文件,在一个server{}中添加 一个location 部分配置代码如下

root@ubuntu:/usr/local/nginx/conf# vi nginx.conf
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location /image/ {
root /usr/local/myImage/;
autoindex on;
}

}

从上面的配置可以看出来 端口为80,server_name为localhost(写ip地址也可以)

location /image/ {
root /usr/local/myImage/;
autoindex on;
}

这个配置表示输入 localhost:80/image/ 时会访问本机的/usr/local/myImage/image/ 目录。所以要新建/usr/local/myImage/image/ 目录,同时还要在nginx安装目录的html目录中新建一个 与 location中 image同名的image目录,虽然该目录里面什么也没有,在/usr/local/my Image/image/ 中我们放一张图片1.jpg上去,重启nginx服务,就可以通过 localhost:80/image/1.jpg访问了

root@ubuntu:/usr/local/nginx/html# mkdir image

root@ubuntu:/usr/local/nginx/html# mkdir /usr/local/myImage/image
#放一张照片上去#
root@ubuntu:/usr/local/nginx/html# cd /usr/local/myImage/image
root@ubuntu:/usr/local/myImage/image# ls
1.jpg
root@ubuntu:/usr/local/myImage/image#

重启 nginx

root@ubuntu:/usr/local/nginx/sbin# ./nginx -s reload
root@ubuntu:/usr/local/nginx/sbin#

打开浏览器 输入 server_name:80/image/1.jpg 就可以访问该静态图片了

您也可以移除掉root 和 autoindex 配置,直接在html目录下的image目录下新建一张图片1.jpg。

或者在nginx.conf 配置中在server下配置root 如下

server {
listen 88;
server_name localhost;
root /home/ubuntu/static/;
}

访问 http:hostName:88/dir/file 就会自动访问 服务器/home/ubuntu/static/dir 目录下的文件file

注意nginx的启动用户,确保该用户有权限访问目录下的文件
新版本nginx的启动用户为 www-data!

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速