面试宝典到手,搞定面试,不再是难题,系列文章传送地址,请点击本链接。
目录
17.发送方一直发送数据,但是接收方处理不过来怎么办?(流量控制)
26、什么是AUTH2.0协议?有哪几种认证方式?什么是JWT令牌?和普通令牌有什么区别?
1.常说的四层、五层、七层网络模型有什么区别?
TCP/IP模型原为四层,而TCP/IP五层模型实际上是TCP/IP与OSI七层模型的混合后的产物。说到底,这些模型的出现目的是为了使大家都使用统一的协议(通信规则)来通信。可以看到,五层模型和七层模型在物理层、数据链路层、网络层、传输层都用的是相同的协议,他们是统一的。不同点只在于应用层部分。应用程序复杂多变,比如电子邮件用的是SMTP协议、WEB服务器用HTTP协议。应用程序可以根据自己的需求特点,来使用各种不同的协议。而五层模型和七层模型在应用层的理念各有优劣,也因此在不同的协议中得到实现。
TCP/IP协议是互联网协议(簇)的统称,他是互联网标准通信的基础,它提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。而OSI模型是开放式系统互联通信参考模型——笔者的理解是:
OSI是一个完整的、完善的宏观模型,他包括了硬件层(物理层),当然也包含了很多上面途中没有列出的协议(比如DNS解析协议等);而TCP/IP(参考)模型,更加侧重的是互联网通信核心(也是就是围绕TCP/IP协议展开的一系列通信协议)的分层,因此它不包括物理层,以及其他一些不想干的协议;其次,之所以说他是参考模型,是因为他本身也是OSI模型中的一部分,因此参考OSI模型对其分层。
2.TCP/IP 网络模型中的五层模型,每层分别有什么用?
TCP/IP网络模型总共有五层
- 1.应用层:我们能接触到的就是应用层了,手机,电脑这些这些设备都属于应用层。
- 2.传输层:就是为应用层提供网络支持的,当设备作为接收⽅时,传输层则要负责把数据包传给应⽤,但是⼀台设备上可能会有很多应⽤在接收或者传输数据,因此需要⽤⼀个编号将应⽤区分开来,这个编号就是端⼝。所以 TCP 和 UDP 协议就是在这一层的
- 3.网络层:是负责传输数据的,最常使用的 ip 协议就在该层,⽹络层负责将数据从⼀个设备传输到另⼀个设备,世界上有很多设备,⽹络层需要有区分设备的编号。我们⼀般⽤ IP 地址给设备进⾏编号
- 4.数据链路层:每⼀台设备的⽹卡都会有⼀个 MAC 地址,它就是⽤来唯⼀标识设备的。路由器计算出了下⼀个⽬的地 IP 地址,再通过 ARP 协议找到该⽬的地的 MAC 地址,这样就知道这个 IP 地址是哪个设备的了。路由器就是通过数据链路层来知道这个 ip 地址是属于哪个设备的,它主要为⽹络层提供链路级别传输的服务。
- 5.物理层:当数据准备要从设备发送到⽹络的时候,需要把数据包转换成电信号,让其可以在物理介质中传输,它主要是为数据链路层提供⼆进制传输的服务。
3.介绍一下 HTTP 协议
HTTP 协议是基于 TCP 协议实现的,它是一个超文本传输协议,其实就是一个简单的请求-响应协议,它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。它主要是负责点对点之间通信的。超文本就是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。比如说html,内部定义了很多图片视频的链接,放在浏览器上就呈现出了画面。
4.GET 和 POST有什么区别?
GET 和 POST 本质上就是 TCP 链接,并无差别。
但是由于 HTTP 的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
区别 |
GET |
POST |
数据传输方式 |
从服务器获取数据 |
向服务器提交数据 |
对数据长度的限制 |
当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符) |
无限制 |
对数据类型的限制 |
只允许 ASCII 字符 |
无限制 |
安全性 |
较差,所发送的数据是 URL 的一部分,会显示在网页上 |
较好 参数不会被保存在浏览器历史或 WEB 服务器日志中 |
可见性 |
显示在 URL 上 |
不显示 |
收藏为书签 |
可以 |
不可以 |
历史记录 |
可以被保留在历史记录当中 |
不可以被保留 |
缓存 |
能被缓存 |
不可以被缓存 |
5.PING 的作用?
PING 主要的作用就是测试在两台主机之间能否建立连接,如果 PING 不通就无法建立连接。
它其实就是向目的主机发送多个 ICMP 回送请求报文
- 如果没有响应则无法建立连接
- 如果有响应就可以根据目的主机返回的回送报文的时间和成功响应的次数估算出数据包往返时间及丢包率
6.常见的 HTTP 状态码有哪些
1xx 信息,服务器收到请求,需要请求者继续执行操作
2xx 成功,操作被成功接收并处理
3xx 重定向,需要进一步的操作以完成请求
4xx 客户端错误,请求包含语法错误或无法完成请求
5xx 服务器错误,服务器在处理请求的过程中发生了错误
7.HTTP1.1 和 HTTP1.0 的区别有哪些?
- 1.长链接
- 早期 HTTP1.0 的每一次请求都伴随着一次三次握手的过程,并且是串行的请求,增加了不必要的性能开销
- HTTP1.1 新增了长链接的通讯方式,减少了性能损耗
- 2.管道
- HTTP1.0 只有串行发送,没有管道
- HTTP1.1 增加了管道的概念,使得在同一个 TCP 链接当中可以同时发出多个请求
- 3.断点续传
- HTTP1.0 不支持断点续传
- HTTP1.1 新增了 range 字段,用来指定数据字节位置,开启了断点续传的时代
- 4.Host头处理
- HTTP1.0 任务主机只有一个节点,所以并没有传 HOST
- HTTP1.1 时代,虚拟机技术越来越发达,一台机器上也有可能有很多节点,故增加了 HOST 信息
- 5.缓存处理
- 在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准
- HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
- 6.错误状态响应码