
网络编程
伍意
这个作者很懒,什么都没留下…
展开
-
TCP 的那些事儿
http://kb.cnblogs.com/page/209100/http://kb.cnblogs.com/page/209101/转载 2015-11-22 11:26:10 · 442 阅读 · 0 评论 -
千万级并发连接的秘密
Now that we have the C10K concurrent connection problem licked, how do we level up and support 10 million concurrent connections? Impossible you say. Nope, systems right now are delivering 10 millio转载 2017-06-03 11:19:31 · 1462 阅读 · 1 评论 -
关于抓包出现TCP DUP ACK问题
最近在跟一个CDN服务器端做对接,从CDN服务器下载内容(http),发现抓包出现非常多的Tcp Dup Ack异常提示。通过查阅质料得知Tcp Dup Ack xxx#y 代表了数据段丢失TCP状态,xxx代表数据丢失的位置,#后代表第几次丢失文。然后我我又再看了下报文,的确是2次数据发送到我这边,我才回复一次ack,但是这个ack回复是正确的。 对比对接其他地方的CDN的抓转载 2017-06-19 10:22:16 · 104403 阅读 · 4 评论 -
TCP协议常见技术细节及原理
一、TCP协议简介一般问到TCP协议的时候 最常见的是TCP连接建立和断开的过程,也就是三次握手和四次挥手,两张图足矣。1.1 三次握手1.2 四次挥手二、常见面试题2.1 TCP连接阶段2.1.1 发送序号和确认序号问题例: TCP建立连接的过程采用三次握手,已知第三次握手报文的发送序列号为1000,确认序列号为2000转载 2017-06-06 23:36:43 · 6006 阅读 · 1 评论 -
RTMP 流媒体协议
RTMP协议是一个互联网TCP/IP五层体系结构中应用层的协议。RTMP协议中基本的数据单元称为消息(Message)。当RTMP协议在互联网中传输数据的时候,消息会被拆分成更小的单元,称为消息块(Chunk)。1 消息消息是RTMP协议中基本的数据单元。不同种类的消息包含不同的Message Type ID,代表不同的功能。RTMP协议中一共规定了十多种消息类型,分别转载 2017-05-16 18:37:25 · 428 阅读 · 0 评论 -
socket select 超时问题 导致CPU高
以下代码问题在哪里,会不会select每次1秒超时呢? void IPCServer::DoWork(){ fd_set read_set; struct timeval tv_select; tv_select.tv_sec = 1; tv_select.tv_usec = 0; int max_fd = m_nListenSocket; int r = 0; struct原创 2017-05-24 10:30:24 · 3872 阅读 · 0 评论 -
TCP网络编程SELECT+ACCEPT(为什么需要非阻塞(转自《UNIX网络编程》第一版)
转载 2017-03-11 14:20:28 · 1908 阅读 · 0 评论 -
基于TCP传输的网络编程异常处理
基于TCP传输的网络编程异常处理一:进程一端退出(exit,CTRL+C,挂掉)(跟主动CLOSE、主动关机一样) 内核会关闭所有句柄触发FIN分节发送(但如果设置了SO_LINGER l_onoff为1,则发送RST分节对方) FIN分节处理: 另一端recv 返回0 表示对端结束 RST分节处理: 另一端recv 返回-1 表示对端错误,错误码为connection r原创 2017-03-11 14:15:02 · 2617 阅读 · 0 评论 -
Linux下服务器端使用EPOLL ACCEPT产生的问题
最近查了3天一个技术BUT,开始并不知道是网络问题,一步步定位,最终确定是网络接收问题。进而深入前人的代码才有所察觉,因这个问题是随机性,很难重现。找到了网络问题,立马写代码重现。果然立马重现了。确定是EPOLL accept问题。因为我们的问题是服务器端 接收缓冲区中一直有数据,拿不走,连接是已建立。看看我们的代码问题出在EPOLL的模式上,EPOLL有水平模式原创 2016-01-30 12:02:17 · 803 阅读 · 1 评论 -
官方详解/proc/net/tcp
我们编写网络程序经常用到netstat -anpt 查看链接信息,这些信息本质都市来源于/proc/net/tcp 以下是每一行的详解It will first list all listening TCP sockets, and next list all established TCP connections. A typical entry of /proc/net/tcp原创 2016-01-29 14:34:12 · 5945 阅读 · 0 评论 -
基于UDP可靠传输协议UDT----剖析之发送和接收缓冲区
CSndBuffer发送缓冲区---------将应用层的数据分成大小为MSS的块并放入发送队列一:初始化,构造函数 // initial physical buffer of "size" m_pBuffer = new Buffer; m_pBuffer->m_pcData = new char [m_iSize * m_iMSS];//缓冲区总大小原创 2015-11-27 14:48:56 · 2296 阅读 · 0 评论 -
UDT:基于UDP的可靠传输协议
基于UDP 上的UDT ,比TCP传输效率高UDT:基于UDP的数据传输协议(初译) (译者:Jack) Status of this Memo This Internet-Draft is submitted to IETF in full conformance with the provisions of BCP 78 and BCP 7转载 2015-11-27 17:50:16 · 5046 阅读 · 0 评论 -
网络编程-阻塞非阻塞同步异步
这四个词语都跟线程有关,跟函数有关,跟数据就绪有关,跟主动还是被动有关1.阻塞----------相对于函数 基于线程上下文调用者线程调用函数时,因为条件不满足(没有数据),函数不返回,调用者线程状态进入暂停状态,等待其它线程(也许是内核)待条件满足时通知,即激活线程进入运行状态,继续执行有2点注意 调用者线程不干活了 调用者主动取数据2.非阻塞----------相对于函原创 2015-11-19 22:20:28 · 615 阅读 · 0 评论 -
网络编程-TCP状态图详细说明 没有不懂的
net/ipv4/tcp.c* Description of States: * * TCP_SYN_SENT sent a connection request, waiting for ack * * TCP_SYN_RECV received a connection request, sent ack, * waiting for final ack原创 2015-11-17 13:53:23 · 702 阅读 · 0 评论 -
网络编程-SOCKET选项-缓冲区
1.TCP UDP 发送 和接收的缓冲区大小 创建socket时 socket(af_inet,sock_stream/sock_dgram,0)->inet_create->sock_init_data 不设置的情况下 不调用setsockopt时候 TCP UDP 的缓冲区都市: rmem_default ,wmem_default sock.c sock_init_data()原创 2015-11-16 23:17:18 · 1533 阅读 · 1 评论 -
Linux下TCP延迟确认(Delayed Ack)机制导致的时延问题分析
例一:同事随手写个压力测试程序,其实现逻辑为:每秒钟先连续发N个132字节的包,然后连续收N个由后台服务回显回来的132字节包。其代码简化如下:char sndBuf[132];char rcvBuf[132];while (1) { for (int i = 0; i < N; i++){ send(fd, sndBuf, sizeof(sndBu转载 2017-06-19 11:42:22 · 3768 阅读 · 0 评论