网络知识点小记

1、TCP和UDP 有什么区别?  TCP为什么是三次握手,而不是两次?

tcp 就像打电话,面向连接的,点对点进行通讯的,高可靠的,效率比较低,占用资源比较多。  举几个例子:文件传输(准确高要求高、但是速度可以相对慢)、接受邮件、远程登录

三次握手  好比 A: 你在吗  B:我在 A:我来了  然后 建立连接                   四次挥手, A : 我要走了  B: 你要走了吗  B:你真的要走了吗 A:我真的要走了

UDP 好比发短信或者广播,不需要连接,发送方不管接收方有没有转备好,直接发消息; 特点: 传输不可靠,有可能造成消息丢失,效率高,协议简单,占用资源少.

举几个例子:QQ聊天、在线视频、网络语音电话(即时通讯,速度要求高,但是出现偶尔断续不是太大问题,并且此处完全不可以使用重发机制)、广播通信(广播、多播)

 

2、java有哪几种IO模型?有什么区别?

BIO  同步阻塞IO

客户端发起请求,创建一个线程去请求服务器,同事客户端等待服务器返回,拿到结果,请求结束。

NIO 同步非阻塞IO

 

客户端发起请求,服务端通过选择器调度(管家)去执行,拿到结果,请求结束

对服务端来说再多的客户端,对应要处理的线程也只有一个,解决了线程创建资源浪费的情况

AIO 异步非阻塞IO  JDK7 开始支持的

客户端发起请求,服务端创建队列接收请求,此时客户端不用等待,服务端处理完成,发送到队列,客户端监听到结果,完成请求。

 

区别: BIO可靠性差,吞吐量性能低,适用于连接少的场景,JDK1.4之前的选择。

           NIO 可靠性好,吞吐性能高,适用于连接比较多,连接比较短的场景,例如聊天室

           AIO  可靠性最好,吞吐量最高,适用于连接比较多,并且连接比较长的场景,比如(相册服务器)

 

 

3、java Nio的几个核心组件是啥?分别有什么作用

客户端发起请求,通过buffer组件,进入当前对应的Channel,然后到Selector,通知服务端去调度一个空闲的线程去处理当前请求。

    Channel  每个Channel 对应一个buffer ,Channel会注册到Selector上。

    Selector  Selector会根据Channel上发生的读写事件,将请求交由给某个空闲的线程

     Buffer  用来存消息 Buffer  和 Channel  都是可读可写的。

4、Selector  中select、poll 和epoll 的区别?

select 、poll 和epoll 是NIO中多路复用的三种实现机制。是由linux操作系统提供的。

用户空间 和内核空间:操作系统为了保护系统安全,将内核划分为两个部分,一个是用户空间,一个是内核空间

6、描述下HTTP和HTTPS的区别?

http: 是互联网引用最广泛的一种网络通信协议,基于TCP,可使用浏览器工作更为高效,减少网络传输。

HTTPS: 是http的加强版,可以认为是HTTP+SSL。在HTTP的基础上增加一系列的安全机制。一方面保证数据安全,另一方面对访问者增加了验证机制。目前架构下最为安全的解决方案。

主要区别:

 1、http简单 无状态,HTTPS的数据是经过证书加密的,安全性更高。

 2、端口不同 http默认80,https默认443

 

HTTPS的缺点:

1、https的握手协议比较费时,所以会影响服务的响应速度以及吞吐量。

Guess you like

Origin blog.csdn.net/u012565281/article/details/115860329