TCP
伍意
这个作者很懒,什么都没留下…
展开
-
TCP连接建立过程中为什么需要“三次握手”
传输控制协议(Transmission Control Protocol, TCP)是一种面向连接的、可靠的、基于字节流的运输层(Transport layer)通信协议。是专门为了在不可靠的互联网络上提供一个可靠的端到端字节流而设计的。互联网络与单个网络不同,因为互联网络的不同部分可能有着截然不同的拓扑、带宽、延迟、分组大小和其他参数。TCP的设计目标是能够动态的适应互联网络的这些特性,原创 2015-11-22 11:36:13 · 2578 阅读 · 0 评论 -
TCP协议常见技术细节及原理
一、TCP协议简介一般问到TCP协议的时候 最常见的是TCP连接建立和断开的过程,也就是三次握手和四次挥手,两张图足矣。1.1 三次握手1.2 四次挥手二、常见面试题2.1 TCP连接阶段2.1.1 发送序号和确认序号问题例: TCP建立连接的过程采用三次握手,已知第三次握手报文的发送序列号为1000,确认序列号为2000转载 2017-06-06 23:36:43 · 5930 阅读 · 1 评论 -
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 · 3821 阅读 · 0 评论 -
TCP网络编程SELECT+ACCEPT(为什么需要非阻塞(转自《UNIX网络编程》第一版)
转载 2017-03-11 14:20:28 · 1897 阅读 · 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 · 2605 阅读 · 0 评论 -
Linux下服务器端使用EPOLL ACCEPT产生的问题
最近查了3天一个技术BUT,开始并不知道是网络问题,一步步定位,最终确定是网络接收问题。进而深入前人的代码才有所察觉,因这个问题是随机性,很难重现。找到了网络问题,立马写代码重现。果然立马重现了。确定是EPOLL accept问题。因为我们的问题是服务器端 接收缓冲区中一直有数据,拿不走,连接是已建立。看看我们的代码问题出在EPOLL的模式上,EPOLL有水平模式原创 2016-01-30 12:02:17 · 784 阅读 · 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 · 5882 阅读 · 0 评论 -
基于UDP可靠传输协议UDT----报文协议详解
任何协议不管是网络协议还是文件协议(mp4,avi等)基本都市 由 包头+包体格式组成UDT包头+包体#include "packet.h" packet.cpp//////////////////////////////////////////////////////////////////////////////// 0 1原创 2015-12-01 15:12:58 · 2374 阅读 · 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 · 4882 阅读 · 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 · 2272 阅读 · 0 评论 -
Linux下的TCP延迟确认机制--TCP_QUICKACK
转载:http://pananq.com/index.php/2011/08/29/%E5%86%8D%E6%8E%A2linux%E4%B8%8B%E7%9A%84tcp%E5%BB%B6%E8%BF%9F%E7%A1%AE%E8%AE%A4%E6%9C%BA%E5%88%B6/案例一:某同事随手写个压力测试程序,其实现逻辑为:每秒钟先连续发N个132字节的包,然后连续收N个由后转载 2015-11-26 21:29:32 · 3380 阅读 · 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 · 1498 阅读 · 1 评论 -
TCP 的那些事儿
http://kb.cnblogs.com/page/209100/http://kb.cnblogs.com/page/209101/转载 2015-11-22 11:26:10 · 435 阅读 · 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 · 685 阅读 · 0 评论 -
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 · 3706 阅读 · 0 评论