网络
芦笛
这个作者很懒,什么都没留下…
展开
-
UPnP 设备描述文件和服务描述文件
对于一个设备来说,无论是客户端还是服务端,接入网络后,UPnP经历下列过程:* 获取自己的IP地址,无论是通过dhcp或者手动设置。* 组播M-SEARCH/*-NOTIFY。*获取Loacation指定的设备描述文件。*从描述的service/actions/events中选择自己感兴趣的。 # 设备描述文件模板 10原创 2015-01-08 20:13:47 · 2458 阅读 · 0 评论 -
ffmpeg hls demo
ffmpeg windows版下载https://ffmpeg.zeranoe.com/builds/win32/shared/ffmpeg-20160404-git-54c9146-win32-shared.7z 下面假设解压到E:\tools\Player\ffmpeg ffmpeg.exe在E:\tools\Player\ffmpeg\bin下面,也把shttpd.exe放在这个bin目录原创 2016-04-05 19:27:37 · 1070 阅读 · 0 评论 -
iptables/tc 原理
netfilter hook在IP层,linux packet filter/BPF 旁路了链路层,整个包流动见[flow].iptables, tc对这两层都有作用。用法[usage]:iptables [-t table] cmd chain rules -j actiontable := raw, mangle, nat, filtercmd := -P defa原创 2015-10-11 12:09:27 · 1209 阅读 · 0 评论 -
android pppoe
android pppoe 调用路径====Y:\new_TW\vendors_R210\skyworth\apps\SkyEthernetServer\src\com\topway\service通过广播接收请求frameworks\base\ethernet\EthernetManager.getEthernetMode() //ETHERNET_CONNECT_MODE_原创 2015-10-09 19:13:28 · 2273 阅读 · 0 评论 -
监听所有rtp/rtcp包
监听所有的udp包,需要在数据链路层做,如果在网络层,不是发往本地的IP包都上不来; 另外,网络监听一个问题是上来的数据包太多, 处理不过来,会导致丢包,需要过滤。如果在应用层做,会有内核空间拷贝到用户空间的开销,最好内核里面做, linux已经原生提供了Linux Packet Filter。表示方式采用BPF。 BPF 原始格式看起来像汇编语言, tcpdump -dd可以把如下原创 2015-09-04 21:11:43 · 1841 阅读 · 0 评论 -
网络模拟:丢包,延迟,乱序
由于条件限制,需要在局域网模拟广域网丢包,延迟等现象。linux 已经原生提供了用户空间工具流量控制tc,网络模拟netem。我试了桥接的虚拟机,loopback 接口, 设置了无效,不会丢包, 至少需要两台物理机器连到同一局域网。下面的例子参考了[1],[2]。最简单的是无类别配置tc qdisc add dev eth0 root netem loss 50%ping www.ba原创 2015-09-06 12:54:47 · 4404 阅读 · 0 评论 -
http 206 Range -- 端点续传(resumed download) -- POST/PUT/DELETE
端点续传(resumed download):请求:Range: bytes=16-响应:HTTP/1.1 206 Partial ContentAccept-Ranges: bytesContent-Range: bytes 16-14385736/14385737Content-Length: 14385721Request -- Response* no原创 2015-08-16 09:50:20 · 2392 阅读 · 0 评论 -
rtp丢包重传demo
基于ffmpeg, 稍作修改,测试例子: ffmpeg -fflags +genpts -re -i 0Cannon.f4v \ -an -vcodec copy -f rtp rtp://224.0.0.239:5002?localport=5000 \ -vn -acodec copy -f rtp rtp://224.0.0.239:5004?localport=5006 \原创 2015-09-02 23:37:26 · 4775 阅读 · 1 评论 -
http Cache-Control: If-None-Match ETag/If-Modifed-Since Last-Modified
这里最终决定采用chunked是为了和长连接[3]配合使用, 省去slow-start ack/congestion window增加到正常大小的时间,还有3次握手时间(究竟是多少毫秒?)对原先代码的改造,逻辑上从上到下分层为file: >0 -- ok, 0 -- eof, -1 -- err, -11 -- eagain.prepare: 0 -- ok, 0 -- sta原创 2015-08-26 20:01:10 · 729 阅读 · 0 评论 -
https实现的几个问题
官方推荐是TLS_server_method,我当前的系统ubuntu14.04,最新的只有SSLv23,但是抓包发现是TLSv1.2,文档只说了TLSv1,难道被ubuntu私下改了,只是头文件和文档没有更新?有人说accept之后,要在set non block之前调SSL_accept,否则会影响握手消息收发?任何一个SSL网络操作不管读写都可能产生 SSL_ERROR_WA原创 2015-08-22 20:15:26 · 2397 阅读 · 0 评论 -
http:关于长连接和分块传输
动态生成的内容比如压缩流,动态网页+js hide,事先并不知道Content-Length, 为了提高响应速度,希望一边生成一边传输,通常以关闭连接表明内容传完完毕。但是希望连接keep-alive呢?解决办法是chunked transfer encoding,RFC规范要求如果是http/1.1,服务端和客户端都必须支持。例子:HTTP/1.1 200 OK\r\nT原创 2015-08-23 19:17:54 · 3163 阅读 · 0 评论 -
查询网络端口被哪个进程/线程占用
背景最近遇到一个问题,就是我去绑定8080端口时,发现errno是93(记不清了),表示已经被人用了,于是想去查是哪个进程或者线程。当然我也搜了代码,发现很多以网址的形式出现,还是从linux 系统去看吧。 标准的netstat -pt是可以把进程名显示出来的,但是android版的没有这个选项。local_port –> process_name$ cat /proc/net/{tcp,udp,原创 2015-03-15 10:23:48 · 3564 阅读 · 1 评论 -
使用tcp socket进行跨进程/网络通信
看了陈硕的书,说虽然有pipe, msgget, message queue, unix domain socket, 还是建议进程间只用tcp socket来通信。pipe的缺点是阻塞。msgget缺点是不能select。mq_send可以,但是双向通信要开两个mq。unix domain不能跨网络。tcp socket优点很多,就是处理分包比较麻烦些,不过可以抽象出来。根据我的项目需要,原创 2015-01-20 21:23:09 · 1552 阅读 · 0 评论 -
json 压缩和格式化工具
C/C++层JSON库在www.json.org有。我使用jsmn。https://github.com/DeYangLiu/jsmn/commit/2d979edea9b628a44f9cc63fd3ef81a7446f84f5原创 2018-10-12 19:20:22 · 2567 阅读 · 0 评论