计算机网络面经:快来看看你是否全部掌握?

本文详述了计算机网络面试中常见的问题,包括TCP/IP模型、HTTP状态码、TCP与UDP区别、三次握手与四次挥手、HTTP与HTTPS的区别、HTTP优化与HTTPS优化、TCP连接管理及安全问题等核心概念。通过对这些问题的理解,帮助读者全面掌握网络基础知识,应对面试挑战。
摘要由CSDN通过智能技术生成

目录

1、TCP/IP 网络模型有哪几层?

2、键入网址到网页显示,期间发生了什么?

3、HTTP常见的状态码都有哪些

4、HTTP 常见字段有哪些?

5、get与post有什么区别?

6、HTTP的缓存技术有哪些?

7、HTTP/1.1的优缺点

8、Http/2做了什么优化?

9、Http/3做了什么优化?

10、HTTP 与 HTTPS 有哪些区别?

11、HTTPS的握手是怎么样的?

12、HTTPS一定安全可靠吗?

13、HTTP/1.1 如何优化?

14、HTTPS如何优化?

15、既然有 HTTP 协议,为什么还要有 RPC?

16、什么是Socket?

17、TCP和UDP的区别?

18、TCP 和 UDP 可以使用同一个端口吗?

19、TCP的三次握手过程?

20、为什么是三次握手?不是两次、四次?

21、初始序列号 ISN 是如何随机产生的?

22、既然 IP 层会分片,为什么 TCP 层还需要 MSS 呢?

23、握手丢失会发生什么?

24、什么是 SYN 攻击?如何避免 SYN 攻击?

25、TCP四次挥手的过程?

26、为什么挥手需要四次?

27、为什么 TIME_WAIT 等待的时间是 2MSL?

28、为什么需要 TIME_WAIT 状态?

29、TIME_WAIT 过多有什么危害?

30、服务器出现大量 TIME_WAIT 状态的原因有哪些?

31、服务器出现大量 CLOSE_WAIT 状态的原因有哪些?

32、如果已经建立了连接,但是客户端突然出现故障了怎么办?

33、如果已经建立了连接,但是服务端的进程崩溃会发生什么?

34、没有 accept,能建立 TCP 连接吗?

35、没有 listen,能建立 TCP 连接吗?

36、介绍一下TCP的重传机制?

37、滑动窗口存在的原因

38、介绍一下TCP的流量控制?

39、什么是糊涂窗口综合症?        

40、介绍一下TCP的拥塞控制?

41、如何解决粘包的情况?

42、四次挥手中收到乱序的Fin报文会怎么处理

43、在 TIME_WAIT 状态的 TCP 连接,收到 SYN 后会发生什么?

44、TCP 连接,一端断电和进程崩溃有什么区别?

45、TLS和TCP能同时握手吗?

46、TCP Keepalive 和 HTTP Keep-Alive 是一个东西吗?

47、用了TCP协议,一定保证不会丢包吗?

48、IP协议相关的技术有哪些


1、TCP/IP 网络模型有哪几层?

        共分为四层,分别是应用层,传输层,网络层,网络接口层;

        应用层专注于为用户提供服务,例如http,ftp,dns等,处于用户态,其他三层都处于内核态;

        传输层负责实现应用到应用的通信,主要有tcp udp两大协议;

        网络层负责真正的传输服务,主要用ip协议,主要功能有路由和寻址,寻址更像是找到目的地,而路由则像是选择最佳的路径。

        网络接口层负责给网络层提供链路级别的传输服务,会在原本的结构上加上mac头部,在以太网,wifi这样的底层网络上发送原始数据包。

2、键入网址到网页显示,期间发生了什么?

        首先是解析url,然后生成http请求信息,随后会通过查询dns确定ip地址,如果缓存中有,则直接获取,如果没有,会通过根域名服务器,顶级域名服务器,权威域名服务器依次确定最终ip地址,接着是通过三次握手建立可靠连接,然后通过ip协议确定传输的目的地,随后加上mac头部,在以太网、wifi这样的底层网络上传输,随后会经过网卡,数字信号需要转换成电信号,然后会在交换机、路由器上进行传输,然后便可以到达服务器,依次扒皮,确定想要获得某一个页面或其他资源,再按照上述过程再送回到客户端,客户端依次扒皮后拿出具体资源,渲染页面,最后看是否是长连接,如果不是长连接,就发起四次挥手,断开连接。

