超时重传:当超时时间到达时,发送方还未收到对端的ACK确认,就重传该数据包

快速重传:当后面的序号先到达,如接收方接收到了1、 3、 4,而2没有收到,就会立即向发送方重复发送三次ACK=2的确认请求重传。如果发送方连续收到3个相同序号的ACK,就重传该数据包。而不用等待超时

7、TCP选项有哪些

TCP首部选项字段多达40B,一些常用的字段有:

1)选项结束字段(EOP,0x00),占1B,一个报文段仅用一次。放在末尾用于填充,用途是说明:首部已经没有更多的消息,应用数据在下一个32位字开始处

2)无操作字段(NOP, 0x01),占1B,也用于填充,放在选项的开头

3)MSS(最大报文段长度),格式如下:种类(1B,值为2),长度(1B,值为4),数值(2B)

用于在连接开始时确定MSS的大小,如果没有确定,就用默认的(一般实现是536B)

4)窗口扩大因子,格式如下:种类(1B,值为3),长度(1B,值为3),数值(1B)

新窗口值 = 首部窗口值 * 2的(扩大因子)次方

当通信双方认为首部的窗口值还不够大的时候,在连接开始时用这个来定义更大的窗口。仅在连接开始时有效。一经定义,通信过程中无法更改。

5)时间戳(应用测试RTT和防止序号绕回)

6)允许SACK和SACK选项

10、三次握手过程中有哪些不安全性

1)伪装的IP向服务器发送一个SYN请求建立连接,然后服务器向该IP回复SYN和ACK,但是找不到该IP对应的主机,当超时时服务器收不到ACK会重复发送。当大量的攻击者请求建立连接时,服务器就会存在大量未完成三次握手的连接,服务器主机backlog被耗尽而不能响应其它连接。即SYN泛洪攻击

防范措施:

1、降低SYN timeout时间,使得主机尽快释放半连接的占用

2、采用SYN cookie设置,如果短时间内连续收到某个IP的重复SYN请求,则认为受到了该IP的攻击,丢弃来自该IP的后续请求报文

3、在网关处设置过滤,拒绝将一个源IP地址不属于其来源子网的包进行更远的路由

11、TCP和UDP的区别

TCP是有连接的,两台主机在进行数据交互之前必须先通过三次握手建立连接;而UDP是无连接的,没有建立连接这个过程

TCP是可靠的传输,TCP协议通过确认和重传机制来保证数据传输的可靠性;而UDP是不可靠的传输

TCP还提供了拥塞控制、滑动窗口等机制来保证传输的质量,而UDP都没有

TCP是基于字节流的,将数据看做无结构的字节流进行传输,当应用程序交给TCP的数据长度太长,超过MSS时,TCP就会对数据进行分段,因此TCP的数据是无边界的;而UDP是面向报文的,无论应用程序交给UDP层多长的报文,UDP都不会对数据报进行任何拆分等处理,因此UDP保留了应用层数据的边界

12、有哪些应用层协议是基于TCP的,哪些是基于UDP的

TCP: FTP、HTTP、Telnet、SMTP、POP3、HTTPS

UDP:DNS、SNMP、NFS

TCP可靠传输的实现:

1.以字节为单位的滑动窗口

发送窗口的位置有窗口前沿和后沿的位置共同决定。发送窗口后沿的变化情况有两种,即不动(没有收到新的确认)和前移(收到了新的确认)。

描述一个发送窗口的状态需要三个指针:P1,P2,P3。

小于P1的是已发送并已收到确认的部分,而大于P3的是不允许发送的部分。

P3-P1=A的发送窗口

P2-P1=已发送但尚未收到确认的字节数

P3-P2=允许发送但当前尚未发送的字节数(称为可用窗口)

假如发送方发送31,32,33,接受方收到序号为32,33的数据,序号31的数据没有收到(也许丢失了,也许滞留在网络中的某处)。请注意,B只能对按序到达的数据中的最高序号给出确认,因此B发送的确认报文段的确认号仍然是31,而不能是32或者33。

对于32,33这种未按序到达的数据会暂存在接收窗口中。

还有一种可能性,就是发送窗口内所有的数据都已正确到达B,B也早已做出确认,但是不幸的是,所有的这些确认都滞留在网络中。为了保证可靠传输,A只能认为B还没有收到这些数据。于是,A在经过一段时间后(由超时计时器控制)就重传这部分数据,重新设置超时计时器,直到收到B的确认为止。如果A收到确认号落在发送窗口中,那么A就可以使发送窗口继续向前滑动、

强调一下三点:

1.虽然A的发送窗口是根据B的接收窗口设置的,但在同一时刻,A的发送窗口并不总是和B的接收窗口一样大。发送方A还可能根据网络当时的拥塞情况适当减小自己的发送窗口的数值。

2.对于不按序到达的数据如何处理。TCP对于不按序到达的数据是先存放在接受窗口中,等待字节流中所缺少的字节收到后,再按序交付上层的应用进程。

3.TCP要求接收方必须有累积确认的功能。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)

总结

至此,文章终于到了尾声。总结一下,我们谈论了简历制作过程中需要注意的以下三个部分,并分别给出了一些建议:

技术能力:先写岗位所需能力,再写加分能力,不要写无关能力;项目经历:只写明星项目,描述遵循 STAR 法则;简历印象:简历遵循三大原则:清晰,简短,必要,要有的放矢,不要海投;

以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频

ava面试题+热门技术系列教程视频

[外链图片转存中…(img-pJEhck1x-1711964224337)]

[外链图片转存中…(img-KL0KkFaC-1711964224337)]

[外链图片转存中…(img-MjQ69BYb-1711964224338)]

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: