面试官:HTTP有哪几种响应状态码,列举几个你熟悉的
-
朋友:大概有以下几种
-
200:表示成功正常请求
-
400:语义有误,一般是请求格式不对
-
401:需求用户验证权限,一般是证书token没通过认证
-
403:拒绝提供服务
-
404:资源不存在
-
500:服务器错误
-
503:服务器临时维护,过载;可恢复
面试官:不错,再考考你,session和cookie有什么区别
-
朋友:1)存储位置不同,cookie是保存在客户端的数据;session的数据存放在服务器上
-
朋友:2)存储容量不同,单个cookie保存的数据小,一个站点最多保存20个Cookie;对于session来说并没有上限
-
朋友:3)存储方式不同,cookie中只能保管ASCII字符串;session中能够存储任何类型的数据
-
朋友:4)隐私策略不同,cookie对客户端是可见的;session存储在服务器上,对客户端是透明对
-
朋友:5)有效期上不同,cookie可以长期有效存在;session依赖于名为JSESSIONID的cookie,过期时间默认为-1,只需关闭窗口该session就会失效
-
朋友:6)跨域支持上不同,cookie支持跨域名访问;session不支持跨域名访问
面试官:知道滑动窗口不,客户端和服务端控制滑动窗口的过程是怎样的
-
朋友:接收端将自己可以接收的缓冲区大小放入TCP首部中的“窗口大小”字段,通过ACK报文来通知发送端,滑动窗口是接收端用来控制发送端发送数据的大小,从而达到流量控制
-
朋友:其实发送方的窗口上限,是取值拥塞窗口和滑动窗口两者的最小值
面试官:那你知道滑动窗口和拥塞窗口有什么区别不
-
朋友:相同点都是控制丢包现象,实现机制都是让发送方发得慢一点
-
朋友:不同点在于控制的对象不同
-
朋友:1)流量控制的对象是接收方,怕发送方发的太快,使得接收方来不及处理
-
朋友:2)拥塞控制的对象是网络,怕发送方发的太快,造成网络拥塞,使得网络来不及处理
面试官:TCP的粘包和拆包问题,你怎么看
-
朋友:程序需要发送的数据大小和TCP报文段能发送MSS(Maximum Segment Size,最大报文长度)是不一样的
-
朋友:大于MSS时,而需要把程序数据拆分为多个TCP报文段,称之为拆包;小于时,则会考虑合并多个程序数据为一个TCP报文段,则是粘包;其中MSS = TCP报文段长度-TCP首部长度
-
朋友:在IP协议层或者链路层、物理层,都存在拆包、粘包现象
面试官:那解决粘包和拆包的方法都有哪些?
-
朋友:1)在数据尾部增加特殊字符进行分割
-
朋友:2)将数据定为固定大小
-
朋友:3)将数据分为两部分,一部分是头部,一部分是内容体;其中头部结构大小固定,且有一个字段声明内容体的大小
面试官:SYN Flood了解吗
-
朋友:SYN Flood 伪造 SYN 报文向服务器发起连接,服务器在收到报文后用 SYN_ACK 应答,此应答发出去后,不会收到 ACK 报文,造成一个半连接
-
朋友:若攻击者发送大量这样的报文,会在被攻击主机上出现大量的半连接,耗尽其资源,使正常的用户无法访问,直到半连接超时
面试官:对TCP的掌握挺不错的,下面问下HTTP的知识。你知道一次HTTP请求,程序一般经历了哪几个步骤?
-
朋友:1)解析域名 -> 2)发起TCP三次握手,建立连接 -> 3)基于TCP发起HTTP请求 -> 4)服务器响应HTTP请求,并返回数据 -> 5)客户端解析返回数据
(编辑:衡水站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|