
TCP/IP协议
hbcbgcx
这个作者很懒,什么都没留下…
展开
-
Linux深入理解Socket异常
在各种网络异常情况的背后,TCP是怎么处理的?又是怎样把处理结果反馈给上层应用的?本文就来讨论这个问题。分为两个场景来讨论建立连接时的异常情况1 正常情况下 经过三次握手,客户端连接成功,服务端有一个新连接到来。2 客户端连接了服务端未监听的端口 在这种情况下,服务端会对收到的SYN回应一个RST(RFC 793 3.4),客户端收到RST之后,终止连接,并进入CLOSED状态。...转载 2020-02-04 21:49:24 · 691 阅读 · 0 评论 -
使用 tap/tun 设备
02 编程示例2.1 启动设备使用 tap/tun 设备,需要先进行一些初始化工作,如下代码所示:int tun_alloc(char *dev, int flags){assert(dev != NULL);struct ifreq ifr;int fd, err;char *clonedev = "/dev/net/tun";if ((fd = open(clonedev...转载 2019-06-14 11:55:18 · 773 阅读 · 0 评论 -
TUN/TAP设备浅析
https://blog.youkuaiyun.com/lishuhuakai/article/details/73136442TUN/TAP设备浅析TUN设备TUN 设备是一种虚拟网络设备,通过此设备,程序可以方便地模拟网络行为。TUN 模拟的是一个三层设备,也就是说,通过它可以处理来自网络层的数据,更通俗一点的说,通过它,我们可以处理 IP 数据包。先来看看物理设备是如何工作的:上图中的 et...转载 2019-06-14 11:55:07 · 2815 阅读 · 0 评论 -
linux下TUN/TAP虚拟网卡的使用
https://blog.youkuaiyun.com/bytxl/article/details/26586109在计算机网络中,TUN与TAP是操作系统内核中的虚拟网络设备。不同于普通靠硬件网路板卡实现的设备,这些虚拟的网络设备全部用软件实现,并向运行于操作系统上的软件提供与硬件的网络设备完全相同的功能。TAP 等同于一个以太网设备,它操作第二层数据包如以太网数据帧。TUN模拟了网络层设备,操作第三层...转载 2019-06-14 11:54:59 · 458 阅读 · 0 评论 -
流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)
https://blog.youkuaiyun.com/tttyd/article/details/12032357/RTP参考文档 RFC3550/RFC3551Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。RTP协议常用于流媒体系统(配合RTCP协议),视频会议和一键通...转载 2019-03-21 11:05:19 · 186 阅读 · 0 评论 -
TCP的ACK确认系列 — 发送状态转换机
所属专栏: TCP协议优化版权声明:本文为博主原创文章,转载请注明出处。 https://blog.youkuaiyun.com/zhangskd/article/details/45127565主要内容:TCP的ACK发送方式,以及ACK发送状态转换机的实现。内核版本:3.15.2我的博客:http://blog.youkuaiyun.com/zhangskd概述TCP采用两种方式来发送ACK:快速确认和延...转载 2019-03-05 17:25:44 · 258 阅读 · 0 评论 -
再探Linux下的TCP延迟确认机制--TCP_QUICKACK
https://blog.youkuaiyun.com/u011006622/article/details/81086439转载:http://pananq.com/index.php/2011/08/29/再探linux下的tcp延迟确认机制/案例一:某同事随手写个压力测试程序,其实现逻辑为:每秒钟先连续发N个132字节的包,然后连续收N个由后台服务回显回来的132字节包。其代码大致如下: 1:...转载 2019-02-20 14:57:41 · 466 阅读 · 0 评论 -
setsockopt/getsockopt
setsockoptint setsockopt(int sockfd, int level, int optname,const void *optval, socklen_t optlen);sockfd:标识一个套接口的描述字。level:选项定义的层次;支持SOL_SOCKET、IPPROTO_TCP、IPPROTO_IP和IPPROTO_IPV6。optname:需设置的选项。...转载 2019-02-20 12:08:35 · 488 阅读 · 0 评论 -
大并发服务器不得不说的技术--TCP_CORK
https://blog.youkuaiyun.com/mijichui2153/article/details/81356115SOL_TCP, TCP_CORK 的头文件:#include <netinet/tcp.h>CORK选项提高了网络的利用率,因为它直接禁止了小包的发送。Nagle算法没有禁止小包发送,只是禁止了大量小包的发送。如果把tcp当成服务端与客户端的管道,cork 就...转载 2019-02-20 12:15:01 · 136 阅读 · 0 评论 -
UDP_CORK,TCP_CORK以及TCP_NODELAY
版权声明:本文为博主原创,无版权,未经博主允许可以随意转载,无需注明出处,随意修改或保持可作为原创! https://blog.youkuaiyun.com/dog250/article/details/5941637这三个选项十分有意思,并且困扰了很多人。特别是cork选项,它到底和nodelay有什么区别,到底怎样影响了Nagle算法。在tcp的实现中(特指linux内核的协议栈实现),cork和nod...转载 2019-02-20 12:20:15 · 306 阅读 · 0 评论 -
Linux内核为大规模支持100Gb/s网卡准备好了吗?并没有
版权声明:本文为博主原创,无版权,未经博主允许可以随意转载,无需注明出处,随意修改或保持可作为原创! https://blog.youkuaiyun.com/dog250/article/details/86756635又是大年初一,和过去三十多年的新年一样,无聊,消沉,吃不好饭,盼着上班(小时候是盼着开学…)…事实上,不仅仅是Linux内核,几乎所有的 现代操作系统 都没有为支持100Gb/s做好准备。...转载 2019-02-20 12:25:13 · 200 阅读 · 0 评论 -
TCP和UDP在网络层实现的不同--基于linux内核
版权声明:本文为博主原创,无版权,未经博主允许可以随意转载,无需注明出处,随意修改或保持可作为原创! https://blog.youkuaiyun.com/dog250/article/details/5939241由于4层协议实现复杂度的不对称性,导致3层协议实现也不易统一,换句话说就是同样的3层协议比如IP要为不同的4层协议提供不同的实现,这是因为我们熟知的4层协议分为流和数据报两种类型,流式协议比如...转载 2019-02-20 12:29:50 · 198 阅读 · 0 评论 -
UDP之数据报发送过程
https://blog.youkuaiyun.com/xiaoyu_750516366/article/details/84889307当应用程序调用send()等一系列系统调用向UDP套接字写数据时,最终会调用到UDP的udp_sendmsg(),这篇笔记就以该函数为入口分析下UDP对发送数据包的处理过程。1. 基本特性在分析代码之前,有必要对一些UDP的写操作特性做特别的说明,否则会看的晕头转向。...转载 2019-02-20 14:23:49 · 972 阅读 · 0 评论 -
再次谈谈TCP的Nagle算法与TCP_CORK选项
2014年03月16日 00:27:42 dog250 阅读数:24351版权声明:本文为博主原创,无版权,未经博主允许可以随意转载,无需注明出处,随意修改或保持可作为原创! https://blog.youkuaiyun.com/dog250/article/details/21303679事件回放使用OpenVPN传输虚拟桌面流量,终端上有明显逐帧刷屏现象,网络环境为百兆局域网。分析1.首先将O...转载 2019-02-20 14:34:19 · 109 阅读 · 0 评论 -
TCP选项之SO_LINGER
http://blog.chinaunix.net/uid-29075379-id-3904022.htmlSO_LINGER这个选项在我以前带队改造haproxy的时候引出过一个reset(RST)客户端连接的bug。SO_LINGER作用设置函数close()关闭TCP连接时的行为。缺省close()的行为是,如果有数据残留在socket发送缓冲区中则系统将继续发送这些数据给对方,等待被...转载 2019-02-20 14:40:11 · 251 阅读 · 0 评论 -
Linux TCP_DEFER_ACCEPT的作用
https://blog.youkuaiyun.com/for_tech/article/details/541755711. TCP服务端int serverSocket = socket(AF_INET, SOCK_STREAM, 0);......bind(serverSocket, (struct sockaddr *)&server_addr, sizeof(server_addr)...转载 2019-02-20 14:44:35 · 380 阅读 · 0 评论 -
TCP连接状态-如何判断一个TCP连接是否可用
https://www.cnblogs.com/gwwdq/p/9261615.html在使用一个长连接的TCP时,如果TCP服务器端接收到TCP的客户端连接过来后,接着服务器端的TCP节点需要对这个客户端进行数据收发,收发时需要判断这个SOCKET是否可用用,判断方法有多种;1.linux的5种方法,本人在使用modbus服务器端判断已经连接的设备或是gprs服务器对已经连接的GPRS设备判...转载 2019-02-18 17:58:43 · 2847 阅读 · 0 评论