网络
一支兰州
这个作者很懒,什么都没留下…
展开
-
集线器,交换机,路由器。。
集线器-------集线器也叫Hub,工作在物理层(最底层),没有相匹配的软件系统,是纯硬件设备。集线器主要用来连接计算机等网络终端。 集线器为共享式带宽,连接在集线器上的任何一个设备发送数据时,其他所有设备必须等待,此设备享有全部带宽,通讯完毕,再由其他设备使用带宽。正因此,集线器连接了一个冲突域的网络。所有设备相互交替使用,就好象大家一起过一根独木桥一样。转载 2014-09-11 21:19:34 · 515 阅读 · 0 评论 -
Ip冲突检测
有一个IP地址冲突意味着有一个以上的网络设备或计算机的IP地址相同。在给服务器配置IP的时候,如果前期没有做好IP地址规划,IP地址使用明细登记,有可能就将已再用的IP又分配给另一台服务器。那么怎么检测 IP地址冲突呢?可以使用arp-scan工具。该工具在局域网内发送ARP数据包,来收集IP和MAC地址信息。如果一个IP地址对应多个MAC地址,就说明IP冲突了。1. 安装转载 2016-04-22 16:44:30 · 20386 阅读 · 0 评论 -
进程间通信-管道(PIPE)和有名管道(FIFO)
前面我们学习了一下进程,我们知道多,进程间的地址空间相对独立。进程与进程间不能像线程间通过全局变量通信。 如果想进程间通信,就需要其他机制。 常用的进程间通信方式有这几种A.传统的进程间通信方式无名管道(pipe)、有名管道(fifo)和信号(signal)B.System v IPC对象共享内存(share转载 2016-03-22 18:52:34 · 7556 阅读 · 0 评论 -
libuv和libev的区别
libuv 和 libev ,两个名字相当相近的 I/O Library,最近有幸用两个 Library 都写了一些东西,下面就来说一说我本人对两者共同与不同点的主观表述。高性能网络编程这个话题已经被讨论烂了。异步,异步,还是异步。不管是 epoll 也好,kqueue 也罢,总是免不了异步这个话题。libev 是系统异步模型的简单封装,基本上来说,它解决了 epoll ,kqueuq 与 sel转载 2016-03-08 22:45:25 · 693 阅读 · 0 评论 -
网络编程nagle算法和TCP_NODELAY
之前写过一篇blog ,描述了用mina的时候写socket发现的一个诡异现象,当时将多个小数据写操作合并成一个写操作,问题就没了。Chenshuo同学还建议我设置TCP_NODELAY,只是后来因为事情忙,也就没有再深究下去。现在大概明白,是由于nagle算法在捣乱。TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。转载 2016-03-07 08:59:26 · 587 阅读 · 0 评论 -
库-libuv:概述
libuv 是 Node 的新跨平台抽象层,用于抽象 Windows 的 IOCP 及 Unix 的 libev。作者打算在这个库的包含所有平台的差异性。特性: 非阻塞 TCP 套接字 非阻塞命名管道 UDP 定时器 子进程生成 通过 uv_getaddrinfo 实现异步 DNS 异步文件系统 API:uv_fs_* 高分辨率时间:u转载 2016-03-18 08:56:14 · 17463 阅读 · 0 评论 -
epoll的读写方式
在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:EAGAIN: 再试一次,EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block,perror输出: Resource temporarily unavailable总结:这个错误表示资源暂转载 2015-07-12 10:31:11 · 1311 阅读 · 1 评论 -
网络编程中最小堆实现的定时器
在开发Linux网络程序时,通常需要维护多个定时器,如维护客户端心跳时间、检查多个数据包的超时重传等。如果采用Linux的SIGALARM信号实现,则会带来较大的系统开销,且不便于管理。本文在应用层实现了一个基于时间堆的高性能定时器,同时考虑到定时的粒度问题,由于通过alarm系统调用设置的SIGALARM信号只能以秒为单位触发,因此需要采用其它手段实现更细粒度的定时操作,当然,这里不考虑转载 2015-05-13 16:37:39 · 4489 阅读 · 1 评论 -
libev整体设计
转自:http://m.blog.csdn.net/blog/weiqubo/16355653libev是Marc Lehmann用C写的高性能事件循环库。通过libev,可以灵活地把各种事件组织管理起来,如:时钟、io、信号等。libev在业界内也是广受好评,不少项目都采用它来做底层的事件循环。node.js也是其中之一。 学习和分析libev库,有助于理解node.js底层的工作原理,转载 2015-05-05 15:25:00 · 1538 阅读 · 0 评论 -
非阻塞listenfd
先说一下为什么要使用非阻塞的accept.如果我们使用select或者epoll对listenfd进行监控,正常情况下,三次握手完成之后,服务器端维护了一个队列来保存这些连接,select或者epoll会触发listenfd的可读事件来待程序员调用accept返回这个连接的描述字.但是有一些特殊的情况在本博客中的TCP连接中的close和shutdown一文中提到了一种情况.调用close函数,并转载 2015-05-11 21:06:32 · 2561 阅读 · 0 评论 -
网段,局域网,互联网 及 集线器,网桥,路由器的区别
深入理解计算机系统--网络编程1. 网络中的基本概念网络,网段,局域网,互联网 网络 是一个按照地理位置远近组成的层次系统。最底层是LAN,迄今为止,最流行的局域网技术是以太网。 以太网段由一些电缆和集线器组成。使用在较少的范围,如一个房间。每根电缆都有相同的最大位带宽(同一网段内,各主机到集线器的最大传输带宽相同)。集线器不加区分将一个端口上接收到转载 2014-09-28 21:48:26 · 1142 阅读 · 0 评论 -
为什么要三次握手
TCP 三次握手TCP 连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程:1. 客户端向服务器发送一个SYN置位的TCP报文,其中包含连接的初始序列号x和一个窗口大小(表示客户端上用来存储从服务器发送来的传入段的缓冲区的大小)。 2. 服务器收到客户端发送过来的SYN报文后,向客户转载 2016-03-22 16:25:01 · 449 阅读 · 0 评论