1 Star 0 Fork 31

moyu3390 / Ebooks_1

forked from Java精选 / Ebooks 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
最全60道面试题2021年常见网络编程面试题及答案汇总.md 9.98 KB
一键复制 编辑 原始数据 按行查看 历史

最全60道面试题2021年常见网络编程面试题及答案汇总

全部面试题答案,更新日期:01月30日,直接下载吧!

下载链接:高清500+份面试题资料及电子书,累计 10000+ 页大厂面试题 PDF

网络编程

题1:TCP 中什么是粘包和拆包?

TCP的数据发送都是靠流,流由一个接一个的数据包组成。

发送过程中tcp会把数据拆成很多个包,也有可能将小的数据合成一个大包。

题2:为什么客户端发出第四次挥手确认报文后要等 2MSL才能释放 TCP 连接?

这是因为考虑数据丢包的问题,如果第四次挥手的报文丢失,服务端没收到确认ack报文就会重发第三次挥手的报文,这样报文一去一回最长时间就是2MSL,所以需要等这么长时间来确认服务端确实已经收到。

注意:Linux系统中2MSL默认是60秒,那么一个MSL也就是30秒。

题3:什么是网络层?

网络层的任务就是选择合适的网间路由和交换结点,确保计算机通信的数据及时传送。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在TCP/IP体系结构中,由于网络层使用IP协议,因此分组也叫IP数据报 ,简称数据报。

互联网是由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来的。互联网使用的网络层协议是无连接的网际协议(Intert Prococol)和许多路由选择协议,因此互联网的网络层也叫做网际层或IP层。

发送端在层与层之间传输数据时,每经过一层时会被打上一个该层所属的首部信息。反之,接收端在层与层之间传输数据时,每经过一层时会把对应的首部信息去除。

题4:什么是应用层?

应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。

对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等等。

题5:HTTPS 工作原理是什么?

1、首先HTTP请求服务端生成证书,客户端对证书的有效期、合法性、域名是否与请求的域名一致、证书的公钥(RSA加密)等进行校验;

2、客户端如果校验通过后,就根据证书的公钥的有效, 生成随机数,随机数使用公钥进行加密(RSA加密);

3、消息体产生的后,对它的摘要进行MD5(或者SHA1)算法加密,此时就得到了RSA签名;

4、发送给服务端,此时只有服务端(RSA私钥)能解密。

5、解密得到的随机数,再用AES加密,作为密钥(此时的密钥只有客户端和服务端知道)。

题6:HTTP 中响应报文包含哪几部分?

响应报文结构:

1、第一行包含协议版本、状态码以及描述,最常见的是 200 OK 表示请求成功了。

2、接下来多行也是首部内容。

3、一个空行分隔首部和内容主体。

4、最后是响应的内容主体。

HTTP/1.1 200 OK
Age: 529651
Cache-Control: max-age=604800
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 648
Content-Type: text/html; charset=UTF-8
Date: Mon, 02 Nov 2020 17:53:39 GMT
Etag: "3147526947+ident+gzip"
Expires: Mon, 09 Nov 2020 17:53:39 GMT
Keep-Alive: timeout=4
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Proxy-Connection: keep-alive
Server: ECS (sjc/16DF)
Vary: Accept-Encoding
X-Cache: HIT

<!doctype html>
<html>
<head>
    <title>Example Domain</title>
	// 省略... (关注微信公众号Java精选,内涵3000+道面试题,免费领取)
</body>
</html>

题7:HTTP 状态码常见的都有哪些?

当浏览者访问网页时,浏览器会向网页所在服务器发出请求。浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

HTTP状态码的英文为HTTP Status Code。

下面是常见的HTTP状态码:

200 - 请求成功 301 - 资源(网页等)被永久转移到其它URL 404 - 请求的资源(网页等)不存在 500 - 内部服务器错误

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。

HTTP状态码共分为5种类型:

“1**”状态码表示信息,服务器收到请求,需要请求者继续执行操作。

“2**”状态码表示成功,操作被成功接收并处理。

“3**”状态码表示重定向,需要进一步的操作以完成请求。

“4**”状态码表示客户端错误,请求包含语法错误或无法完成请求。

“5**”状态码表示服务器错误,服务器在处理请求的过程中发生了错误。

题8:RPC 和 HTTP 分别有什么优缺点?

传输协议

RPC:可以基于TCP协议,也可以基于HTTP协议;

HTTP:基于HTTP协议。

传输效率

RPC:使用自定义的TCP协议,可以让请求报文体积更小,或者使用HTTP2协议,也可以很好的减少报文的体积,提高传输效率;

HTTP:如果是基于HTTP1.1的协议,请求中会包含很多无用的内容,如果是基于HTTP2.0,那么简单的封装以下是可以作为一个RPC来使用的,这时标准RPC框架更多的是服务治理。

性能消耗

RPC:可以基于thrift实现高效的二进制传输;

HTTP:大部分是通过json来实现的,字节大小和序列化耗时都比thrift要更消耗性能。

负载均衡

RPC:基本都自带了负载均衡策略;

HTTP:需要配置Nginx,HAProxy来实现。

服务治理

RPC:能做到自动通知,不影响上游;

HTTP:需要事先通知,修改Nginx/HAProxy配置。

总结

RPC主要用于公司内部的服务调用,性能消耗低,传输效率高,服务治理方便。HTTP主要用于对外的异构环境,浏览器接口调用,APP接口调用,第三方接口调用等。

题9:HTTP 中请求报文包含哪几部分?

客户端发送一个请求报文给服务器,服务器根据请求报文中的信息进行处理,并将处理结果放入响应报文中返回给客户端。

请求报文结构:

1、第一行是包含了请求方法、URL、协议版本;

2、接下来的多行都是请求首部 Header,每个首部都有一个首部名称,以及对应的值。

3、一个空行用来分隔首部和内容主体Body。

4、最后是请求的内容主体。

GET http://www.example.com/ HTTP/1.1
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cache-Control: max-age=0
Host: www.example.com
If-Modified-Since: Thu, 17 Oct 2019 07:18:26 GMT
If-None-Match: "3147526947+gzip"
Proxy-Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 xxx

param1=1&param2=2

题10:什么是物理层?

在物理层上所传送的数据单位是比特。 物理层(physical layer)的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。

使其上面的数据链路层不必考虑网络的具体传输介质是什么。

“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。

题11:http-协议中常用的请求方法有哪些

题12:为什么-tcp-握手三次挥手四次

题13:socket-如何唯一标识一个进程

题14:http-协议是全双工通信的吗

题15:http1.0-和-http1.1-有什么区别

题16:socket-前后端通信是如何实现服务器集群

题17:tcp/ip连接时有几次握手释放几次

题18:http-中常见的请求头有哪些

题19:rpc-和-http-有什么区别

题20:为什么要对网络协议分层

题21:什么情况下需要序列化为什么-rpc-参数需要序列化参数中日期类型用-sql.date-还是-util.date

题22:通信双方如何进行端口绑定

题23:socket-是全双工通信的吗

题24:同步异步阻塞非阻塞概念是什么

题25:http-和-https-有什么区别

大厂面试题

大厂面试题

大厂面试题

Java
1
https://gitee.com/moyu3390/ebooks_1.git
git@gitee.com:moyu3390/ebooks_1.git
moyu3390
ebooks_1
Ebooks_1
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891