![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
文章平均质量分 86
一叶知秋dong
好记性不如烂笔头,记录学习和工作中的一些东东。
展开
-
Linux 平台使用netem模拟丢包乱序延迟
一、netem 与 tc:netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块。该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽、传输延迟、丢包等等情况。使用 Linux 2.6 (或以上) 版本内核的很多发行版 Linux 都开启了该内核功能,比如Fedora、Ubuntu、Redhat、OpenSuse、CentOS、Debian等等。...转载 2019-10-29 16:05:22 · 1197 阅读 · 0 评论 -
select函数及fd_set
1. select函数1. 用途 在编程的过程中,经常会遇到许多阻塞的函数,好像read和网络编程时使用的recv, recvfrom函数都是阻塞的函数,当函数不能成功执行的时候,程序就会一直阻塞在这里,无法执行下面的代码。这是就需要用到非阻塞的编程方式,使用select函数就可以实现非阻塞编程。 select函数是一个轮循函数,循环询问文件节点,可设置超时转载 2017-10-16 16:52:57 · 932 阅读 · 0 评论 -
网络性能评估工具Iperf详解
一、网络性能评估工具Iperf网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理、网络存在安全漏洞等原因,都会导致网络带宽利用率不高。要找到网络带宽利用率不高的原因,就需要对网络传输进行监控,此时就需要用到一些网络性能评估工具,而Iperf就是这样一款网络带宽测试工具,本节将详细介绍一下Iperf的使用。1、Iperf能做什么转载 2017-10-14 11:39:31 · 2267 阅读 · 0 评论 -
就是要你懂 TCP-- 最经典的TCP性能问题
问题描述某个PHP服务通过Nginx将后面的tair封装了一下,让其他应用可以通过http协议访问Nginx来get、set 操作tair上线后测试一切正常,每次操作几毫秒,但是有一次有个应用的value是300K,这个时候set一次需要300毫秒以上。 在没有任何并发压力单线程单次操作也需要这么久,这个延迟是没有道理和无法接受的。问题的原因是因为TCP协议为了做一转载 2017-09-09 16:39:28 · 876 阅读 · 0 评论 -
TCP 的那些事儿
(上)TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,我还是推荐你去看W.Richard Stevens的《TCP/IP 详解 卷1:协议》(当然,你也可以去读一下RFC793以及后面N多的RFC)。另外,本文我会使用英文术语,这样方便你通过这些英文转载 2017-09-05 11:19:50 · 659 阅读 · 0 评论 -
doubango简介
1、doubango官网:http://www.doubango.org/doubango常用项目国内镜像(放在淘宝的svn服务器),目前有4个项目:doubango, idoubs, imsdroid, telepresence。项目的svn地址如下格式http://code.taobao.org/svn/【项目名称】/trunk例如idoubs,可直接http://code.t转载 2017-08-14 20:23:51 · 1729 阅读 · 0 评论 -
Google QUIC协议:从TCP到UDP的Web平台
QUIC(Quick UDP Internet Connections)协议是一种全新的基于UDP的web开发协议。从TCP协议说起当前,web平台的数据传输都基于TCP协议。TCP协议在创建连接之前需要进行三次握手(图1),如果需要提高数据交互的安全性,既增加传输层安全协议(TLS),还会增加更多的握手次数(图2)。图1,TCP三次握手示意(来源 Next转载 2017-08-07 10:52:05 · 2414 阅读 · 0 评论 -
使用GOOGLE的QUIC
QUIC是Google新开发的一个基于UDP的协议,它提供了像TCP一样的传输可靠性保证,可以实现数据传输的0-RTT延迟,灵活的设计使我们可以对它的拥塞控制及流量控制做更多的定制,它还提供了传输的安全性保障,以及像HTTP/2一样的应用数据二进制分帧传输。而QUIC协议最最吸引人的特性有两点,一是对队首阻塞问题的解决更为彻底。基于TCP的HTTP/2,尽管从逻辑上来说,不同的流之间相互独立,转载 2017-08-07 10:44:38 · 14752 阅读 · 1 评论 -
前沿技术:改良版的UDP协议QUIC将成为未来谷歌网站新标准
去年我们宣布QUIC,现代互联网的udp传输协议。在最后一个季度,我们已经增加了流量的谷歌服务,服务在QUIC和大规模分析QUIC性能。结果到目前为止是积极的,数据显示,QUIC提供了一个真正的性能改进TCP由于QUIC的铜线连接建立,改进的拥塞控制和更好的复苏。QUIC(Quick UDP Internet Connection)是谷歌制定的一种基于UDP的低时延的互联网传输层协议。我们转载 2017-08-07 10:41:30 · 779 阅读 · 0 评论 -
无线信号(RSSI)
为什么无线信号(RSSI)是负值答:其实归根到底为什么接收的无线信号是负值,这样子是不是容易理解多了。因为无线信号多为mW级别,所以对它进行了极化,转化为dBm而已,不表示信号是负的。1mW就是0dBm,小于1mW就是负数的dBm数。弄清信号强度的定义就行了:RSSI(接收信号强度)Received Signal Strength IndicatorRss=10logP转载 2017-11-13 11:14:39 · 1561 阅读 · 0 评论 -
WebRTC中的前向纠错编码 - Red Packet
WebRTC 的FEC(前向纠错编码) 是其QoS的重要组成部分, 用于网络丢包的时候恢复原始数据包, 减少重传次数, 减少延时, 改善视频质量. 它是RFC 5109标准的实现. 下文, 我们将深入剖析其原理.Redundant Coding要理解WebRTC中的FEC, 首先需要先了解Red Packet. 所谓Red Packet, 就是Redundant Coding 产生的包. 其定义非...转载 2018-03-15 14:13:01 · 2187 阅读 · 0 评论 -
TCP的超时重传之深入了解RTT与RTO
TCP提供一种面向连接的、可靠的字节流服务,其中可靠的保证方法之一就是却让从另一端收到的数据。但是数据和确认信号都有可能丢失,。TCP通过在发送数据时设置一个重传定时器(注意这里的超时定时器和第四节讲的定时器不一样)来监控数据的丢失状态,如果重传定时器溢出时还没收到确认信号,则重传该数据。这就是建立重传机制的原因。下面解释两个名词:RTT(Round Trip Time):一个连接的往返时...转载 2019-04-13 18:38:23 · 2007 阅读 · 0 评论 -
KCP原理及源码解析
什么是KCP?为什么要使用KCP?KCP是一个快速可靠协议。它主要的设计目的是为了解决在网络拥堵的情况下TCP协议网络速度慢的问题,增大网络传输速率,但相当于TCP而言,会相应的牺牲一部分带宽。kcp没有规定下层传输协议,一般用UDP作为下层传输协议。kcp层协议的数据包在UDP数据报文的基础上增加控制头。当用户数据很大,大于一个UDP包能承担的范围时(大于MSS),kcp会将用户数据分片存储...转载 2019-04-04 10:41:40 · 4182 阅读 · 0 评论 -
从UDP的连接性说起——告知你不为人知的UDP
引言作为文章《从TCP三次握手说起–浅析TCP协议中的疑难杂症》的姊妹篇,很早就计划写篇关于UDP的文章,尽管UDP协议远没TCP协议那么庞大、复杂,但是要想将UDP描述清楚,用好UDP却要比TCP难不少,于是文章从下笔写,到最终写成,断断续续拖了好几个月。说起网络socket,大家自然会想到TCP,用得最多的也是TCP,UDP在大家的印象中是作为TCP的补充而存在,是无连接、不可靠、无序、...转载 2019-03-21 18:59:21 · 1395 阅读 · 0 评论 -
wifi带宽和功率
802.11协议规定,功率是自动调节的,实测功率是随着带宽的增大而减小,随着带宽的减小而增大。通过抓包,可在包头里看到带宽的值。原创 2018-04-02 20:29:21 · 10497 阅读 · 0 评论 -
802.11帧格式解析
下图展示了一般的802.11MAC 帧。位的传送顺序由左至右,最高效bit 将会最后出现。1、Frame Control所有帧的开头均是长度两个元组的Frame Control (帧控制)位,其结构如下:1.1、protocol802.11 MAC版本号,为0,目前没有新的版本。1.2、Type和Subtype帧类型,用主类型和子类型表示。Type Mean 00 管理帧 01 控制帧 10...原创 2018-03-23 13:45:41 · 5763 阅读 · 1 评论 -
WIFI基本知识整理
这里对wifi的802.11协议中比较常见的知识做一个基本的总结和整理,便于后续的学习。一、基本概述============================1、有线和无线网络目前有线网络中最著名的是以太网(Ethenet),但是无线网络WLAN是一个很有前景的发展领域,虽然可能不会完全取代以太网,但是它正拥有越来越多的用户,无线网络中最有前景的是...原创 2018-03-09 15:07:09 · 1862 阅读 · 0 评论 -
webrtc 中的 fec
基于IP网络的多媒体通信系统(比如WebRTC)中,网络丢包对多媒体通信质量有非常严重的影响:例如造成视频的马赛克、图像模糊、帧率下降等问题,造成音频的声音失真、噪声干扰、音频中断等问题。这都会严重影响系统的通信质量,造成非常差的用户体验。WebRTC主要采取两种手段对抗网络丢包:丢包重传(NACK)和前向纠错(FEC)。FEC是一种前向纠错技术,发送端将负载数据加上一定的冗余纠错码一起发送,接...转载 2018-03-15 14:32:04 · 2876 阅读 · 0 评论 -
FEC原理及其实现
视频会议中通常使用的FEC/QOS技术,这方面的资料比较复杂和稀少,根据这么多年的工作经验,做一下分享。 在IP视频通话中丢包造成的影响多种多样。其中对视频质量的影响主要有:马赛克现象、局部变形(图像的某些区域不清晰)、图像模糊、屏幕频繁刷新或闪烁、视音频不同步、帧率下降、图像静止等等。对音频质量的影响包括:总体音频失真、间断或间歇性噪音、音频中断等。而对内容和演示数据质量的影响则包括:幻灯片模糊...转载 2018-03-15 14:17:44 · 28850 阅读 · 0 评论 -
几种UDP网络库的对比 Raknet,UDT,ENet,kcp
UDT库 https://sourceforge.NET/projects/udt/?source=directory C#包装:https://github.com/dump247/udt-net UDT协议是什么?是一种基于UDP的数据传输协议(UDP-based Data Transfer Protocol,简称UDT)。UDT转载 2017-08-16 17:51:21 · 17002 阅读 · 0 评论 -
kcp源码走读
kcp协议与tcp协议类似,是一种ARQ协议。他的优点在于比tcp的延迟更小30%-40%,但相应的会牺牲一部分的带宽,大该比tcp多浪费10%~20%。tcp的设计目标是增大网络利用率,而kcp的设计目标是增大网络传输速率。因此kcp与tcp对比,kcp有如下机制可以提高传输速度:1.kcp的RTO每次是增加为1.5倍,相比tcp的2倍,具有更短的超时重传时间2.无延迟ACK,通过配转载 2017-08-16 17:09:07 · 3750 阅读 · 3 评论 -
kcp协议详解
kcp协议是传输层的一个具有可靠性的传输层ARQ协议。它的设计是为了解决在网络拥堵情况下tcp协议的网络速度慢的问题。kcp力求在保证可靠性的情况下提高传输速度。kcp协议的关注点主要在控制数据的可靠性和提高传输速度上面,因此kcp没有规定下层传输协议,一般用udp作为下层传输协议,kcp层协议的数据包在udp数据报文的基础上增加控制头。当用户数据很大,大于一个udp包能承担的范围时(大于mss)转载 2017-08-16 16:50:10 · 39089 阅读 · 0 评论 -
Linux网络编程 之 UDP 广播 .
在网上搜了很多资料 ,其中周立发的博客对我的学习参考作用最大,谢谢前辈。这个倒让我花的时间最多了,主要一直脑残的在自己的虚拟机上调试不成功,认为只要开几个终端就可以当作服务器了,这种想法是错误的。因为ip地址会被占用的,所以后来我和同事测试一下,就OK了。这个广播代码逻辑其实挺有用的,可以用来寻找所在局域网内设备。逻辑就是:客户端一直发广播,当服务器收到这个广播,则向客户端转载 2014-08-06 16:37:04 · 7294 阅读 · 0 评论 -
Linux网络编程 之 UDP 组播实例
一个很简单udp 组播通信的例子,分别为服务器端和客户端的代码。1、服务器端代码 (multi_udp_server.c)[objc] view plaincopyprint?#include #include #include #include #include #include #includ转载 2014-08-06 16:34:21 · 6509 阅读 · 0 评论 -
socket函数
SOCKET()我们使用系统调用socket()来获得文件描述符:#include#includeint socket(int domain,int type,int protocol);第一个参数domain设置为“AF_INET”。第二个参数是套接口的类型:SOCK_STREAM或SOCK_DGRAM。第三个参数设置为0。系统调用socket()只返回一个套转载 2014-08-19 14:34:03 · 632 阅读 · 0 评论 -
Socket 实现UDP广播
an example implement limited udp broadcast(255.255.255.255)TCP/IP是一个协议族。TCP、UDP都是其中的组成部分,IP位于它们之下。 只有UDP才支持广播,TCP是不支持广播的。================================原创 2013-08-08 08:48:36 · 4142 阅读 · 0 评论 -
Android 实现PPPoE拨号
关于Android实现PPPoE拨号上网的问题。系统必须安装有ppp和rp-pppoe程序。一般ROM自带有ppp程序的、rp-pppoe就未必有了,需要交叉rp-pppoe到目标机。我的开发环境已带有rp-pppoe的二进制程序pppoe和一个shell程序pppoe-connect了。先来看看pppoe-connect里面是什么。。。[php转载 2013-05-09 19:33:26 · 5695 阅读 · 0 评论 -
Socket编程知识必学
端口号常识:端口号由一个十六位的数字组成,取值范围是1 -- 65535,其中1 -- 1023 是保留端口号,固定给一些常用服务使用,1024 -- 65535是临时端口号,可自由使用。 端口号被从1 开始分配。 每个网络通信循环地进出主计算机的TCP 应用层。它被两个所连接的号码唯一地识别,即网址(ip)和端口号,这两个号码合起来就组成了套接字。套接字的三种类型转载 2012-06-05 14:49:41 · 1681 阅读 · 0 评论 -
socket 编程(java示例)
一,网络编程中两个主要的问题一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。目前较为转载 2012-11-26 16:37:21 · 807 阅读 · 0 评论 -
Socket编程(c语言示例)
前言 Socket可以看成在两个程序进行通讯连接中的一个端点,是连接应用程序和网络驱动程序的桥梁,Socket在应用程序中创建,通过绑定与网络驱动建立关系。此后,应用程序送给Socket的数据,由Socket交网络驱动程序向网络上发送出去。计算机从网络上收到与该Socket绑定IP地址和端口号相关的数据后,由网络驱动程序交给Socket,应用程序便可从该Socket转载 2012-11-09 14:53:45 · 9719 阅读 · 3 评论 -
TCP/IP 组播编程
组播描述 组播(Multicast)是网络一种点对多(one to many)的通信方式,通过报文复制完成网络中一台server对应多台接收者的高效数据传送。对其形象的比喻就是类似于广播电台和电视台节目的发送。电台或电视台向特定频道发送他们的节目,而接收者可以根据自己的喜好选择频道来收听或收看节目。 传统网络的通信方式单播(Unicast)在许多场合下并不合适,如果强行采于单转载 2014-08-06 16:22:46 · 5333 阅读 · 0 评论 -
NAT协议详解
NAT(Network Address Translation,网络地址转换)是将IP数据报头中的IP地址转换为另一个IP地址的过程。在实际应用中,NAT主要用于实现私有网络访问公共网络的功能。这种通过使用少量的公网IP地址代表较多的私网IP地址的方式,将有助于减缓可用IP地址空间的枯竭。私网IP地址是指内部网络或主机的IP地址,公网IP地址是指在因特网上全球唯一的IP地址。RFC 191转载 2016-11-29 10:29:59 · 1134 阅读 · 1 评论 -
快速可靠协议-KCP
KCP是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定义下层数据包的发送方式,并以 callback的方式提供给 KCP。连时钟都需要外部传递进来,内部不会有任何一次系统调用。整个协议只有 ikcp.h, ikcp.c两个源文件,可以方便的集成到转载 2017-08-16 16:48:19 · 924 阅读 · 0 评论 -
STUN和TURN技术浅析
在现实Internet网络环境中,大多数计算机主机都位于防火墙或NAT之后,只有少部分主机能够直接接入Internet。很多时候,我们希望网络中的两台主机能够直接进行通信,即所谓的P2P通信,而不需要其他公共服务器的中转。由于主机可能位于防火墙或NAT之后,在进行P2P通信之前,我们需要进行检测以确认它们之间能否进行P2P通信以及如何通信。这种技术通常称为NAT穿透(NAT Traversal)。转载 2017-07-12 09:08:03 · 7831 阅读 · 0 评论 -
P2P,UDP和TCP穿透NAT
1. NAT 简介NAT(Network Address Translation ,网络地址转换) 是一种广泛应用的解决IP 短缺的有效方法, NAT 将内网地址转和端口号换成合法的公网地址和端口号,建立一个会话,与公网主机进行通信。1.1. NAT 分类NAT 从表面上看有三种类型:静态 NAT 、动态地址 NAT 、地址端口转换 NAPT 。 (1 )静态NAT :静态地转载 2017-07-11 17:20:03 · 1970 阅读 · 0 评论 -
使用TCP协议的NAT穿透技术
一直以来,说起NAT穿透,很多人都会被告知使用UDP打孔这个技术,基本上没有人会告诉你如何使用TCP协议去穿透(甚至有的人会直接告诉你TCP协议是无法实现穿透的)。但是,众所周知的是,UDP是一个无连接的数据报协议,使用它就必须自己维护收发数据包的完整性,这常常会大大增加程序的复杂度,而且一些程序由于某些原因,必须使用TCP协议,这样就常常令一些开发TCP网络程序的人员“谈穿透色变”。那么,使用T转载 2017-07-11 10:57:26 · 2511 阅读 · 0 评论 -
网络地址转换NAT原理及其作用
1 概述1.1 简介NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地转载 2017-07-11 14:02:46 · 1688 阅读 · 0 评论 -
网络穿透、NAT类型 、STUN TURN 协议等资料参考
这里提供了一个小工具用于检测你所在网络的NAT类型,源文件是有c程序版本和python脚本两种,可以从 https://github.com/node/turn-client 获取,如果你是windows,那么还可以本文末尾的附件下载预编译打包好的.exe文件。 NAT话题,主要涉及:- NAT 与 防火墙- NAT 基本类型 与 原理- N转载 2017-07-11 10:56:11 · 1270 阅读 · 0 评论 -
应用Wireshark IO图形工具分析数据流
基本IO Graphs:IO graphs是一个非常好用的工具。基本的Wireshark IO graph会显示抓包文件中的整体流量情况,通常是以每秒为单位(报文数或字节数)。默认X轴时间间隔是1秒,Y轴是每一时间间隔的报文数。如果想要查看每秒bit数或byte数,点击“Unit”,在“Y Axis”下拉列表中选择想要查看的内容。这是一种基本的应用,对于查看流量中的波峰/波谷很有帮助。要进转载 2017-06-21 10:38:24 · 1231 阅读 · 0 评论 -
libJingle代码分析
目录(?)[+] MyJingle分析1.0 能哥 QQ:6276609662011-3-5 [在此处键入文档摘要。摘要通常为文档内容的简短概括。在此处键入文档摘要。摘要通常为文档内容的简转载 2017-02-09 09:33:38 · 3353 阅读 · 0 评论