3、HTTP常见的状态码都有哪些

        1xx:属于提示信息,是协议处理的一种中间状态,实际使用的比较少

        2xx:成功

                200:最常见的一种成功

                204:响应头中没有body数据的成功

                206:响应头中的body数据并不是完整的资源

        3xx:重定向

                301:永久重定向

                302:临时重定向

                304:缓存重定向

        4xx:客户端错误

                403:服务器禁止访问资源

                404:资源不存在

        5xx:服务端错误

                501:客户端请求的功能还不支持

                502:服务器自身工作正常,访问时发生错误

                503:服务器当前很忙,暂时无法响应客户端

4、HTTP 常见字段有哪些?

        host:服务域名,connection:长连接,content-lenth:数据长度,content-type:数据类型,content-encoding:数据压缩格式

5、get与post有什么区别?

        get语义为获取资源,post语义为对资源做出处理。

        get是安全且幂等的,post是不安全且不幂等。

        get的请求参数放在url路径上,post会放在请求体body中

        get的多次回退操作并无影响,post的多次回退操作都被认为是重新提交资源

        get发送数据时,直接发送header 和 data,并返回200,post先发送header,返回100后,再发送data,返回200。

6、HTTP的缓存技术有哪些?

        分别是强制缓存和协商缓存,强制缓存是指当请求资源没过期时,会优先从本地缓存中拿取资源,协商缓存是指当请求资源过期后,会询问服务端,服务端返回304告知本地资源虽然过期但可以继续用,于是还是会拿去本地过期的资源来使用,这种与服务端协商后来判断是否使用本地缓存的技术是协商缓存。

7、HTTP/1.1的优缺点

        优点:简单,灵活,易于扩展,跨平台

        缺点:无状态,明文传输,不安全

        相对于HTTP/1.0,做了进一步的优化:长连接,管道传输(减少整体响应时间),但存在队头阻塞的问题。

8、Http/2做了什么优化?

        头部压缩,二进制格式,并发传输(stream),服务器主动推送资源,解决了响应的队头阻塞问题,但仍然在TCP层面还存在队头阻塞的问题

9、Http/3做了什么优化?

        由于TCP存在队头阻塞的问题,故HTTP/3改成了基于UDP实现的QUIC协议,相对于HTTP/2,HTTP/3不存在队头阻塞问题,其次能够更快地连接建立,因为quic握手里包含TLS握手,之前TCP握手和TLS握手是分开的,最后能够连接迁移,以前从5g切换成wifi需要断开并重新建立连接,而HTTP/3能够直接迁移。

10、HTTP 与 HTTPS 有哪些区别?

        HTTP是不安全的,HTTPS是安全的,HTTP连接的时候只需要进行TCP三次握手,而HTTPS则在三次握手之后进行SSL/TLS加密握手,HTTP的端口是80,HTTPs的端口是443,HTTPS具有证书,HTTP没有,HTTP是明文传输,而HTTPs是加密传输。

11、HTTPS的握手是怎么样的?

        首先进行TCP三次握手,即客户端告诉服务端,我要开始连接了,然后发送自己的初始化序列号,自己进入syn-sent的状态,服务端接收到信号之后,返回ACK,ACK的值是客户端发来的初始化序列号的值+1,然后发送自己的初始化序列号,客户端收到后,返回ACK,ACK的值是服务端发来的初始化序列值+1。然后进行SSL/TLS加密握手,首先客户端告诉服务端我们要开始加密握手了,服务端发送一个CA证书给客户端,兵器里面包含一个公钥,客户端收到公钥后对一个随机密文加密,将加密后密文发送给服务端,服务端用私钥解密,然后之后的通信都用这个解密后的密文作为密钥进行通信。

12、HTTPS一定安全可靠吗?

        至今为止,HTTPS还是安全可靠的,即使有出现安全问题,也本质上是因为使用人错误点击了不安全的根证书导致的,并不是HTTPS不够安全。

13、HTTP/1.1 如何优化?

        减少HTTP请求(缓存);减少请求次数(合并请求);减少响应数据大小(压缩数据)

14、HTTPS如何优化?

        软硬件升级,证书升级,会话重用(但要注意会话过期时间,避免带来风险)

15、既然有 HTTP 协议,为什么还要有 RPC?

        TCP是一个无边界的消息流,因此它的上层必须要能够定义消息边界,本质上RPC是一种调用方式,其本意是希望调用远程方法和调用本地方法一样实现,gRPC才是一种协议,早期的RPC性能比htpp/1.1好,因此更多的公司都在用rpc,后面HTTP升级为HTTP/2后,性能高于RPC,但由于大多数公司都还在使用rpc,因此现在仍然还有很多公司还在用RPC。

16、什么是Socket?

        套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。

17、TCP和UDP的区别?<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

准入职的java螺丝钉一枚

你的鼓励是我继续不断创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值