
TCP/IP协议
GoRustNeverStop
这个作者很懒,什么都没留下…
展开
-
连续发送多份小数据时40ms延迟问题
连续发送多份小数据时40ms延迟问题 以及TCP_NODELAY、TCP_CORK失效问题的定位与解决Pyramid tandai@baidu.com提到TCP_NODELAY和TCP_CORK,相信很多人都很熟悉。然而由于Linux实现上的问题,这两个参数在实际使用中,并不像书里介绍的那么简单。最近DTS在解决一个TCP超时问题时,对这两个参数和它们背后所隐藏的问转载 2016-03-20 09:46:45 · 3106 阅读 · 0 评论 -
TCP的流量控制和拥塞控制
TCP的流量控制1. 利用滑动窗口实现流量控制 如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。 利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。 设A向B发送数据。在连接建立时,B告诉了A:“我的接收窗口是 rwnd = 400 ”(这里转载 2016-07-29 17:51:47 · 907 阅读 · 0 评论 -
tcp连接的建立(三次握手)和释放(四次握手)
TCP报文段首部格式:序号:本报文段所发送的数据的第一个字节的序号。确认号ack:期待收到对方下一个报文段的第一个数据字节的序号确认ACK:占1位,仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效同步SYN:连接建立时用于同步序号。当SYN=1,ACK=0时表示:这是一个连接请求报文段。 若同意连接,则在响应报文段中使得转载 2016-07-29 18:01:28 · 1042 阅读 · 0 评论 -
TCP为什么需要三次握手
tcp为什么要第三次握手,time_wait是做什么的? tcp有几种状态,画出所有的状态转换图。 晚上看到的面试题,TCP三次握手的印象很深,但为什么需要3次握手,还是想不起来了。简单而言:如果不是三次握手的话,那么到底需要几次握手最佳呢?2次握手,或者4次以上的握手?先看2次握手的情况:客户端给服务器发送建立连接的请求,服务器同意连接请求发回转载 2016-08-01 21:02:47 · 608 阅读 · 0 评论 -
HSRP和VRRP工作原理详解
以下内容摘自笔者刚刚出版上市热销的《Cisco/H3C交换机高级配置与管理技术手册》一书。大家看一下文中的图片是否显示正常,因为我是直接从word中复制过来的,谢谢!!2.1.1 HSRP概述 实现HSRP的条件是系统中有多台路由器,它们组成一个“热备份组”,这个组形成一个虚拟路由器。在任一时刻,一个组内只有一个路由器是活动的,并由它来转发数据包;如果活动路由器发生了故障,转载 2016-08-17 23:52:53 · 2632 阅读 · 1 评论 -
RIP、OSPF、EIGRP 区别(学习帖)
三种类型的动态路由协议算法分别是距离矢量算法,链路状态算法以及平衡混合算法,这几种算法的类型代表:RIP、OSPF、EIGRP。而且它们都是内部网关协议(IGP),也就是说它们都运行在一个自治系统内部,什么是自治系统,我们来简单看一下:自治系统:就是使用相同路由准则的网络集合,一般是一个ISP,或者是一个大型的行政机构。大家刚听到这个术语时会感到有点模糊,有点抽象,在CCNP的课程中会有详转载 2016-08-17 23:53:45 · 22202 阅读 · 0 评论 -
Listen第二个参数的意义
Listen第二个参数的意义 今天主要回顾下listen的第二个参数的意义。 话说现在现在都是用框架写业务代码。真的很少在去关注最基本的socket函数的意义了。该忘得都忘得差不多了。~~~ 要慢慢捡起来。 主要是在看redis网络这块的时候它的第二个参数设置的是500多。 而且突然想到当初几年前腾讯电话面试问过我第二个参数是什么意思。当时我一股脑就说成co转载 2016-08-18 11:31:16 · 1330 阅读 · 0 评论 -
TCP 协议简介
作者: 阮一峰日期: 2017年6月 8日TCP 是互联网核心协议之一,本文介绍它的基础知识。一、TCP 协议的作用互联网由一整套协议构成。TCP 只是其中的一层,有着自己的分工。(图片说明:TCP 是以太网协议和 IP 协议的上层协议,也是应用层协议的下层协议。)最底层的以太网协议(Ethernet)规定了电子信号如何组成数转载 2017-07-11 09:45:50 · 691 阅读 · 0 评论 -
TCP(HTTP)长连接和短连接区别和怎样维护长连接
http://blog.youkuaiyun.com/ls5718/article/details/51757467一、HTTP协议和TCP协议HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的转载 2017-12-12 09:49:19 · 1413 阅读 · 0 评论 -
通俗易懂地讲解TCP建立连接的三次握手和释放连接的四次挥手
https://www.cnblogs.com/xiaoming0601/p/6001021.htmlTCP建立连接时,为什么要进行三次挥手? 每一次TCP连接都需要三个阶段:连接建立、数据传送和连接释放。三次握手就发生在连接建立阶段。 在谢希仁著《计算机网络》第四版中讲三次握手的目的是为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。在另一部经典的《计算机网转载 2017-12-12 09:51:34 · 621 阅读 · 0 评论 -
TCP协议中的三次握手和四次挥手(图解)
建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。【更新于2017.01.04 】该部分内容配图有误,请大家见谅,正确的配图如下,错误配图也不删了,大家可以比较下,对比理解效果更好。这么久才来更新,抱歉!!错误配图如下:首先Client端发送连接请求报文,Server转载 2017-12-12 09:54:50 · 380 阅读 · 0 评论 -
linux本地进程间socket通信是否经过网卡?
转自:https://www.zhihu.com/question/43590414结论:不走网卡,不走物理设备,但是走虚拟设备,loopback device环回.最简单的办法,拔掉网线,自己测试一个本地socket通信传输数据,就OK了。本机的报文的路径是这样的:应用层-> socket接口 -> 传输层(tcp/udp报文) -> 网络层 -> back to转载 2017-12-13 21:01:12 · 3876 阅读 · 3 评论 -
TCP/IP网络编程之四书五经
TCP/IP协议是当前广域网和局域网通用的网络协议,因此,基于TCP/IP的编程就格外重要。从应用上来说,现在直接利用C层次Socket API进行TCP/IP编程的人确实越来越少了,各种现成的框架(如ACE、Java、.NET FCL)和控件(如IP*Works)大大简化了TCP/IP编程的难度。但是,如果想要在这个领域达到融会贯通的地步,不打下坚实的基础是不可想象的。正如Richard S转载 2016-06-18 22:19:35 · 2400 阅读 · 0 评论 -
TCP--RST复位攻击
1.RST标识位RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。发送RST包关闭连接时,不必等缓冲区的包都发出去(FIN包),直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。TCP处理程序会在自己认为的异常时刻发送RST包。2个例子:1)A向B发起连接,但B之上并未监听相应的端口,这时B操作系统上的TC转载 2016-07-01 09:00:06 · 1351 阅读 · 0 评论 -
TCP定时器介绍
TCP/IP中关于定时器的介绍,TCP为每条连接建立七个定时器,分别为: 1.连接建立定时器,在发送SYN报文段建立一条新连接时启动。如果没有在75S内收到响应,连接建立将终止。 2.重传定时器在TCP发送数据时设定。如果定时器已超时而对端的确认还未到达,TCP将重传数据。重传定时器的值(即TCP等待对端确认的时间)是动态计算的,取决于TCP为该连接测量的往返时间和该报转载 2016-05-31 21:16:23 · 684 阅读 · 0 评论 -
糊涂窗口综合症和Nagle算法
TCP/IP详解系列,关于tcp拥塞控制和数据流的地方讲的不细致,或许是涉及概念/算法太多,作者略去了一些对初学者来说比较陌生的细节吧。比如SWS未说明是什么就开始介绍其避免方法,还和nagle扯在了一起,直觉告诉我二者一定有猫腻,边搜索一下,果然很有收获。今天贴在这里,分享给大家。 关键字:糊涂窗口综合症 nagle算法 延迟ACK/clark算法 CORK选项第一部转载 2016-03-20 09:55:44 · 706 阅读 · 0 评论 -
TCP的流量控制
1.TCP的滑动窗口 为了提高信道的利用率TCP协议不使用停止等待协议,而是使用连续ARQ协议,意思就是可以连续发出若干个分组然后等待确认,而不是发送一个分组就停止并等待该分组的确认。 TCP的两端都有发送/接收缓存和发送/接收窗口。TCP的缓存是一个循环队列,其中发送窗口可以用3个指针表示。而发送窗口的大小受TCP数据报中窗口大小的影响,TCP数据报中的窗转载 2016-03-13 16:15:40 · 1007 阅读 · 0 评论 -
TCP时延问题
Q:TCP时延问题是由什么原因产生?A:TCP延时确认(Delayed Ack)机制导致的。Q:TCP延时确认机制作用?A:TCP在处理交互数据流(即Interactive Data Flow,区别于Bulk Data Flow,即成块数据流,典型的交互数据流如telnet、rlogin等)时,采用了Delayed Ack机制以及Nagle算法来减少小分转载 2016-03-13 16:23:02 · 5106 阅读 · 0 评论 -
tcpdump用法
tcpdump是非常强大的网络安全分析工具,可以将网络上截获的数据包保存到文件以备分析。可以定义过滤规则,只截获感兴趣的数据包,以减少输出文件大小和数据包分析时的装载和处理时间。 1. tcpdump用法说明tcpdump [ -AbdDefhHIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]转载 2016-03-13 16:24:37 · 1419 阅读 · 0 评论 -
TCP中的定时器
1.连接建立(connection establishment)”定时器 在发送SYN报文段建立一条新连接时启动。如果在75秒内没有收到响应,连接建立将中止。2.“重传(retransmission)”定时器 在TCP发送某个数据段时设定。如果该定时器超时而对端的确认还未到达,TCP将重传该数据段。重传定时器的值 (即TCP等待对端确认的时间)是动态转载 2016-03-13 16:26:39 · 455 阅读 · 0 评论 -
LInux Tcp 延迟确认问题
案例一:同事随手写个压力测试程序,其实现逻辑为:每秒钟先连续发N个132字节的包,然后连续收N个由后台服务回显回来的132字节包。其代码简化如下:char sndBuf[132];char rcvBuf[132];while (1) { for (int i = 0; i send(fd, sndBuf, sizeof(转载 2016-03-13 16:27:49 · 3325 阅读 · 0 评论 -
Nagle算法 && CORK算法
1. Nagel算法 TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据。(一个连接会设置MSS参数,因此,TCP/IP希望每次都能够以MSS尺寸的数据块来发送数据)。Nagle算法就是为了尽可能发送大块数据,避免网络中充斥着许多小数据块。转载 2016-03-13 16:29:57 · 750 阅读 · 0 评论 -
非阻塞connect()
如何设置socket的Connect超时(linux) [From]http://dev.cbw.com/c/c/200510195601_4292587.shtml1.首先将标志位设为Non-blocking模式,准备在非阻塞模式下调用connect函数2.调用connect,正常情况下,因为TCP三次转载 2016-04-12 21:23:30 · 972 阅读 · 0 评论 -
TCP协议疑难杂症全景解析
说明:1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的3).针对对象:对TCP已经有了全面了解的人。因为本文不会解析TCP头里面的每一个字段或者3次握手的细节,也不会解释慢启动和快速重传的定义4).除了《TCP/IP详解》(卷一,卷二)以及《Unix网络编程》以及Linux源代码之外,转载 2016-04-13 00:20:39 · 652 阅读 · 0 评论 -
TCP的TIME_WAIT快速回收与重用
声明一点:Linux中是无法修改tcp的TIME_WAIT值的,除非重新编译,起码我是没有找到怎么改。值得注意的是,net.ipv4.tcp_fin_timeout这个参数是FIN_WAIT_2的值,而不是TIME_WAIT的值。我不知道为何很多人都会把它当成是TIME_WAIT的值,想了一下,我觉得是两点:1.TIME_WAIT过于耀眼,以至于所有出现timeout,加上里面有个tcp的转载 2016-04-13 00:25:57 · 1566 阅读 · 0 评论 -
tcp_tw_recycle和tcp_timestamps导致connect失败问题
近来线上陆续出现了一些connect失败的问题,经过分析试验,最终确认和proc参数tcp_tw_recycle/tcp_timestamps相关; 1. 现象 第一个现象:模块A通过NAT网关访问服务S成功,而模块B通过NAT网关访问服务S经常性出现connect失败,抓包发现:服务S端已经收到了syn包,但没有回复synack;另外,模块A关闭了tcp timestamp,而模转载 2016-04-14 20:09:11 · 2286 阅读 · 0 评论 -
TCP的流量控制与拥塞控制
一、TCP的流量控制1、利用滑动窗口实现流量控制 如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。 利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。 设A向B发送数据。在连接建立时,B告诉了A:“我的接收窗口是rwnd = 400”(这里的rwnd表示re转载 2016-03-12 21:38:14 · 509 阅读 · 0 评论