分类目录归档:网络

TCP三次握手四次挥手笔记

TCP是一个面向连接的协议,通信双方传输数据之前,必须建立连接。TCP建立连接和断开连接的策略,可以分不同层次的掌握,这里大致分4层。

一、通俗化的描述
建立TCP连接
服务器A和服务器B通信,建立连接比较好理解的比喻:
服务器A:你好服务器B,我是服务器A。
服务器B:你好服务器A,我是服务器B。
服务器A:服务器B,你好。

断开TCP连接
设定服务器A是主动结束方
服务器A:你好, 我的数据发送完毕了,我要进入准备断开的状态了。(此时它虽然不再发送数据了,但是可以接受数据)
服务器B:我知道了,我还没有发送完毕的,你等着吧。
服务器B:我也发送完毕了,可以断开连接了。(此时它也进入准备断开的状态)
服务器A:好的,那断开吧。
继续阅读

图解HTTP笔记

《图解HTTP》用大量生动的图片,轻松、完整的讲解了一遍HTTP协议, 比那本大部头《HTTP》容易通读。2年之前看过,今天又翻看了下,有常看常新的感觉,特作一些笔记。

0、协议是计算机和网络设备之前通信的规则。规则的内容包含,如何探测到通信目标、由那一方先发起通信、怎么结束通信、使用那种语言通信等。

1、互联网是在TCP/IP协议族的基础上运作的,而HTTP属于它内部的一个子集。

2、TCP/IP通过分层管理协议,分4层即应用层、传输层、网络层、数据链路层。分层之后设计简单,每层只考虑自己层的任务,另外方便局部调整层的设计。

3、发送端数据包经过封包过程到达接送端,接收端经过拆包过程,把数据包送到接收端应用程序。
继续阅读

微博投票XSS漏洞

0、案例描述

收到了公司安全组发来的一个反射型XSS漏洞提醒,修复建议:请在参数值输出点做过滤或者编码转换,
链接如下:

http://vote.weibo.com/widget?vid=2977008&skin=&isCustom=1&height=448zdxxn"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%3Ealert(1)%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="<script>" title="<script>" />yptrj

点开后确实呈现了一个弹窗,查看了接收参数和展示参数的地方, 直接展示了接收到的参数。

// controller
$r = $this->getRequest();
$wiget_width = $r->getQuery('width', 600);
$wiget_height = $r->getQuery('height', 600);

// view

<div style="height: <?=$wiget_height?>px" >;

快速做了一个类型转换,上线修复了问题

$wiget_width  = intval($r->getQuery('width', 600));
$wiget_height = intval($r->getQuery('height', 600));

继续阅读

PHP-FPM占用CPU过高分析及OPcache解决

平时站点CPU使用率都在10%以内,最近发现达到了50%左右
top查看服务器资源使用情况:

%Cpu0  : 41.9 us,  1.3 sy,  0.0 ni, 56.1 id,  0.3 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem :  1016164 total,    68120 free,   583512 used,   364532 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   251176 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 5705 www       20   0  281272  40360   4516 S 15.0  4.0   0:09.09 php-fpm
 5704 www       20   0  281292  40604   4584 S  8.0  4.0   0:08.89 php-fpm
 5706 www       20   0  281124  41124   5296 S  8.0  4.0   0:08.80 php-fpm
 5707 www       20   0  281328  40596   4580 S  7.7  4.0   0:08.77 php-fpm

继续阅读

Linux网站打开慢之mtr工具探测分析

一个Web应用,通过浏览器来访问,发现页面加载很慢,我们可以用下面的步骤来初步排查问题:
一、初步排查方法
0、打开浏览器调试模式,简单看看是否有报错,加载明显慢的资源。【如有,代码优化】
1、ping域名,看解析是否正常。
2、切换其他网络,比如4G,查看是否正常。或者借助第三方网络测试工具,测试全国其他节点
http://tool.chinaz.com/speedtest.aspx
3、登陆服务器,查看负载、带宽是否正常。
继续阅读

查看TCP端口监听程序netstat和lsof差异

经常需要查看服务器上端口(例如9006端口)占用情况,以及是被哪些程序监听的。Linux上有两个工具都可以完成我们的任务: netstat和lsof。下面就分别介绍下这两个工具的查看方法。

一、netstat
0、功能:查看网络状态(具体可见man netstat)。
1、安装:一般发行版Linux都自带,如果没有,Centos下可通过如下命令安装。

yum -y install net-tools

继续阅读