HTTP面试题
001HTTP协议是什么?
HTTP是一个基于TCP/IP通信协议来传递数据,包括html文件、图像、结果等,即是一个客户端和服务器端请求和应答的标准。基本上用到的就是GET和POST,充其量再遇到个option请求。
002http和https有什么区别?
(1)https有ca证书,http一般没有;
(2)http是超文本传输协议,信息是明文传输。https则是具有安全性的ssl加密传输协;
(3)http默认80端口,https默认443端口。
003http协议有什么特点?
(1)http无连接:限制每次连接只处理一个请求,服务端完成客户端的请求后,即断开连接。(传输速度快,减少不必要的连接,但也意味着每一次访问都要建立一次连接,效率降低);
(2)http无状态:对于事务处理没有记忆能力。每一次请求都是独立的,不记录客户端任何行为;
(3)客户端/服务端模型:客户端支持web浏览器或其他任何客户端;
(4)简单快速\灵活:可以传输任何类型的数据。
004什么是http协议无状态协议?怎么解决http协议无状态协议?
无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息。
状态协议解决办法:1、cookie 2、通过session会话保存。
005说一下http协议中302状态?
http协议中,返回状态码302表示重定向。这种情况下,服务器返回的头部信息中会包含一个Location字段,内容是重定向到的url。
006http协议什么组成?
请求报文包含三部分:请求行:包含请求方法、URI、HTTP版本信息;请求首部字段;请求内容实体。
响应报文包含三部分:状态行:包含HTTP版本、状态码、状态码的原因短语;响应首部字段;响应内容实体。
007http协议中有那些请求方式?
GET:用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器。
POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。
HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
OPTIONS:查询相应URI支持的HTTP方法。
008TCP和UDP的区别?
TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来。
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去,UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。
009http的长连接和短连接区别?
HTTP协议有HTTP/1.0版本和HTTP/1.1版本。HTTP1.1默认保持长连接(HTTP persistent connection,也翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。
在 HTTP/1.0 中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。从HTTP/1.1起,默认使用的是长连接,用以保持连接特性。
010什么是 CSRF 攻击,如何避免?
CSRF(Cross-site request forgery)也被称为 one-click attack或者 session riding,中文全称是叫跨站请求伪造。一般来说,攻击者通过伪造用户的浏览器的请求,向访问一个用户自己曾经认证访问过的网站发送出去,使目标网站接收并误以为是用户的真实操作而去执行命令。常用于盗取账号、转账、发送虚假消息等。攻击者利用网站对请求的验证漏洞而实现这样的攻击行为,网站能够确认请求来源于用户的浏览器,却不能验证请求是否源于用户的真实意愿下的操作行为。
011什么是 XSS 攻击,如何避免?
XSS攻击又称CSS,全称Cross Site Script (跨站脚本攻击),其原理是攻击者向有XSS漏洞的网站中输入恶意的 HTML 代码,当用户浏览该网站时,这段 HTML 代码会自动执行,从而达到攻击的目的。XSS 攻击类似于 SQL 注入攻击,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插入恶意脚本,实现对用户游览器的控制,获取用户的一些信息。 XSS是 Web 程序中常见的漏洞,XSS 属于被动式且用于客户端的攻击方式。
XSS防范的总体思路是:对输入(和URL参数)进行过滤,对输出进行编码。
012说一说OSI网络模型。
网络的七层架构从下到上主要包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
①物理层:物理层主要定义物理设备标准,主要作用是传输比特流,具体做法是在发送端将1、0转化为电流强弱来进行传输,在到达目的地之后再将电流强弱转化为1、0,也就是我们常说的模数转换与数模转换,这一层的数据叫做比特。
②数据链路层:数据链路层主要用于对数据包中的MAC地址进行解析和封装。这一层的数据叫做帧,在这一层工作的设备是网卡、网桥、交换机。
③网络层:网络层主要用于对数据包中的IP地址进行封装和解析,这一层的数据叫做数据包。在这一层工作的设备有路由器、交换机、防火墙等。
④传输层:传输层定义了传输数据的协议和端口号,主要用于数据的分段、传输和重组。在这一层工作的协议有TCP和UDP等。TCP是传输控制协议,传输效率低,可靠性强,用于传输对可靠性要求高,数据量大的数据,比如支付宝转账业务;UDP是用户数据报协议,用于传输可靠性要求不高,数据量小的数据,例如抖音等视频服务。
⑤会话层:会话层在传输层的基础上建立连接和管理会话,具体包括登陆验证、断点续传、数据粘包与分包等。在设备之间需要互相识别的可以是IP,也可以是MAC或者主机名。
⑥表示层:表示层主要对接收的数据进行解释、加密、解密、压缩、解压缩等,即把计算机能够识别的内容转换成人能够识别的内容(图片、声音、文字等)。
⑦应用层:基于网络构建具体应用,例如FTP上传文件下载服务、Telnet服务、HTTP服务、DNS服务、SNMP邮件服务等。
013说一说TCP/IP的网络模型。
TCP/IP不是指TCP和IP这两个协议的合称,而是指因特网的整个TCP/IP协议簇。从协议分层模型方面来讲,TCP/IP由4个层次组成:网络接口层、网络层、传输层和应用层。
①网络接口层:定义了主机间网络连通的协议,具体包括Echernet、FDDI、ATM等通信协议。
②网络层:主要用于数据的传输、路由及地址的解析,以保障主机可以把数据发送给任何网络上的目标。数据经过网络传输,发送的顺序和到达的顺序可能发生变化。在网络层使用IP协议和ARP地址解析协议。
③传输层:使源端和目的端的机器上的对等实体可以基于会话相互通信。在这一层定义了两个端到端的协议TCP和UDP。TCP是面向连接的协议,提供可靠的报文传输和对上层应用的连接服务,除了基本的数据传输,它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。UDP是面向无连接的不可靠传输的协议,主要用于不需要TCP的排序和流量控制等功能的应用程序。
④应用层:负责具体应用层协议的定义,包括Telnet虚拟终端协议、FTP文件传输协议、SMTP简单电子邮件传输协议、DNS域名解析服务、NNTP网上新闻传输协议和HTTP超文本传输协议等。
014简述TCP的三次握手过程,为什么不是两次或四次?
①服务端创建传输控制块TCB,进入LISTEN状态,准备接收客户端的请求。客户端同样先创建TCB,然后当准备建立连接时向服务端发送连接请求报文(SYN=1,seq=x),然后进入SYN-SENT状态。
②服务端收到后向客户端发送确认报文(SYN=1,ACK=1,ack=x+1,seq=y),进入SYN-RCVD状态。
③客户端接收到确认后,再向服务端发送一个确认报文(ACK=1,ack=y+1,seq=x+1),然后进入ESTABLISHED状态,服务端接收后也进入ESTABLISHED状态。
④不是两次的原因是为了避免无效的连接请求突然发送到服务端,而此时客户端已关闭,服务端误以为客户端将要发送数据会白白浪费资源。
⑤不是四次的原因是将服务端的SYN和ACK报文拆分成两次发送和一次的效果是相同的,没有意义。
015简述TCP的四次握手过程,为什么不是三次?
①当客户端准备关闭连接时,向服务端发送连接终止报文(FIN=1,seq=u),进入FIN-WAIT-1状态。
②服务端接收后向客户端发送确认报文(ACK=1,ack=u+1,seq=v),进入CLOSE-WAIT状态,客户端收到后进入FIN-WAIT-2状态,此时TCP连接处于半关闭状态。
③当服务端也发送完全部数据准备断开连接时,向客户发送连接终止报文(FIN=1,ACK=1,ack=u+1,seq=w),进入LAST-ACK状态。
④客户端接收到该报文后,发送一个确认报文(ACK=w+1,ack=1,seq=u+1),进入TIME-WAIT状态,然后等待2MSL时间后关闭。服务端收到后关闭,时间将略早于客户端。
⑤不是三次的原因第一是为了保证客户端发送的最后一个报文可以到达服务端,如果该报文丢失那么服务端会超时重传之前的FIN+ACK报文,客户端可以在2MSL内收到,第二是防止已失效的报文发送到客户端,在2MSL后客户端在本连接时间内发出的所有报文都将从网络中消失。