四七层协议栈
文章平均质量分 84
本栏主要记录四七层协议,如TCP/HTTP等协议的学习
一个小白的学习日常
这个作者很懒,什么都没留下…
展开
-
传输层协议TCP——拥塞控制(2)
1 快速重传与快速恢复1.1关于报文乱序和丢包的 ACK原创 2021-03-31 18:39:45 · 113 阅读 · 0 评论 -
传输层协议TCP—拥塞控制(12)
1 拥塞控制简介 拥塞控制讲述的则是从如何避免网络拥塞的视角或者网络已经拥塞的情形下,TCP 对应的算法和处理机制。TCP 拥塞控制(对应 RFC 5681)包括4个算法(机制):慢速启动、拥塞避免、快速重传、快速恢复。2慢速启动和拥塞避免 慢速启动和拥塞避免,是成对出现的两个算法。我们先介绍一个名词:cwnd(拥塞窗口)。我们知道,TCP 发送方可以连续发送多个 Segment,而不必等待对方的 ACK。理想情况下,TCP 甚至可以连续发送完最大窗口(230)所包含的字节。...原创 2021-03-29 21:37:22 · 874 阅读 · 0 评论 -
传输层协议TCP—RTTM(11)
1 RTTM(往返时间测量) 往返时间测量确实没有什么好讲述的,除非遇到了超时重传,如图5-123所示: 上图5-123中,对于超时重传场景,如前文所述,实在是没法测量报文 SEG1 的往返时间。针对这种场景,Karn 算法的思路是:既然无法测量 RTT 那就不测量,直接将 RTO(准确地说是 SRTT)进行指数回退。应该说,Karn 算法是一种解决思路,但是有点过于简单粗暴,毕竟对于超时重传场景,不是绝对的无法测量,只是 TCP 机制上有点缺陷致使 A...原创 2021-03-10 16:31:25 · 2359 阅读 · 0 评论 -
传输层协议TCP—超时估计(10)
1 超时估计 对于tcp发送端发送完数据后却迟迟收不到对端的ack报文,这个时候tcp连接应该怎么做呢?TCP 的对策是“超时重传”:在一定的时间内,如果还没有收到对方相应的 ACK 报文,那么 TCP 发送方会将这部分数据重新发送给对方。超时重传的机制没有问题,问题是“超时”的事件确定,也就是说,TCP 发送方等多少时间认为是超时了?如果超时时间过长,则发送效率有问题(时间都花在不必要的等待上了),如果超时时间过短,则会产生不必要的重复发送。要知道未能及时收到对方的 ACK 报文,很大的原...原创 2021-03-09 17:29:39 · 571 阅读 · 0 评论 -
TCP常见面试题
【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。【问题2】为什么TIME.原创 2021-02-14 22:40:52 · 595 阅读 · 0 评论 -
传输层协议TCP性能调优
1 时延对于HOST处理数据报文来看,有如下几种时延:传播延迟: 消息从发送端到接收端需要的时间,是信号传播距离和速度的函数 传输延迟: 把消息中的所有比特转移到链路中需要的时间,是消息长度和链路速率的函数 处理延迟: 处理分组首部、检查位错误及确定分组目标所需的时间 排队延迟: 到来的分组排队等待处理的时间在TCP连接过程中,有以下几个方面产生的时延是比较大的。1.1 三次握手产生的时延 每个http连接都需要经过三次握手,从纽约向伦敦请求,启动一次TCP连接,光三...原创 2021-02-21 20:56:06 · 870 阅读 · 0 评论 -
传输层协议TCP(1)
1 TCP报文结构 TCP 是一种面向连接的、可靠的、基于字节流的端到端的传输层通信协议(RFC 793)。其报文结构如下。 可以看到,TCP 报文位于 IP 报文头之后,从 IP 的视角来看,TCP 报文属于 IP 的数据(对应着 IP Header 中的“协议”字段等于6)。 进一步打开报文的结构,如下所示:(1)源目端口号 源端口号、目的端口号的数据类型都是无符号整数,各占据16 bits,所以其取值范围都是 0~65535(64...原创 2021-02-10 20:37:02 · 889 阅读 · 0 评论 -
传输层协议TCP(2)
1 全双工的TCP连接 TCP 连接一个需要特别指出的特征是:它是全双工的。也就是说,TCP 连接创建以后,双向可以同时发送数据,如下图所示: 一般C/S模型和全双工都常用来形容TCP连接,但两者是不同的,差异如下:(1)TCP Client/Server,指的是 TCP 连接创建过程中,谁是主动方,谁是被动方。 (2)TCP 连接的全双工,指的是 TCP 数据传输过程中,双方可以同时传输数据。 两者所表达的场景是不同的。TCP的建立并不...原创 2021-02-12 22:31:20 · 383 阅读 · 0 评论 -
传输层协议TCP(3)
江月待何人,渔歌唱晚舟原创 2021-02-13 23:17:49 · 632 阅读 · 0 评论 -
传输层协议TCP(4)
新年快乐原创 2021-02-14 21:41:28 · 486 阅读 · 0 评论 -
传输层协议TCP(5)
学习原创 2021-02-19 21:25:05 · 541 阅读 · 1 评论 -
传输层协议TCP—滑动窗口(6)
1传输控制 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在前面的章节中,我们介绍了TCP 连接的相关概念,也介绍了 TCP 为什么说是一种面向字节流的协议,也基本介绍了为什么说 TCP 是可靠的协议。但是TCP 中的“C”——控制(Control),体现在哪里呢?在数据传输的过程中,TCP 又是如何控制的呢?要研究TCP 中的控制,首先要看 TCP 的上下文,如下图5-82所示: ...原创 2021-02-22 18:44:23 · 649 阅读 · 0 评论 -
传输层协议TCP—滑动窗口(7)
1 PUSH 在上一小节(6)讲述了TCP 为了提升网络传输效率以及避免一些不必要的网络拥塞,而不惜付出些许时延的代价,以将多个小包攒成1个大包进行发送。本小节讲述的“PUSH”,其目标则恰恰相反,它是为了减少“时延”。PUSH 本身是 TCP 报文头中的一个 Flag,如图5-90所示: 上图5-90中的“P”标记位,代表的就是 PUSH(有时候简写为 PSH),占用1个 bit。当 PSH = 1 时,它从一定意义上来讲,就可以减少“时延”。其原理首...原创 2021-02-23 17:08:32 · 233 阅读 · 0 评论 -
传输层协议TCP—滑动窗口(8)
1Urgent(紧急数据) 紧急数据(Urgent Data),TCP 有时候也简称 Urgent。Urgent 在 TCP 里面的定义是什么,如下图5-97所示: Urgent 在 TCP 中的定义,对应上图5-97中的3个字段:(1)Urgent 标签,简称 URG,也就是上图5-97中的“U”,占位1个 bit。当 URG = 1 时,后面的两个字段才有意义。也就是说,URG = 1 时,这3个字段才能联合表达 TCP 的 Urgent 的含...原创 2021-02-24 17:11:21 · 737 阅读 · 1 评论 -
传输层协议TCP—滑动窗口(9)
1、Zero Window(0窗口) Zero Window(0窗口)指的是 TCP 发送方的滑动窗口大小为0,其本质上是因为 TCP 接收方的接收缓存已经满了,没有空间再接收数据。当处于Zero Window 时,TCP 发送方是不能向对方发送数据的——即使发送也会被对方给怼回来,如图5-107所示: 如上图所示,当A收到B发送过来的ACK报文(滑动窗口为0)后,正常来说,滑动窗口为0,A 不应该再发送数据给 B。假设 A 不遵守这个规则,给 B 发...原创 2021-02-25 11:47:37 · 3485 阅读 · 0 评论