
TCP
文章平均质量分 70
xiongping_
这个作者很懒,什么都没留下…
展开
-
tcp连接检测Keep-alive
转至http://www.cnblogs.com/ouzi/archive/2012/10/13/2722730.htmltcp连接检测keep-alive断线检测tcp的断线检测,是分为两种的:① 利用tcp自带的keep –alive机制② 自己组建心跳包的方式向对端发送Keep_alive机制通过Ke转载 2015-05-25 14:58:42 · 616 阅读 · 0 评论 -
获取本机ip和获取远程ip
getsockname与getpeername是返回套接口关联的本地协议地址和远程协议地址。int getsockname(int sockfd, struct sockaddr * localaddr, socken_t * addrlen);int getpeername(int sockfd, struct sockaddr * peeraddr, socken_t * ad原创 2015-11-09 17:10:33 · 3603 阅读 · 0 评论 -
struct addrinfo结构体获取ip和port
表头文件: #includestruct addrinfo{ int ai_flags; int ai_family; //AF_INET,AF_INET6,UNIX etcint ai_socktype; //STREAM,DATAGRAM,RAWint ai_protocol; //IPPROTO_IP, IPPROTO_IPV4, IPPROTO_IPV6 etc转载 2015-11-10 08:45:03 · 1966 阅读 · 0 评论 -
ioctl详解
ioctl在socket中的一些用法及示例函数 : ioctl(int fd, int request, void * arg)定义 : 功能 : 控制I/O设备, 提供了一种获得设备信息和向设备发送控制参数的手段.参数 : int fd 文件句柄. 用于socket时, 是socket套接字. int request 函数定义的所有操作. 关转载 2015-10-10 16:58:29 · 611 阅读 · 0 评论 -
TCP协议疑难杂症全景解析
http://blog.youkuaiyun.com/dog250/article/details/6612496疑难杂症2:TIME_WAIT状态为何要有这个状态,原因很简单,那就是每次建立连接的时候序列号都是随机产生的,并且这个序列号是32位的,会回绕。现在我来解释这和TIME_WAIT有什么关系。 任何的TCP分段都要在尽力而为的IP网络上传输,中间的路由器可能会随意的缓存任何的IP转载 2015-09-24 12:27:34 · 393 阅读 · 0 评论 -
TCP速率与窗口,带宽,RTT之间的关系
窗口:TCP是一个滑动窗口协议,即一个TCP连接的发送端在某个时刻能发多少数据是由滑动窗口控制的,而滑动窗口的大小实际上是由两个窗口共同决定的,一个是接收端的通告窗口,这个窗口值在TCP协议头部信息中有,会随着数据的ACK包发送给发送端,这个值表示的是在接收端的TCP协议缓存中还有多少剩余空间,发送端必须保证发送的数据不超过这个剩余空间以免造成缓冲区溢出,这个窗口是接收端用来进行流量限制的,在转载 2015-08-14 16:46:23 · 1254 阅读 · 0 评论 -
Linux内核 TCP/IP、Socket参数调优
Doc1:/proc/sys/net目录 所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失),例如下面这些重要的参数:参数(路径+文件)描述默认值优化值/proc/sys/net/core/r转载 2016-01-12 11:03:02 · 675 阅读 · 0 评论 -
select()函数解析
转载:http://blog.youkuaiyun.com/piaojun_pj/article/details/5991968Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等转载 2015-11-09 17:32:25 · 332 阅读 · 0 评论 -
UDP socket也可以使用connect系统调用
UDP是一个无连接的协议,因此socket函数connect()似乎对UDP是没有意义的,然而事实不是这样。它可以用来指定本地端口和本地地址,来建立虚拟连接。 一个socket接口有几个属性,其中包括协议,本地地址/端口,目的地址/端口。 对于UDP来说: socket()函数建立一个插口; bind()函数指明了本地地址/端口(包括ADD转载 2016-05-11 08:48:50 · 814 阅读 · 0 评论 -
关于socket阻塞与非阻塞情况下的recv、send、read、write返回值
1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 0接收到数据大小,特别:返回值 2、阻塞模式与非阻塞模式下write的返回值各代表什么意思?有没有区别?阻塞与非阻塞write返回值没有区分,都是 0发送数据大小,特别:返回值 3、阻塞模式下read返回值 非转载 2016-05-04 09:59:52 · 444 阅读 · 0 评论 -
TCP连接复用
TCP连接复用技术通过将前端多个客户的HTTP请求复用到后端与服务器建立的一个TCP连接上。这种技术能够大大减小服务器的性能负载,减少与服务器之间新建TCP连接所带来的延时,并最大限度的降低客户端对后端服务器的并发连接数请求,减少服务器的资源占用。 一般情况下,客户端在发送HTTP请求之前需要先与服务器进行TCP三次握手,建立TCP连接,然后发送HTTP请求。服务器收到HTTP请求后转载 2016-06-03 09:15:47 · 4902 阅读 · 0 评论 -
TCP三次握手,4次挥手
转载:http://blog.sina.com.cn/s/articlelist_2754431351_4_1.html很多网络知识为什么需要“三次握手” 在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络转载 2016-06-03 10:14:17 · 560 阅读 · 0 评论 -
TCP滑动窗口机制
转载:http://blog.sina.com.cn/s/blog_5ec353710101g5a7.html我们可以大概看一下上图的模型:首先是AB之间三次握手建立TCP连接。在报文的交互过程中,A将自己的缓冲区大小(窗口大小)3发送给B,B同理,这样双方就知道了对端的窗口大小。A开始发送数据,A连续发送3个单位的数据,因为他知道B的缓冲区大小。在这一转载 2016-06-03 10:50:38 · 697 阅读 · 0 评论 -
网络常用的数据结构
套接字相关的数据类型:sockaddr和sockaddr_in;sockaddr用来保存一个套接字,定义如下:struct sockaddr{ unsigned short int sa_family; //指定通信地址类型,如果是TCP/IP通信,则值为AF_inet char sa_data[14]; //最多用14个字符长度,用来保存IP地址和端口信息};原创 2015-11-09 17:48:52 · 1077 阅读 · 0 评论 -
setsockopt详解
int setsockopt(SOCKET s,int level,int optname,const char* optval,int optlen);s(套接字): 指向一个打开的套接口描述字level:(级别): 指定选项代码的类型。SOL_SOCKET: 基本套接口IPPROTO_IP: IPv4套接口IPPROTO_IPV6: IPv6套接口转载 2015-11-06 17:41:21 · 359 阅读 · 0 评论 -
多播,组播
多播与广播 * 多播和广播仅用于UDP(TCP是面向连接的) * 多播:将数据帧传给同一网络上的多播组内的多个主机; 广播:将数据帧传给同一网络上的所有主机。 * 网卡判断目的地址为网卡物理地址或广播、多播地址的帧,发送给驱动程序; * 多播地址:最高字节的最低位置1的地址(以太网):01:00:00:00:00:00 广播地址:可以看成是多播地址转载 2015-08-21 11:52:05 · 462 阅读 · 0 评论 -
TCP的选项SO_LINGER设置延时关闭
SO_LINGER这个选项在我以前带队改造haproxy的时候引出过一个reset(RST)客户端连接的bug。SO_LINGER作用设置函数close()关闭TCP连接时的行为。缺省close()的行为是,如果有数据残留在socket发送缓冲区中则系统将继续发送这些数据给对方,等待被确认,然后返回。利用此选项,可以将此缺省行为设置为以下两种 a.立即关闭该连接,通过发送转载 2015-05-25 09:46:28 · 2625 阅读 · 1 评论 -
检查非正常断开的tcp连接
所以我已一个一般的嵌入式web服务器boa为原形进行了从写,专门适应嵌入式web服务器这种需要。服务器这种需要。为什么选用boa?实际上我参考了很多web服务器的代码和构架,嵌入式应用上,以多线程(进程)为构架的主流服务器(apache类)彻底歇菜了(想想跑这些玩意的大站都用了什么硬件配置就知道了),嵌入式上也来多进程???何况根据具体需要,控制硬件的web授权很严格,我就允许转载 2015-05-25 09:34:33 · 1606 阅读 · 0 评论 -
HTTP Keep-Alive模式
http://www.cnblogs.com/skynet/archive/2010/12/11/1903347.html转载 2015-05-25 14:53:49 · 320 阅读 · 0 评论 -
关于HTTP Keep-Alive
Chapter: 关于HTTP Keep-Alive1. HTTP Keep-Alive是什么?如何工作?2. 了解HTTP Keep-Alive的基本情况3. Apache中Keep-Alive配置建议4. HTTP协议中的长连接与短连接5. TCP keepalive概述6. TCP协议的KeepAlive机制与HeartBeat心跳包转载 2015-05-25 15:16:18 · 661 阅读 · 0 评论 -
TCP协议的KeepAlive机制与HeartBeat心跳包
心跳包很多应用层协议都有HeartBeat机制,通常是客户端每隔一小段时间向服务器发送一个数据包,通知服务器自己仍然在线,并传输一些可能必要的数据。使用心跳包的典型协议是IM,比如QQ/MSN/飞信等协议。心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小转载 2015-05-25 15:33:06 · 972 阅读 · 0 评论 -
SO_LINGER和优雅关闭连接
当调用closesocket关闭套接字时,SO_LINGER将决定系统如何处理残存在套接字发送队列中的数据。处理方式无非两种:丢弃或者将数据继续发送至对端,优雅关闭连接。事实上,SO_LINGER并不被推荐使用,大多数情况下我们推荐使用默认的关闭方式(即下方表格中的第一种情况)。下方代码段显示linger结构语法,表格为不同参数情况下的套接字行为。typedef struct li转载 2015-07-16 16:36:45 · 501 阅读 · 0 评论 -
慎用TCP的选项SO_LINGER
最近有一次性能测试,通讯程序出现错误,表现为服务器处理速度明显降低,检查发现服务器的很多句柄出于TIME_WAIT状态,Justin这个流氓的自己承认测试用例写的有问题,在recv函数返回0后,没有close句柄。我很郁闷google了一下如何处理这类错误,发现了SO_LINGER这个选项,发现这个选项可以避免端口的状态进入TIME_WAIT状态,大胆的进行了一下测试。发现在性能测转载 2015-07-16 16:40:07 · 499 阅读 · 0 评论 -
TCP服务器和客户端交互
一、实验目的学习和掌握Linux下的TCP服务器基本原理和基本编程方法,体会TCP与UDP编程的不同,UDP编程:http://blog.youkuaiyun.com/yueguanghaidao/article/details/7055985二、实验平台Linux操作系统三、实验内容编写Linux下TCP服务器套接字程序,程序运行时服务器等待客户的连接,一旦连接成功,转载 2015-08-17 10:52:19 · 6822 阅读 · 0 评论 -
UDP服务器和客户端交互
实验三 UDP服务器端程序设计一、实验目的学习和掌握Linux下的UDP服务器基本原理和基本编程方法,体会与TCP的区别,TCP编程:http://blog.youkuaiyun.com/yueguanghaidao/article/details/7035248二、实验平台ubuntu-8.04操作系统三、实验内容编写Linux下UDP服务器套接字程序,服务器转载 2015-08-17 10:51:05 · 12106 阅读 · 0 评论 -
ip,tcp,udp,rudp包头
IEEE 802.3 header0001020304050607080910111213141516171819202122232425262728293031323334353637383940414243转载 2015-08-18 09:37:10 · 824 阅读 · 0 评论 -
TCP包头格式详解
一般来说,网络编程我们只需要调用一些封装好的函数或者组件就能完成大部分的工作,但是一些特殊的情况下,就需要深入的理解网络数据包的结构,以及协议分析。如:网络监控,故障排查等…… IP包是不安全的,但是它是互联网的基础,在各方面都有广泛的应用。由IP协议衍生的协议族有10数种(据我所知),以后还会出现更多的基于IP的协议… 先从实际出发吧!一般转载 2015-08-18 09:28:53 · 23183 阅读 · 2 评论 -
流媒体 UDP服务器设计
mListenSocket服务器只有一个监听8082,mClientSocket 每个客户端一个端口随机 客户端和服务器UDP socket交互过程1.服务器创建mListenSocket监听8082端口2.客户端向服务器8082端口发送数据如下:CONNECT REQVersion(4bits)MSG(4bits)Rese原创 2015-09-09 18:15:57 · 989 阅读 · 0 评论 -
linux查看端口是否禁用和开启关闭端口
1、开启端口(以80端口为例) 方法一: /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 写入修改 /etc/init.d/iptables save 保存修改 service iptables restart 重启防火墙,修改生效转载 2016-10-21 15:38:42 · 31929 阅读 · 0 评论