TCP
文章平均质量分 92
TCP 学习
废言Pro
时间加努力
展开
-
TCP/IP拥塞控制总结...
一.先唠唠嗑按照计划,今天该出分布式一致性系列的第四篇-Paxos算法,但是又鸽了。Paxos这个算法要很好地表达写出来并不容易,所以到现在还没有完成,于是就有了这篇组装的带有丝丝标题党感觉的干货文章,全小区最强TCP/IP总结...逃...在正式开始文章技术点之前,想先聊一下我对面试中的TCP/IP问题的一些拙见,希望对盆友们有所帮助。在招聘岗位描述中,几乎必然有一条熟悉、掌握、精通TCP/IP协议、Http协议、网络编程技术。对于我们求职者来说,肯定知道的越多越好,但是就像过日子一样转载 2021-08-01 13:25:34 · 599 阅读 · 0 评论 -
23 个问题 TCP 疑难杂症全解析
以下文章来源于yes的练级攻略,作者是Yes呀每个时代,都不会亏待会学习的人。大家好,我是 yes。在进入今天主题之前我先抛几个问题,这篇文章一共提出 23 个问题。TCP 握手一定是三次?TCP 挥手一定是四次?为什么要有快速重传,超时重传不够用?为什么要有 SACK,为什么要有 D-SACK?都知道有滑动窗口,那由于接收方的太忙了滑动窗口降为了 0 怎么办?发送方就永远等着了?Silly Window 又是什么?为什么有滑动窗口流控还需要拥塞控制?快速重传一定.转载 2020-09-16 09:45:17 · 447 阅读 · 0 评论 -
传输层协议(13):拥塞控制(2)
5.3.9.2 快速重传和快速恢复上一小节所讲述的网络拥塞,说的是TCP 发送方发送了一批数据(1个或多个报文),一直等到超时(RTO),也没有收到对方的 ACK 报文。但是上一小节关于网络拥塞的处理,有一个潜台词的假设没有说出来,那就是:网络长时间拥塞,如图5-146所示:图5-146网络长时间拥塞图5-146中,我们假设 B 对 A 所发送的每一个报文都应该回...转载 2020-03-02 20:50:54 · 281 阅读 · 0 评论 -
传输层协议(12):拥塞控制(1)
5.3.9 拥塞控制在以前章节所介绍的特性中,比如延迟确认、扩大滑动窗口(Window Scale Option)等,其目的都是为了提高 TCP 的发送效率。这些特性都有一个潜台词:网络是不拥塞的。毕竟如果网络是拥塞的话,提升发送效率没有任何意义。(当然,延迟确认也有避免网络拥塞的功效,这是另一个话题)网络拥塞的定义,我们就不啰嗦了,那句著名的英语成语已经能说明一切:People Moun...转载 2020-03-02 20:23:22 · 597 阅读 · 0 评论 -
传输层协议(11):超时重传
5.3.8 超时估计在TCP 的发送空间里,有一部分数据称为“已发送未确认”,如图5-117所示:图5-117已发送未确认数据应该说,“已发送未确认”的数据是必然存在的,只是存在的时间长短的问题。一个报文中的数据,在发送出去那一刹那,其状态肯定是“已发送未确认”。在一切都正常的情况下,TCP 发送方会在较短的时间内收到对方的 ACK 报文:确认这些数据已经被收到。...转载 2020-03-02 15:25:42 · 990 阅读 · 0 评论 -
传输层协议(10):滑动窗口(4)
5.3.1.5 Zero Window(0窗口)Zero Window(0窗口)指的是 TCP 发送方的滑动窗口大小为0,其本质上是因为 TCP 接收方的接收缓存已经满了,没有空间再接收数据。当处于Zero Window 时,TCP 发送方是不能向对方发送数据的——即使发送也会被对方给怼回来,如图5-107所示:图5-107Zero Window 示意图5-10...转载 2020-03-02 13:33:32 · 1116 阅读 · 0 评论 -
传输层协议(9):滑动窗口(3)——会呼吸的痛
5.3.1.4 Urgent(紧急数据)紧急数据(Urgent Data),TCP 有时候也简称 Urgent。作为 TCP 的一个特性,由于它的单词含义(紧急的、急迫的),Urgent 似乎是给人一种一目了然的感觉,实际上它却比较容易引起困扰。这个困扰是什么,我们暂且按下不表,先看看 Urgent 在 TCP 里面的定义是什么。1)紧急数据的基本定义Urgent 在 TCP 里...转载 2020-03-02 10:37:53 · 377 阅读 · 0 评论 -
传输层协议(8):滑动窗口(2)
5.3.1.3 PUSH在上一小节中,我们讲述了TCP 为了提升网络传输效率以及避免一些不必要的网络拥塞,而不惜付出些许时延的代价,以将多个小包攒成1个大包进行发送。本小节讲述的“PUSH”,其目标则恰恰相反,它是为了减少“时延”。PUSH 本身是 TCP 报文头中的一个 Flag,如图5-90所示:图5-90TCP 报文结构图5-90中的“P”标记位,代表的...转载 2020-03-01 19:37:18 · 256 阅读 · 0 评论 -
传输层协议(7):滑动窗口(1)
5.3 传输控制TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在前面的章节中,我们介绍了TCP 连接的相关概念,也介绍了 TCP 为什么说是一种面向字节流的协议,也基本介绍了为什么说 TCP 是可靠的协议。但是TCP 中的“C”——控制(Control),体现在哪里呢?在数据传输的过程中,TC...转载 2020-03-01 17:25:45 · 869 阅读 · 0 评论 -
传输层协议(6):TCP 连接(下-3)
5.2.13 TCP 连接的初始序列号在前文中,一直提到一个词ISN(The Initial Sequence Number,ISN,初始序列号),就是创建 TCP 连接发送 SYN 报文时,其中的 SEQ(Sequence Number)的值。因为是初始创建连接时的请求报文,所以这个报文中的 SEQ,有一个特别的称号:初始序列号。关于ISN 的取值,RFC 793 和 RFC 652...转载 2020-03-01 16:46:14 · 586 阅读 · 0 评论 -
传输层协议(5):TCP 连接(下-2)
5.2.12 收到对方报文上一小节我们讲述了TCP 的一方等待另一方报文超时的情形,那真是望眼欲穿、黯然神伤。那么,如果没有超时,在期望时间内收到了对方的报文呢?是不是就是欢呼雀跃一下子扑进对方的怀抱呢?来敲门的不一定都是幸福,也有可能是狼外婆。所以,TCP 收到对端的报文时,首先要做的就是合法性检查,然后再根据检查情况,决定下一步的动作。至于什么样的报文是合法的,则与当是的 TCP 的...转载 2020-03-01 16:43:35 · 444 阅读 · 0 评论 -
传输层协议(4):TCP 连接(下-1)
5.2.7 TCP 连接的收发空间在5.2.3节“TCP 连接是什么”的结尾处,笔者写道:暂时忘记真相,还是记住 TCP 连接这个名词吧。不过很抱歉,本小节,我们还得旧话重提——对于 TCP 的任何一端来说,所谓 TCP 连接,不过是叫作 TCB 的一块内存而已。TCB 这个数据结构,不同厂商的具体实现,其细节会各有不同,但是从本质上来说,它逃不脱 RFC 793 所定义的范围,如图5-3...转载 2020-02-29 21:56:16 · 427 阅读 · 0 评论 -
传输层协议(3):TCP 连接(中)
5.2.4 全双工的TCP 连接从某种意义上讲,本文前面的3节(5.2.1~5.2.3),笔者的目的都是为了讲述 TCP 连接是什么:(1)从物理形式来说,TCP 连接就是两个 Host 进程内部相应的 TCB 数据结构实例。(2)从逻辑形式来说,TCP 连接是人类的一个想象,或者一个比方,两个 Host 进程之间有那么1条(或多条)连接。知道了TCP 连接是什么以后,我们就不必...转载 2020-02-29 21:26:27 · 433 阅读 · 0 评论 -
传输层协议(2):TCP 连接(上)
5.2 TCP 连接一直一来,很多资料都说TCP 是一个面向连接的协议。对于不太了解 TCP 的人来说,这句话实际上造成了很大的误解。TCP 所面向的连接,到底是什么?是网络中的一条链路吗?是图5-15所示的那条“A-R1-R3-R4-R6-B”链路吗?图5-15TCP 连接是网络中的链路吗?实际上,TCP 所面向的连接,既不是网络中一条真实的物理链路也不是一条...转载 2020-02-29 20:53:27 · 551 阅读 · 0 评论 -
传输层协议(1):TCP 报文结构
传输层位于OSI 七层模型的第4层,也位于 TCP/IP 五层模型的第4层,如图5-1所示:图5-1传输层传输层包括两大基本协议:TCP(Transmission Control Protocol 传输控制协议)、UDP(User Datagram Protocol,用户数据报协议)。无论是TCP 还是 UDP,它所“传输”的都是应用层数据。这句话既是“废话...转载 2020-02-29 15:48:14 · 2051 阅读 · 1 评论 -
TCP 的那些事儿(下)
这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定。在你阅读下篇之前,你需要做好准备,本篇文章有好些算法和策略,可能会引发你的各种思考,让你的大脑分配很多内存和计算资...转载 2020-01-14 21:51:17 · 152 阅读 · 0 评论 -
TCP 的那些事儿(上)
TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,我还是推荐你去看W.Richard Stevens的《TCP/IP 详解 卷1:协议》(当然,你也可以去读一下RFC793以及后面N多的RFC)。另外,本文我会使用英文术语,这样方便你通过这些英文关键词来查找相关的...转载 2020-01-14 21:47:01 · 167 阅读 · 0 评论 -
TCP/IP协议简介
从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。一、 计算机网络体系结构分层计算机网络体系结构分层计...原创 2019-06-19 09:15:58 · 964 阅读 · 0 评论 -
从TCP三次握手说起——浅析TCP协议中的疑难杂症
【引言】说到TCP协议,相信大家都比较熟悉了,对于TCP协议总能说个一二三来,但是TCP协议又是一个非常复杂的协议,其中有不少细节点让人头疼。本文就是来说说这些头疼点的,浅谈一些TCP的疑难杂症。那么从哪说起呢?当然是从三次握手和四次挥手说起啦,可能大家都知道TCP是三次交互完成连接的建立,四次交互来断开一个连接,那为什么是三次握手和四次挥手呢?反过来不行吗?疑症一:TCP的三次握手、四次...转载 2019-05-08 08:53:18 · 270 阅读 · 0 评论 -
UDP协议疑难杂症全景解析
如今,但凡说精通网络的,第二个意思就是“精通TCP”,事实上,很多自称精通TCP的家伙们只是精通socket接口而已,对TCP行为精通的并不多,笔者也不算精通,但绝对是中等以上水平。如果你真的精通TCP行为,那么本文不读也罢,直接发邮件给我,我们切磋一下,如果只是了解socket接口,那么建议读本文,然后一定再看一下《TCP协议疑难杂症全景解析》0.UDP协议和TCP协议UDP是用户数据报协议...转载 2018-11-23 20:57:30 · 122 阅读 · 0 评论 -
TCP协议疑难杂症全景解析
说明:1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的3).针对对象:对TCP已经有了全面了解的人。因为本文不会解析TCP头里面的每一个字段或者3次握手的细节,也不会解释慢启动和快速重传的定义4).除了《TCP/IP详解》(卷一,卷二)以及《Unix网络编程》以及Linux源代码之外,学习网...转载 2018-11-13 23:12:22 · 137 阅读 · 0 评论