流量控制是TCP 提供的可以让「发送方」根据「接收方」的实际接收能力控制发送数据量的⼀种机制。因为如果一直无脑的发数据给对方,但对方处理不过来,那么就会导致触发重发机制,从而导致网络流量的无端的浪费
拥塞控制和流量控制不同,拥塞控制是一个全局性的过程,而流量控制指点对点通信量的控制。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫拥塞。而拥塞控制就是为了防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不致于过载。
👨💻面试官追问:流量控制具体怎么控制的?
- TCP利用滑动窗口机制实现流量控制。
- 在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,即接收窗口rwnd,发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值。
👨💻面试官又问:拥塞控制具体的算法怎么样的?
TCP 的拥塞控制采用了四种算法,即慢开始 、 拥塞避免 、快重传、快恢复:
- 慢开始 : 慢开始算法的思路是当主机开始发送数据时由小到大逐渐增大发送窗口,也就是由小到大逐渐增大拥塞窗口数值。cwnd 初始值为 1,每经过一个传播轮次,cwnd 加倍。因为如果立即把大量数据字节注入到网络,那么可能会引起网络阻塞。
- 拥塞避免 : 拥塞避免算法的思路是让拥塞窗口 cwnd 缓慢增大,即每经过一个往返时间 RTT 就把发送放的 cwnd 加 1。
- 快重传与快恢复: 在 TCP/IP 中,快速传和块恢复(fast retransmit and recovery,FRR)是一种拥塞控制算法,它能**快速恢复丢失的数据包。**没有 FRR,如果数据包丢失了,TCP 将会使用定时器来要求传输暂停。在暂停的这段时间内,没有新的或复制的数据包被发送。
有了 FRR,如果接收机接收到一个不按顺序的数据段,它会立即给发送机发送一个重复确认。如果发送机接收到三个重复确认,它会假定确认件指出的数据段丢失了,并立即重传这些丢失的数据段。有了 FRR,就不会因为重传时要求的暂停被耽误。当有单独的数据包丢失时,快速重传和恢复(FRR)能最有效地工作。当有多个数据信息包在某一段很短的时间内丢失时,它则不能很有效地工作。
UDP
-
在传送数据之前不需要先建立连接,远地主机在收到 UDP 报文后,不需要给出任何确认。
-
虽然 UDP 不提供可靠交付,但在某些情况下 UDP 却是一种最有效的工作方式(一般用于即时通信),比如: QQ 语音、 QQ 视频 、直播等等。
TCP
-
提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。
-
TCP 不提供广播或多播服务。
-
由于 TCP 要提供可靠的,面向连接的传输服务,这难以避免增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。
-
TCP 一般用于文件传输、发送和接收邮件、远程登录等场景。
👨💻面试官追问:既然你说TCP提供的可靠的服务,那么TCP 协议如何保证可靠传输?
主要有校验和、序列号、超时重传、流量控制及拥塞避免等几种方法:
- 应用数据被分割成 TCP 认为最适合发送的数据块。TCP 给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。
- 校验和:TCP 将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。
- TCP 的接收端会丢弃重复的数据。
- 流量控制: TCP 连接的每一方都有固定大小的缓冲空间,TCP 的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 利用滑动窗口实现流量控制。
- 拥塞控制: 当网络拥塞时,减少数据的发送。
- ARQ 协议: 也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。
- 超时重传: 当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
可以从以下四个方面区别:
-
作用:
GET
方法的含义是请求从服务器获取资源。而POST
方法则是相反操作,它向URI指定的资源提交数据,数据就放在报文的 body里。 -
参数位置:
GET
的参数放在URL中,POST
的参数存储在实体主体中,并且GET
方法提交的请求的URL中的数据最多是2048字节,POST请求没有大小限制 -
安全性:在 HTTP 协议里,所谓的「安全」是指请求方法不会「破坏」服务器上的资源。
GET
方法是安全的,因为它是「只读」操作,无论操作多少次,服务器上的数据都是安全的。POST
因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的 -
幂等性:所谓的「幂等」,意思是多次执行相同的操作,结果都是「相同」的。结合刚才说的,
GET
方法是具有幂等性的。而POST
方法不具有幂等性
总体来说分为以下几个过程:
-
DNS 解析:浏览器查询 DNS,获取域名对应的 IP 地址
-
TCP 连接:浏览器获得域名对应的 IP 地址以后,浏览器向服务器请求建立链接,发起三次握手
-
发送 HTTP 请求:TCP 连接建立起来后,浏览器向服务器发送 HTTP 请求
-
服务器处理请求并返回 HTTP 报文:服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处 理,并将处理结果及相应的视图返回给浏览器
-
浏览器解析渲染页面
-
连接结束
👨💻面试官追问:整个过程会使用哪些协议?
- 首先浏览器查找域名的IP地址的过程会使用DNS协议
- 与服务器建立TCP连接使用到了TCP协议
- 建立TCP协议时,需要发送数据,发送数据在网络层使用IP协议
- IP数据包在路由器之间,路由选择使用OPSF协议
- 路由器在与服务器通信时,需要将ip地址转换为MAC地址,需要使用ARP协议
- 在TCP建立完成后,使用HTTP协议访问网页
6.HTTP 1.0 和 HTTP 1.1 的主要区别是什么?
-
长连接 : 在 HTTP/1.0 中,默认使用的是短连接,也就是说每次请求都要重新建立一次连接。HTTP 1.1 起,默认使用长连接 ,默认开启
Connection: keep-alive
。 -
错误状态响应码:在 HTTP1.1 中新增了 24 个错误状态响应码。
-
缓存处理:在 HTTP1.0 中主要使用 header 里的 If-Modified-Since,Expires 来做为缓存判断的标准,HTTP1.1 则引入了更多的缓存控制策略例如
Entity tag
,If-Unmodified-Since,
If-Match
,If-None-Match
等更多可供选择的缓存头来控制缓存策略。 -
带宽优化及网络连接的使用:在HTTP 1.0中会存在浪费带宽的现象,主要是因为不支持断点续传功能,客户端只是需要某个对象的一部分,服务端却将整个对象都传了过来。在HTTP1.1中请求头引入了
range
头域,它支持只请求资源的某个部分,返回的状态码为206
。
在 HTTP/1.0 中默认使用短连接。也就是说,客户端和服务器每进行一次 HTTP 操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个 HTML 或其他类型的 Web 页中包含有其他的 Web 资源(如 JavaScript 文件、图像文件、CSS 文件等),每遇到这样一个 Web 资源,浏览器就会重新建立一个 HTTP 会话。
而从 HTTP/1.1 起,默认使用长连接,用以保持连接特性。使用长连接的 HTTP 协议,会在响应头加入这行代码:
Connection:keep-aliveCopy to clipboardErrorCopied
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输 HTTP 数据的 TCP 连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V:vip1024b 备注Java获取(资料价值较高,非无偿)
笔者福利
以下是小编自己针对马上即将到来的金九银十准备的一套“面试宝典”,不管是技术还是HR的问题都有针对性的回答。
有了这个,面试踩雷?不存在的!
回馈粉丝,诚意满满!!!
”,不管是技术还是HR的问题都有针对性的回答。
有了这个,面试踩雷?不存在的!
回馈粉丝,诚意满满!!!
[外链图片转存中…(img-oKacQsWg-1711599690299)]
[外链图片转存中…(img-wHMmY2ae-1711599690299)]
[外链图片转存中…(img-nV77S93l-1711599690300)]
[外链图片转存中…(img-seYDEe88-1711599690300)]