迅雷面经汇总 (4)

第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

三次握手中accept函数处于第几次

三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接。

http 的工作原理

HTTP协议 :Hyper Text Transfer Protocol(超文本传输协议),是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

TCP与UDP的区别

TCP:面向连接,提供可靠的服务,有流量控制,拥塞控制,无重复、无丢失、无差错,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),只能是点对点,首部 20 字节,全双工。

UDP:无连接,尽最大努力交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对多,首部 8 字节。

TCP拥塞机制 TCP滑动窗口 GET,POST和PUT的区别 http1.0、http1.1、http2

HTTP/1.0:

请求与响应支持头域

响应对象以一个响应状态行开始

响应对象不只限于超文本

开始支持客户端通过POST方法向Web服务器提交数据,支持GET、HEAD、POST方法

支持长连接(但默认还是使用短连接),缓存机制,以及身份认证

HTTP/1.1:

默认为长连接

提供了范围请求功能(宽带优化)

提供了虚拟主机的功能(HOST域)

多了一些缓存处理字段

错误通知的管理

HTTP/2.0:

二进制分帧

多路复用

头部压缩

请求优先级

服务端推送

http1.1中的keep-alive是怎么理解的?

HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成 之后立即断开连接(HTTP协议为无连接的协议);当使用Keep-Alive模式(又称持久连接、连接重用)时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。

输入了一个URL之后发生了什么

域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户

六、设计模式 手写单例 public class Singleton { private volatile static Singleton instance = null; private Singleton() { } /** * 当第一次调用getInstance()方法时,instance为空,同步操作,保证多线程实例唯一 * 当第一次后调用getInstance()方法时,instance不为空,不进入同步代码块,减少了不必要的同步 */ public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } } 七、其他 nginx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzzfx.html