VMWare克隆CentOS 6系统导致无法启动网络解决记录

公司服务器上周挂了后,需要新的系统,于是用了之前服务器导出的CentOS6的镜像。 成功部署后,发现无法访问,控制台登陆后发现network.service没起来,于是重启network. [root@localhost]# service network restart Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth1: Error: No suitable device found: no device found for connection’System eth1′. … “VMWare克隆CentOS 6系统导致无法启动网络解决记录”

Read More

深入WebSocket协议

无论是 HTTP 还是 HTTPS协议,它们一出场就已经定死了只能是短连接,而诸如基于 Jquery 或 Ajax 靠定时器轮询的请求来实现长连接的方法却会加大服务端的资源消耗,只能是旁门左道。即便服务端有 HTTP Keepalive 这种连接复用,仍旧无法避免一段空闲时间后就断开连接的尴尬,尤其是中间还有不可预知的网关也可能会关闭这个连接,并且服务端一旦配置不当,TCP长连接在服务端未能及时释放造成资源消耗加剧,就会出现类似雪崩效应。 并且基于短连接,HTTP/HTTPS 协议就产生了一个巨大缺陷,即请回只能由客户端发起,服务端只能做回应,不能做主动推送,因为服务端不知道客户端何时会将连接关闭(TCP是双工的,而各个浏览器的实现也不一样)。 因此就急需一种能够让浏览器支持并兼任HTTP/HTTPS协议的TCP长连接。 时代造就英雄,这种环境下便有了WebSocket。 WebSocket 协议在2008年诞生,由谷歌提出(话说Ajax也是谷歌提出的),是 HTML5 种的一个协议规范,2011 年成为国际互联网标准规范 RFC 6455,跟随着 HTML5 的步伐一同面世,主流浏览器早已全部支持了。 WebSocket 的优点有: 底层基于 TCP 实现的长连接协议,双工的性质使得服务端能主动推送信息 同样可以使用 80 和 443 端口,协议转换通过 HTTP/HTTPS … “深入WebSocket协议”

Read More

TCP Fast Open 的实现

前两天重装VPS的时候突然发现Shadowsocks支持[TCP Fast Open 特性],找了会资料才理解这个. TCP Fast Open简称TFO,是谷歌为了加速网络传输速度和效率,其特性就是在三次握手的第一次握手时客户端发送(syn+TFO cookie)包;服务端收到后,如果其支持TFO则发出了(ack+syn+TFO cookie)回应包后,立即就开始发数据包,缩短了TTFB的时间;如果服务端不支持TFO,则会发送正常的(syn+ack)回应包,走正常的三次握手流程. 因此,使用TFO的特性需要两端都支持TFO.客户端侧需要Linux Kernel 3.6及以上版本;而服务端侧则是Linux Kernel 3.7及更高版本才支持.并且服务端侧需要设置内核的net.ipv4.tcp_fastopen参数为2或3. net.ipv4.tcp_fastopen参数释义: 1 表示客户端请求开启. 2 表示服务端请求开启. 3 表示客户端与服务端请求同时开启. 服务端使用命令: echo “net.ipv4.tcp_fastopen=3” >> /etc/sysctl.conf sysctl -p 客户端使用命令: echo “net.ipv4.tcp_fastopen=1” >> /etc/sysctl.conf sysctl -p … “TCP Fast Open 的实现”

Read More

理解TCP的握手与挥手

