Android开发必须懂的网络知识

1.五层协议的体系结构,每层有哪些协议?

思路:分别解释+拓展补充

物理层/数据链路层/网络层/传输层/应用层+具体协议

 

2.Http和Https的区别

思路:分别解释+拓展补充

Http:超文本传输协议

Https:在http的基础上采用ssl或者tsl加密数据包。即在http下加入ssl层。(HTTPS = HTTP + SSL )

1、https有ca证书,http一般没有

2、http是超文本传输协议,信息是明文传输。https则是具有安全性的ssl加密传输协议

3、http默认80端口,https默认443端口。

 

3.Http1.0和1.1,2.0的区别

思路:Http的发展历史+不同协议新增特性+拓展补充长/短接连适用情景

1.0与1.1区别:

1.0默认短连接,1.1开始默认长连接。1.1新增部分状态码+请求头来拓展1.0的功能:如身份认证,缓存处理,断点续传,状态管理等。

2.0比1.X的改进:

1.X都是基于文本解析,采用新的二进制解析格式,不同与文本的多种表现形式,二进制只有0和1,因此健壮性更好。

多路复用:即连接共享:每个request对应一个id,一个连接上可以有多个id,服务端根据id判断是哪个request。

服务端推送:能实现服务端主动向客户端推送。

三种区别具体参考:

https://juejin.im/entry/6844903489596833800

https://mp.weixin.qq.com/s/GICbiyJpINrHZ41u_4zT-A?

 

4.长/短连接有什么区别

思路:分别解释+适用场景

Http1.0中默认使用短连接,即客户端与服务器每进行一次请求就建立一次连接,操作结束就断开连接。

Http1.1中在会在请求头中加上:Connection:keep-alive这一句,以保持连接。使用长连接请求后,客户端与服务端的TCP链接不会断开,当客户端再次请求服务端的时候,会继续用这一连接。但是这一连接也不会永远不关闭,可以在服务端软件设置保持时间。

Http的长/短连接本质上是TCP的长/短连接。实现长连接需要客户端+服务端都支持长连接

长短连接优缺点与适用情景参考:

https://www.jianshu.com/p/caeec6bd1d3f

 

5.如何理解HTTP是无状态的

思路:分别解释+适用场景

是指协议本身对事务处理是没有记忆能力的。相当于餐厅老板不会认得每次去吃饭的你。
如果一个连接上传输多个Http请求,即使一个请求失败了也不会影响其他请求的处理。

无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。

 

6.点击一个URL发生什么

思路:一次网络请求的全流程

1.浏览器从URL中解析主机名与端口号,通过DNS将主机名转换成服务器的IP地址。

2.根据IP地址和服务器建立TCP连接。

3.浏览器发出读取文件的HTTP请求,该请求作为TCP三次握手的第三次的数据报文传输给服务器

4.服务器对请求作出响应,并把相应的html文本返回给客户端。

5.释放TCP连接:

如果当前connect模式为close,服务器端主动关闭TCP连接,客户端被动关闭。

如果当前connect模式为keep-alive模式,则保持TCP连接一段时间,在这段时间内继续可以接受请求。

6.客户端将收到的html文本进行解析并且展示。

 

7.Http请求报文包含什么东西

思路:Http的报文结构

请求头部/请求行/空行/请求数据(响应报文同)

 

8.TCP和UDP

思路:传输层协议对比。

  1. 基于连接与无连接;
  2. 对系统资源的要求(TCP较多,UDP少);
  3. UDP程序结构较简单;
  4. 流模式与数据报模式 ;
  5. TCP保证数据正确性,UDP可能丢包;
  6. TCP保证数据顺序,UDP不保证。
  7. TCP全双工通道(流量控制,拥塞控制,滑动窗口,丢弃重复数据,超时重发等机制)
  8. TCP点到点,用于传输可靠性高的数据。UDP支持一对一,多对多,一对多,多对一,适合传输可靠性要求不高的数据。

 

9.流量控制和拥塞控制

思路:设计目的+区别+应用场景

流量控制:

背景:发送者发送速度过快,接收方来不及接收会导致分组丢失。

目的:防止分组丢失

