java面试题:网络通讯

网络分层

Q:OSI网络七层模型。
javascript

Http

Q:http协议的状态码有哪些?含义是什么?
200,服务器已成功处理了请求。
302,重定向。
400,错误请求。
401,未受权,请求要求身份验证。
403,禁止,服务器拒绝请求。
404,未找到,服务器找不到请求的网页。
405,方法禁用,禁用请求中指定的方法。
500,服务器内部错误,服务器遇到错误,没法完成请求。
Q:http1.0和http1.1的区别是什么?
HTTP/1.0中浏览器与服务器只保持短暂的链接,链接没法复用。也就是说每一个TCP链接只能发送一个请求。发送数据完毕,链接就关闭,若是还要请求其余资源,就必须再新建一个链接。
HTTP/1.1相比较于HTTP/1.0来讲,最主要的改进就是引入了持久链接。所谓的持久链接即TCP链接默认不关闭,能够被多个请求复用。
HTTP/1.1版还引入了管道机制(pipelining),即在同一个TCP链接里面,客户端能够同时发送多个请求。
Q:http1.x 和http2.0的区别?
HTTP2.0和HTTP1.X相比的新特性
(1)新的二进制格式(Binary Format),HTTP1.x的解析是基于文本。基于文本协议的格式解析存在自然缺陷,文本的表现形式有多样性,要作到健壮性考虑的场景必然不少,二进制则不一样,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。
(2)多路复用(MultiPlexing),即链接共享,即每个request都是是用做链接共享机制的。一个request对应一个id,这样一个链接上能够有多个request,每一个链接的request能够随机的混杂在一块儿,接收方能够根据request的 id将request再归属到各自不一样的服务端请求里面。
(3)header压缩,如上文中所言,对前面提到过HTTP1.x的header带有大量信息,并且每次都要重复发送,HTTP2.0使用encoder来减小须要传输的header大小,通信双方各自cache一份header fields表,既避免了重复header的传输,又减少了须要传输的大小。
(4)服务端推送(server push),同SPDY同样,HTTP2.0也具备server push功能。
Q:Http的请求报文的报文头,有哪些参数?
请求方法Get/Post/Put/Delete等,请求URL,Http版本,ContentType,Host
Q:Https与Http的一些区别?
HTTPS协议须要到CA申请证书,通常免费证书不多,须要交费。
HTTP协议运行在TCP之上,全部传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,全部传输的内容都通过加密的。
HTTP和HTTPS使用的是彻底不一样的链接方式,用的端口也不同,前者是80,后者是443。
HTTPS能够有效的防止运营商劫持,解决了防劫持的一个大问题。
Q:Get和Post的区别 ?
(1)post更安全(不会做为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
(2)post发送的数据更大(get有url长度限制)
(3)post能发送更多的数据类型(get只能发送ASCII字符)
(4)post比get慢
(5)post用于修改和写入数据,get通常用于搜索排序和筛选之类的操做(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据
Q:一次完整的Http请求是怎样的?
DNS域名解析 –> 发起TCP的三次握手 –> 创建TCP链接后发起http请求 –> 服务器响应http请求,浏览器获得html代码 –> 浏览器解析html代码,并请求html代码中的资源(如javascript、css、图片等) –> 浏览器对页面进行渲染呈现给用户
Q:讲一下会话。
由于Http是无状态机制,须要会话Session来保存状态。Session有SessionId,还有会话时长。
Q:Session和Cookie的区别是什么?
(1)存在的位置:
cookie 存在于客户端,临时文件夹中; session存在于服务器的内存中,一个session域对象为一个用户浏览器服务
(2)安全性:
cookie是以明文的方式存放在客户端的,安全性低,能够经过一个加密算法进行加密后存放; session存放于服务器的内存中,因此安全性好
(3)网络传输量:
cookie会传递消息给服务器; session自己存放于服务器,不会有传送流量
(4)生命周期(以20分钟为例):
cookie的生命周期是累计的,从建立时,就开始计时,20分钟后,cookie生命周期结束;
session的生命周期是间隔的,从建立时,开始计时如在20分钟,没有访问session,那么session生命周期被销毁。可是,若是在20分钟内(如在第19分钟时)访问过session,那么,将从新计算session的生命周期。关机会形成session生命周期的结束,可是对cookie没有影响。
(5)访问范围:
cookie为多个用户浏览器共享; session为一个用户浏览器独享
Q:讲一下Http缓存。
Q:讲一下Http长链接和短链接。css

Tcp

Q:Tcp三次握手。
Q:Tcp四次握手。html

Udp

Q:Tcp和Udp的区别?
是否链接:Tcp面向链接,Udp面向非链接
传输可靠性:Tcp可靠,Udp不可靠
应用场合: Tcp传输大量数据,Udp少许数据
速度:Tcp速度慢 , Udp速度快
模式:Tcp面向字节流,Udp是面向报文的java

NIO

Q:NIO、AIO、BIO有什么区别?
同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。
Q:NIO和IO有什么区别?
IO是多线程的,阻塞的。NIO,是同步的非阻塞IO。
IO面向Stream(流),而NIO面向Buffer(缓冲区)。
IO是多个线程的,不存在Selector。而Java NIO的Selector(选择器)容许一个单独的线程来监视多个Channel(输入通道)。
Q:讲一下NIO
NIO,同步非阻塞,IO多路复用。
NIO包括Channel、Select、Buffer这些。
Selector容许单线程处理多个 Channel。面试

Netty

Q:讲一下Netty。
Q:讲一下Netty的线程模型。
参考资料:
搞定计算机网络面试
Http请求/响应报文算法

相关文章
相关标签/搜索