握手 As we know, TCP 相比于 UDP 而言, TCP 提供可靠的连接服务,而它建立一个链接的时候,采用三次握手(three-way handshake),那什么是三次握手呢? For example: 1. 漆黑的夜里,你在路上散步发现对面有个熟人,你想去聊会天,于是你先向对方打了声招呼. 2. 对方听到了你的招呼声,于是也向你回了一声. 3. 你听到了对方的回应,于是向对方挥挥手致意. 第一次握手,你(client)想和对方(server)说话(connect),于是先和对方打了声招呼(syn=j). 第二次握手,对方听到了你的回应,于是并回了一声,表示自己听到了(ack=j+1, syn=k). 第三次握手,你也听到了对方的回应,知道对方已经认出你了,于是挥手表示自己也听到了.(ack=k+1) 很浅显得道理,但非常有效的连接方式.为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手. 挥手 要知道,一个socket连接是双工的,两端都可以同时收发,相当于一个连接中存在两条管道.因此TCP在关闭连接的时候,需要将两条管道都关闭. 而如何能确保两条管道都安全的关闭呢? For example: 1. A 和 B已经建立了连接,此时 A 决定要关闭连接了,于是 … “理解TCP的握手与挥手”

Read More

网络协议粗略复习记录

[TOC] 重新看了点《TCP/IP详解》,粗略的把知识归纳下. 关于分层 网络分层让我很糊涂,有四层协议,五层协议,还有七层协议的. 总所周知,网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。 TCP/IP通常被认为是一个四层协议系统,当然也有人将其分为五层协议的,貌似这么分好像也合理,因为物理设备也确实不能少,还有理论上的OSI七层模型: 越下面的层,越靠近硬件;越上面的层,越靠近用户. 至于每一层叫什么名字,其实并不重要,每一层都是为了完成一种功能. 为了实现这些功能,就需要大家都遵守共同的规则,而大家都遵守的规则,就叫做协议(protocol). 关于协议 网络的每一层,都定义了很多协议.而TCP/IP协议是一个统称,它是一个大家族,不仅仅只有TCP协议和IP协议,它还包括其它的协议,如: 物理层 常见介质有铜绞线、光缆、无线介质(电磁波、微波、红外线) 物理层主要负责基本的信息传输以及传输控制工作。 人们可以使用电线来进行传输,也可以使用光纤来进行传输,甚至可以是无线电磁波. 对于不同的介质,产生的信号也是不同的,物理层就是要规定介质和信号的规范. 常见接口规范: RS-232(串口)、FDDI、IEEE802.3z、IEEE802.3ae、IEEE802.11 链路层 使用物理连接后的设备,通过高低频的电子信号传输信息,然后接收端的设备通过特定的算法识别这些信号.早期的时候,每家公司都有自己的电信号分组方式,十分混乱,由此成立了 IEEE 802委员会 来制定数据由物理层到链路层相关的一系列标准.再之后,IEEE802系列标准中叫做 802.3 “以太网”(Ethernet)RFC 894的协议,逐渐地占据了主导地位. 以太网协议规定: 1. 一组电信号构成一个数据包,叫做”帧”(Frame).每一帧分成两个部分: 标头(Head),数据(Data),尾部校验(CRC). 2. “标头”包含数据包的一些说明项,包括目的地址(6字节),源地址(6字节),类型(2字节).其总长度固定为 14 字节,. 3. … “网络协议粗略复习记录”

Read More

scp与bbcp

早上在网上冲浪闲逛.发现CSDN的论坛有人讨论scp性能问题,有人提出bbcp要比scp牛,实践是检验真理的唯一标准.于是哥就亲自尝试了下. bbcp是个功能类似scp的免费开源的点对点网络文件拷贝工具软件,使用GPL开源协议.来自SLAC(斯坦福直线加速器中心),作者是Andy Hanushevsky. 首先到bbcp的下载页面下载适合自己系统的二进制版本,放到系统路径下便可以使用了. 接着开放对应的端口: iptables -A INPUT -s 172.16.66.65 -p tcp –dport 5031 -j ACCEPT 测试环境网络为是千兆局域网. #生成测试的文件,并放到内存中,这样可以避免硬盘读写速度的影响. dd if=/dev/zero of=/dev/shm/1024mb.zip bs=1024k count=1024 #首先测试scp scp /dev/shm/1024mb.zip [email protected]:/dev/shm/ 1024mb.zip       100%   1024MB   100.9MB/s      … “scp与bbcp”

Read More