
网络技术
文章平均质量分 55
tobealv
这个作者很懒,什么都没留下…
展开
-
桥接模式,外界与主机通,与虚拟机不通
在此选择Windows与外界连接的网卡,通过有线连就选有线网卡,通过无线连就选无线网卡。原创 2024-10-22 09:34:51 · 498 阅读 · 0 评论 -
基于拨号网络的域名解析
(1)确认系统中/lib是否有libnss_dns* 和libresolv*相关库。(2)拨号后,如果resolv.conf不是产生在/etc下,则手动建立软链接。原创 2023-11-28 14:51:45 · 484 阅读 · 0 评论 -
路由器当交换机用的设置方法
路由器自身集成一个交换机的功能,能将路由器当交换机使用。假设A路由器是一级,B路由器是二级。B路由器上的WAN口用不着,将B路由器的某个LAN口接到A路由器的某个LAN口上,将电脑接到B路由器的某个LAN口上,路由器就可以当交换机使用。即:外网----WAN口----A路由器----LAN口----B路由器----LAN口----计算机1、更改B路由器的LAN口地址,也就是通常那个192.168.0.1,因为一般路由器默认出厂的LAN口地址是一样的,更改以避免两个路由器的LAN口地址一样而I原创 2020-12-22 09:00:27 · 9225 阅读 · 0 评论 -
Iptables移植到嵌入式Linux系统
Linux下支持netfilter机制的配置工具就是iptables,它也就相当与一个应用程序,可以对netfilter进行配置(包过滤规则,NAT等等)。所以要实现netfilter(iptables)就要从两方面来着手:1)内核支持netfilter;2)用户层的iptables配置命令。1.内核配置General setup --->[*] Sysctl support (在ROMFS文件系统中/proc/sys/net/ipv4/出现ip_forward)Networking op原创 2020-05-14 09:28:13 · 737 阅读 · 0 评论 -
window系统查看端口被哪个进程占用了
一、在windows命令行窗口下执行:运行--cmdC:\>netstat -aon|findstr "8080" // 或findTCP 127.0.0.1:80 0.0.0.0:0 LISTENING 2448端口被进程号为2448的进程占用,继续执行下面命令:C:\>tasklist|findstr "2448" // ...原创 2014-12-12 16:44:24 · 562 阅读 · 0 评论 -
两种高性能I/O设计模式(Reactor/Proactor)的比较
综述这篇文章探讨并比较两种用于TCP服务器的高性能设计模式。 除了介绍现有的解决方案,还提出了一种更具伸缩性,只需要维护一份代码并且跨平台的解决方案(含代码示例),以及其在不同平台上的微调。 此文还比较了java、c#、c++对各自现有以及提到的解决方案的实现性能。系统I/O 可分为阻塞型, 非阻塞同步型以及非阻塞异步型[1、2]。 阻塞型I/O意味着控制权只到调用操作结束了才会回到调用者转载 2015-10-10 17:29:07 · 411 阅读 · 0 评论 -
服务器负载均衡的基本功能和实现原理
负载均衡设备作为纵跨网络2-7层协议的设备,往往放置在网络设备和应用设备的连接处,对工程师在网络和应用基本知识方面的要求远高于其他设备,所以我们要在基本功能的理解上下更多的功夫。负载均衡设备还有另外一个称呼:4/7层交换机,但它首先是个2-3层交换机,这要求我们首先掌握2-3层的基本知识,然后才是本文介绍的内容。服务器负载均衡有三大基本Feature:负载均衡算法,健康检查和会话保持,这三个F转载 2015-10-12 16:19:43 · 2295 阅读 · 0 评论 -
socket异步编程--libevent的使用
这篇文章介绍下libevent在socket异步编程中的应用。在一些对性能要求较高的网络应用程序中,为了防止程序阻塞在socket I/O操作上造成程序性能的下降,需要使用异步编程,即程序准备好读写的函数(或接口)并向系统注册,然后在需要的时候只向系统提交读写的请求之后就继续做自己的事情,实际的读写操作由系统在合适的时候调用我们程序注册的接口进行。异步编程会给一些程序猿带来一些理解和编写上的困难,转载 2015-10-12 13:38:43 · 780 阅读 · 0 评论 -
TCP报头里的那个窗口大小到底是指什么
TCP通过滑动窗口的概念来进行流量控制。设想在发送端发送数据的速度很快而接收端接收速度却很慢的情况下,为了保证数据不丢失,显然需要进行流量控制, 协调好通信双方的工作节奏。所谓滑动窗口,可以理解成接收端所能提供的缓冲区大小。TCP利用一个滑动的窗口来告诉发送端对它所发送的数据能提供多大的缓 冲区。由于窗口由16位bit所定义,所以接收端TCP 能最大提供65535个字节的缓冲。由此,可以利用窗口大转载 2016-01-31 15:32:33 · 2946 阅读 · 0 评论 -
关于socket的send和recv的超时设置
一、socket必须是阻塞类型的,否则设置超时毫无意义。二、send的超时不会体现在对send函数的调用上,看msdn的解释:If no buffer space is available within the transport system to hold the data to be transmitted,send will block unless the socket has转载 2015-05-28 16:55:45 · 15603 阅读 · 0 评论 -
关于字节序、大端、小端、网络字节序
1. 首先最要明确一点:字节顺序是长度跨越多个字节的数据原创 2014-11-20 11:04:29 · 2476 阅读 · 0 评论 -
IP的网络字节序
1、c里面的inet_addr返回的是网络字节序2、mysql的inet_aton返回的是主机字节序,其手册上说是网络字节序是不对的3、php的long2ip接收的参数是无符号的主机字节序4、php中没有提供网络字节序和主机字节序之间的转换,可以用以下代码将网络字节序地址转成点分十进制格式// 192.168.5.242的网络字节序$pi = 4060457152;// 注意原创 2013-05-21 18:49:36 · 2079 阅读 · 1 评论 -
关于组播和WSAJoinLeaf
1. WSASocket的参数 WSA_FLAG_MULTIPOINT_C_LEAF,WSA_FLAG_MULTIPOINT_D_LEAF用于创建一个无根套接字,简单说就是组播组里面各成员是平等的,而有根的话是有一个主成员,就好比一个服务器对多个客户端模式,具体解释可参考。有根模式是用于ATM协议的,IP协议用的都是无根模式。2. WSAJoinLeaf仅仅用于加入组播组,一个组是用组原创 2014-11-18 09:26:26 · 3776 阅读 · 0 评论 -
函数inet_addr和inet_ntoa,本机字节顺序与网络字节顺序的转函数的总结
inet_addr : 将"数字+句点"的格式的IP地址转换到unsigned long中,返回值已经是按照网络字节顺序了相反inet_ntoa :把类型为struct in_addr的数据转化为"数字+句点"的形式的字符串typedef u_int32_t in_addr_t;struct in_addr{ in_addr_t s_addr;};本机字节转载 2013-05-21 15:56:46 · 2729 阅读 · 0 评论 -
阻塞套接字和非阻塞套接字
每一个TCP套接口有一个发送缓冲区,可以用SO_SNDBUF套接口选项来改变这个缓冲区的大小。当应用进程调用write时,内核从应用进程的缓冲区中拷贝所有数据到套接口的发送缓冲区。如果套接口的发送缓冲区容不下应用程序的所有数据(或是应用进程的缓冲区大于套接口发送缓冲区,或是套接口发送缓冲区还有其他数据),应用进程将被挂起(睡眠)。这里假设套接口是阻塞的,这是通常的缺省设置。内核将不从write系统转载 2011-12-26 21:24:40 · 1154 阅读 · 0 评论 -
TCP——SYN、ACK、FIN、RST、PSH、URG详解
三次握手Three-way Handshake 一个虚拟连接的建立是通过三次握手来实现的 1. (B) --> [SYN] --> (A) 假如服务器A和客户机B通讯. 当A要和B通信时,B首先向A发一个SYN (Synchronize) 标记的包,告诉A请求建立连接. 注意: 一个 SYN包就是仅SYN标记设为1的TCP包(参见TCP包头Res转载 2015-04-15 21:37:24 · 32158 阅读 · 2 评论 -
iptables详解
一:前言防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。目前市面上比较常见的有3、4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代理层的网关。转载 2016-06-20 13:42:18 · 406 阅读 · 0 评论 -
CreateProcess创建telnet进程提示文件不存在
1. 确保你的系统安装了telnet,具体方法网上搜。2.对于32位系统,CreateProcess(NULL, "telnet.exe 127.0.0.1 60000", NULL, NULL, TRUE, NULL, NULL, NULL, &stStartInfo,&stProcInfo);3.对于64位系统,CreateProcess(NULL, "c:\\windows\\s原创 2016-06-21 09:40:11 · 1236 阅读 · 0 评论 -
SO_REUSEADDR
windows第一个启的程序可以不使用SO_REUSEADDR,只要第二个启的程序使用了SO_REUSEADDR,就可以在相同的地址(IP:PORT)上监听。详细参考:https://www.cnblogs.com/xybaby/p/7341579.html...原创 2019-04-11 17:49:48 · 1577 阅读 · 0 评论 -
recv send 的 MSG_DONTWAIT 、 MSG_WAITALL 参数
基本概念:阻塞IO::socket 的阻塞模式意味着必须要做完IO 操作(包括错误)才会返回。非阻塞IO::非阻塞模式下无论操作是否完成都会立刻返回,需要通过其他方式来判断具体操作是否成功。IO模式设置:一般对于一个socket 是阻塞模式还是非阻塞模式有两种方式::方法1、fcntl 设置;方法2、recv,send 系列的参数。(读取,发送时,临时将so...原创 2018-12-13 17:53:22 · 5606 阅读 · 0 评论 -
WireShark如何抓取本地localhost的包
今天将自己的电脑既作为客户端又作为服务端进行一个程序的测试,想着用WireShark来抓包分析一下问题,但由于WireShark只能抓取经过电脑网卡的包,由于我是使用localhost或者127.0.0.1进行测试的,流量是不经过电脑网卡的,所以WireShark无法抓包,一番查找之下找到了解决方法。1 . 以管理员身份打开命令提示符2 . 输入 route add 本机ip ma...转载 2018-11-26 10:02:24 · 13701 阅读 · 1 评论 -
来看TCP分包粘包MTU和MSS之间的关系分析
IP分片在以太网上,由于电气限制,一帧不能超过1518字节,除去以太网帧头14字节(mac地址等)和帧尾4字节校验,还剩1500字节,这个大小称为MTU(最大传输单元)。如果你的IP包大于1500字节,IP层就会分片了。而1492的MTU值的来源,是因为PPPoE协议。PPP协议是宽带运营商用于对用户认证计费的(TCP/IP以太网无此功能)。PPPoE头尾一共8字节,所以有效载荷MTU变小了,原来转载 2017-02-17 22:18:33 · 2355 阅读 · 0 评论 -
移动通信网络制式
1.2G,GSM(移动/联通),CDMA1X(早期俗称的CDMA,电信)。2.2G-3G过渡,俗称2.5G,GPRS(移动/联通),电信依然用CDMA1X。3.3G,TD-SCDMA(中国移动),CDMA2000(中国电信),WCDMA(中国联通)。4.4G,TD-LTE(移动/联通/电信),FDD-LTE(联通/电信)。SIM900A(采用GPRS制式)既支持移动也支持联原创 2016-12-16 15:35:39 · 6123 阅读 · 0 评论 -
linux route命令的使用详解
使用下面的 route 命令可以查看 Linux 内核路由表。[cpp] view plain copy#route DestinationGatewayGenmaskFlagsMetricRefUseIface 192.168.0.0*255.255.255.0U0...原创 2016-06-29 14:08:51 · 7592 阅读 · 1 评论 -
深入浅出TCP之send和recv
先明确一个概念:每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的滑动窗口便是依赖于这两个独立的buffer以及此buffer的填充状态。接收缓冲区把数据缓存入内核,应用进程一直没有调用read进行读取的话,此数据会一直缓存在相应 socket的接收缓冲区内。再啰嗦一点,不管进程是否读取socket,对端发来的数据都会经由内核接收并且缓存到so转载 2016-08-26 16:26:03 · 634 阅读 · 0 评论 -
Linux中无法连接127.0.0.1
通过ifconfig可以看出,系统未配置lo口。可以在启动脚本中增加ifconfig lo up即可原创 2016-06-22 13:40:56 · 15601 阅读 · 0 评论 -
UDP服务器端和客户端程序设计
原文地址:http://blog.youkuaiyun.com/yueguanghaidao/article/details/7055985一、实验目的学习和掌握Linux下的UDP服务器基本原理和基本编程方法,体会与TCP的区别,TCP编程:http://blog.youkuaiyun.com/yueguanghaidao/article/details/7035248二、实验平台ubuntu-转载 2016-06-22 08:50:08 · 2186 阅读 · 0 评论 -
TCP服务器端和客户端程序设计
原文地址:http://blog.youkuaiyun.com/yueguanghaidao/article/details/7035248一、实验目的学习和掌握Linux下的TCP服务器基本原理和基本编程方法,体会TCP与UDP编程的不同,UDP编程:http://blog.youkuaiyun.com/yueguanghaidao/article/details/7055985二、实验平台转载 2016-06-22 08:48:46 · 5012 阅读 · 0 评论 -
SOCKET传输数据、文件
/** * 函数:XSendData * 描述:发送数据 * 参数:sock socket * lpszBuff 缓冲区 * nDataSize 数据长度 * nPacketSize 每次传输的数据块长度 * nOverTime 超时 (秒) *原创 2011-03-31 09:24:00 · 1113 阅读 · 0 评论 -
CSocket设置超时
因为CSocket是用winsock1.0封装的,它本身根本没办法设置超时,也无法是用select的方法设置超时。如果非要加超时,可以自己在程序中加个定时器。还是用2.0的纯socket吧。原创 2011-08-08 15:22:54 · 668 阅读 · 0 评论 -
Socket中的TIME_WAIT状态
<br />Socket中的TIME_WAIT状态 在高并发短连接的server端,当server处理完client的请求后立刻closesocket此时会出现time_wait状态然后如果client再并发2000个连接,此时部分连接就连接不上了,用linger强制关闭可以解决此问题,但是linger会导致数据丢失,linger值为0时是强<br /><br />Socket中的TIME_WAIT状态<br />在高并发短连接的server端,当server处理完client的请求后立刻c转载 2010-11-07 22:14:00 · 673 阅读 · 0 评论 -
多点通讯与多址广播语义
B.1 多点通讯与多址广播引言<br /> 考虑到如何在WinSock 2中支持多点通讯(multipoint)与多址广播(multicast),我们研究了一些现存的和提议的多点通讯/多址广播方案(包括IP-multicast、ATM点对多点连接、ST-II、T.120和H.320 (MCU))。在一些公共方面,每一种方案都与其它方案有很大的不同。为了对不同的方案有一个一致的讨论,首先建立一个分类法来刻画每一种方案的本质属性是很有价值的。为简单起见,在后面我们将使用术语转载 2010-11-07 22:07:00 · 1000 阅读 · 0 评论 -
IP组播技术简介
<br />IP组播是IP的扩展。IP组播在局域网或广域网上将IP数据包从一个发送者传送到一组接收者而不是一个接收者,并且依靠网络将数据包只传送给需要接收它的网络。 <br /><br />1.1 IP数据包传输类型 <br />IPv4定义了3种IP数据包的传输:单播(unicast)、广播(broadcast)和组播(multicast).单播用于发送数据包到单个目的地,这种传输是最常见的IP传输,单播实际上是点对点的;广播是指发送数据包到同一广播域或子网内的所有设备。组播指的是在Int转载 2010-11-07 22:05:00 · 1173 阅读 · 0 评论 -
如何优雅地关闭一个socket
<br />最近在windows编程时需要考虑到“如何优雅地关闭一个socket”,查阅了一些资料,现将查到的相关资料做个汇编,希望能对后来者有所帮助(比较懒,所以英文资料没有翻译:-)) <br />1. 关闭Socket时究竟做了什么<br /> 关闭socket分为主动关闭(Active closure)和被动关闭(Passive closure)两种情况。前者是指有本地主机主动发起的关闭;而后者则是指本地主机检测到远程主机发起关闭之后,作出回应,从而关闭整个连接。<b转载 2010-11-07 22:28:00 · 565 阅读 · 0 评论 -
windows下的netstat和nbtstat
<br />我的一些心理话:我写这些文章并不是给高手看的,而是发现现在刚学计算机的人都是从win95或win98的傻瓜模式开始的,然而要真正学会使用计算机,这些基本命令却是非常重要的,所以我把这些整理在一起,供大家一起学习。同时,由于我水平有限,当中也免不了有一些错误,还请看了我的文章的各位高手多提意见。 <br /><br />netstat和nbtstat可以说都是windows下的网络检测工具,他们的输入形式很相似而且都是需要在安装了tcp/ip协议以后才可以使用的,但两者的功能却转载 2010-11-07 22:25:00 · 696 阅读 · 0 评论 -
讨厌的 Socket TIME_WAIT 问题
<br />netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"/t",state[key]}'<br />会得到类似下面的结果,具体数字会有所不同:<br />LAST_ACK 1<br />SYN_RECV 14<br />ESTABLISHED 79<br />FIN_WAIT1 28<br />FIN_WAIT2 3<br />CLOSING 5<br />TIME_WAIT 16转载 2010-11-07 22:22:00 · 519 阅读 · 0 评论 -
c/c++通过socket发送结构体
<br /> c/c++通过socket发送结构可以直接先将结构转化到内存中,再通过send直接发送。<br /> 在网络通讯过程中往往涉及一些有关联的参数传递,例如数组,结构体之类的。对于结构体其实方法挺简单,由于结构体对象在内存中分配的空间都是连续的,所以可以将整个结构体直接转化成字符串发送,到了接收方再将这个字符串还原成结构体就大功告成了。<br /> 首先,我们建立一个结构体。<br /> struct UsrData{<br /> char usr_id[16];<br /> ch转载 2010-11-07 22:19:00 · 1064 阅读 · 0 评论 -
CreateIoCompletionPort和完成端口
<br /><br />摘自《Networking Programming for Microsoft Windows》第八章<br />“完成端口”模型是迄今为止最为复杂的一种I/O模型。然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!<br />从本质上说,完成端口模型要求我们创建一个Win32完成端口对象,通过指定数量的线程,对重叠I/O请求进行管理,以便为已经完成的重叠I/O请求提供服务。<br />使用这种模型之前,首先要创建一个I/O完成端口对象转载 2010-11-07 22:17:00 · 356 阅读 · 0 评论 -
socket选项
<br />1、设置/获取socket选项<br />有两个函数,可以用来对socket进行设置或获取当前设置:<br /> <br /> <br /> <br /> #include sys/socket.h><br />[color="#0000CC"]<br />[/color]<br />int getsockopt(int sockfd, int转载 2010-11-07 22:15:00 · 419 阅读 · 0 评论 -
Socket中如何设置连接超时
<br />设置connect的超时很简单,优快云上也有人提到过使用select,但却没有一个令人满意与完整的答案。偶所讲的也正是select函数,此函数集成在winsock1.1中,简单点讲,"作用使那些想避免在套接字调用过程中被锁定的应用程序,采取一种有序的方式,同时对多个套接字进行管理"(《Windows网络编程技术》原话)。使用方法与解释请见《Windows网络编程技术》。<br /> 在使用此函数前,需先将socket设置为非锁定模式,这样,在connect时,才会立马跳过,同时,转载 2010-11-07 22:09:00 · 492 阅读 · 0 评论