1.HTTP进行TCP连接之后,在什么情况下会中断
2.HTTP、SOCKET和TCP的区别
3.DNS的全称了解么?
4.DNS 域名解析的工作流程?
5.DNS的端口是多少?
6.DNS的底层使用TCP还是UDP?
7.HTTP到底是不是无状态的?
8.携带Cookie的HTTP请求是有状态还是无状态的?Cookie是HTTP协议簇的一部分,那为什么还说HTTP是无状态的?
9.cookie和session有什么区别?
10.token,session,cookie的区别?
1.HTTP进行TCP连接之后,在什么情况下会中断?
- 主动close,按照正确的顺序进行四次挥手。 当服务端或者客户端执行 close 系统调用的时候,会发送FIN报文,就会进行四次挥手的过程。
- 发送得不到响应,且超过重试最大次数。 当发送方发送了数据之后,接收方超过一段时间没有响应ACK报文,发送方重传数据达到最大次数的时候,就会断开TCP连接。
- 双方长时间不互动。 当HTTP长时间没有进行请求和响应的时候,超过一定的时间,就会释放连接。
2.HTTP、SOCKET和TCP的区别?
HTTP是应用层的协议,承载URL,和一些传输数据的,用于传输超文本数据的,定义了客户端和服务器之间交换的数据格式和规则。
TCP是传输层的协议,承载了端口号,和应用层传下来的数据,包装成TCP报文,基于字节流进行通信两端建立面向连接的,可靠的数据传输。
Socket是传输层和应用层之间的抽象接口,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。 实际上,Socket跟TCP/IP协议没有必然的联系。Socket不像HTTP基于请求响应,通信双方在建立连接之后都可以主动发送消息。
HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。 (这个比喻没看懂)
3.DNS的全称了解么?
domain name system,域名系统。它是互联网中用于将域名转换为对应IP地址的分布式数据库系统。符合人类记忆的域名转换为复杂无序的IP地址,这些转换关系被存储在DNS服务器中,其中根服务器和顶级服务器用于指路,权威服务器才进行域名解析。
在域名中,越靠右的位置表示其层级越高。实际上域名最后还有一个点,比如 www.server.com.,这个最后的一个点代表根域名。
互联网名称和数字地址分配机构 (ICANN) 为根区域中 13 个 IP 地址之一操作服务器,并将其他 12 个 IP 地址的操作委托给包括 NASA、马里兰大学和 Verisign(唯一运营两个根 IP 地址的组织)在内的多个组织。Cloudflare 帮助向名为 F-Root 的根服务器提供 DNS Anycast 服务;Cloudflare 根据与 ISC(F-Root 运营商)的合同提供其他 F-Root 实例。
4.DNS 域名解析的工作流程?
本地 DNS 服务器(也就是客户端的 TCP/IP 设置中填写的 DNS 服务器地址)。
5.DNS的端口是多少?
默认端口号是53。
6.DNS的底层使用TCP还是UDP?
DNS使用UDP协议进行域名解析和数据传输。因为基于UDP实现DNS能够提供低延迟、简单快速、轻量级的特性,更适合DNS这种需要快速响应的域名解析服务。
UDP基于无连接且没有流量控制,因此比TCP更加低延时和快速。
UDP报文的头部小,相比于TCP更加轻量级。
对于UDP带来的不可靠通信,DNS设置缓存机制来缓解。
7.HTTP到底是不是无状态的?
是无状态的。所以并不清楚该HTTP请求的前后请求信息。
但是可以通过Cookie,Session等机制来保持用户状态。
8.携带Cookie的HTTP请求是有状态还是无状态的?Cookie是HTTP协议簇的一部分,那为什么还说HTTP是无状态的?
携带Cookie的HTTP请求实际上是可以在一定程度上实现状态保持的,因为Cookie是用来在客户端存储会话信息和状态信息的一种机制。(Cookie是保存在客户端的,每次请求都附带上Cookie,然后服务器读取就可以识别用户的信息和状态。)
说HTTP请求是无状态的原因是,在设计时HTTP请求就是各个独立的,无状态的。所以,尽管Cookie是HTTP协议簇中的一部分,但还是说HTTP请求是无状态的。
9.cookie和session有什么区别?
存储的位置不一样。Cookie是存在客户端上,session是存储在服务器上。服务器为每个用户分配一个唯一的Session ID,这个ID通常通过Cookie或URL重写的方式发送给客户端,客户端后续的请求会带上这个Session ID,服务器根据ID查找对应的Session数据。
生命周期:Cookie可以设置过期时间,过期后自动删除。也可以设置为会话Cookie,即浏览器关闭时自动删除。Session在默认情况下,当用户关闭浏览器时,Session结束。但服务器也可以设置Session的超时时间,超过这个时间未活动,Session也会失效。
存储容量不同。Cookie要整体在网络请求中传输,因此通常限制在4KB。而Session整个存在服务器上,只传输sessionID,所以可以说没有容量限制。
性能:Cookie随每个请求发送到服务器,可能会影响网络传输效率。Session每次请求都需要查询服务器上的Session数据,这可能会增加服务器的负载。
安全性:Cookie容易收到XSS(跨站脚本攻击)。Seesion可能被Seesion劫持和会话固定攻击。
10.token,session,cookie的区别?
token也是一种身份认证机制,分别存储在服务器和客户端中。用户首次登录,服务器计算token,并保存在服务器内,同时返回token给客户端。客户端之后的每次请求都要携带token,用于服务器的身份验证。
cookie存在请求头里。