如何实现:通过滑动窗口协议实现。简要说明:接收方返回的ACK会包含自己接收窗口的大小,从而实现控制发送方的发送数据大小。

问题:发送方接收到一个窗口为0的应答便会停止发送,等待下一个应答。而下一个不为0的应答在传输过程中丢失了,发送方会一直等待应答,接收方以为发送方已经接受应答,但是一直没新发送。两两等待,凉凉,引发死锁。

问题解决:TCP采用了持续计时器。发送方收到应答为0的窗口时便启动计时器,时间到了就重新向接收方发送报文询问:我还有机会吗?如果返回的还是为0的窗口,则继续等待并重置启动计时器。若不为0的窗口则表示之前的数据丢失,重新发送。

拥塞控制:

背景:拥塞控制是作用于网络的

 

10.为什么要三次握手+四次挥手

思路:解释三次握手的过程+特点/四次挥手的过程+特点

具体过程不过多叙述,需自行理解。

三次握手特点:

  • 没有应用层的数据
  • SYN这个标志位只有在TCP建产连接时才会被置1
  • 握手完成后SYN标志位被置0

四次挥手特点:

  • 当A端完成数据发送任务后,可以发送一个FIN来终止该方向上的连接。
  • 当另B端收到FIN之后,必须通知应用层A端已经终止了那个方向的数据传输,并且它需要发回一个ACK进行确认,确认序号为收到的序号+1。与SYN一样,FIN也同样会包含一个序号,同时TCP的B端还会向应用层传送一个文件结束符。
  • 这时B端会发送一个FIN来请求关闭另一边通路
  • 客户端收到后必须返回一个确认,并将确认序号设置为收到序号+1

 

为什么要四次挥手:TCP是全双工的,数据能在两个方向上同时传递,因此关闭时需要先将一端关闭,再关闭另一端。

 

11.Cookie和Session的区别

思路:分别解释+区别

简单说:Cookie数据保存在客户端,Session数据保存在服务器

Session是存放在服务端,用于采存放用户数据的。当客户端第一次发送请求时,服务器自动生成一个Session和Session ID用来唯一标示这个Session,并将其通过响应发送到客户端。在客户端再次发送请求时,会把服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的Session ID进行比较,找到该用户对应的Session。 

Cookie属于Session对象的一种。其大小存在限制且客户端存储Cookie的个数也有限,而Session是保存在服务器端,理论上是没有大小限制的,只要你的内存够大。

因为Cookie保存在本地,其信息的完全可见性和本地可编辑性使得我们一般认为Cookie是不可靠的,而位于服务器的Session是可靠的。具体应用还是要根据具体情境判断采取哪种策略。

https://blog.csdn.net/duan1078774504/article/details/51912868

 

12.了解哪些状态码

思路:分类记忆+具体解释

状态码含义
1XX请求正被处理
2XX请求成功处理
3XX请求需要附加操作,常见的例子如重定向
4XX客户端出错导致请求无法被处理
5XX服务端处理出错

 

13.GET和POST 的区别

思路:解释

本质上是一样的TCP链接

深层区别在于GET产生一个TCP包,POST产生两个TCP包。因为:

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

 

14.HTTPS加密原理

思路:解释

 

15.了解哪些算法

思路:解释

 

16.证书怎么校验的

思路:解释

 

17.DNS解析是怎样的

思路:解释

 

18.HTTP优化方案

思路:解释

  • TCP复用:TCP连接复用是将多个客户端的HTTP请求复用到一个服务器端TCP连接上,而HTTP复用则是一个客户端的多个HTTP请求通过一个TCP连接进行处理。前者是负载均衡设备的独特功能;而后者是HTTP 1.1协议所支持的新功能,目前被大多数浏览器所支持。
  • 内容缓存:将经常用到的内容进行缓存起来,那么客户端就可以直接在内存中获取相应的数据了。
  • 压缩:将文本数据进行压缩,减少带宽
  • SSL加速(SSL Acceleration):使用SSL协议对HTTP协议进行加密,在通道内加密并加速
  • TCP缓冲:通过采用TCP缓冲技术,可以提高服务器端响应时间和处理效率,减少由于通信链路问题给服务器造成的连接负担。

 

 

未完待续...

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值