Bootstrap

常见网络编程面试题以及答案(网络面试30题)

面试宝典到手,搞定面试,不再是难题,系列文章传送地址,请点击本链接。

目录

1.常说的四层、五层、七层网络模型有什么区别?

2.TCP/IP 网络模型中的五层模型,每层分别有什么用?

3.介绍一下 HTTP 协议

4.GET 和 POST有什么区别?

5.PING 的作用?

6.常见的 HTTP 状态码有哪些

7.HTTP1.1 和 HTTP1.0 的区别有哪些?

8.HTTPS 和 HTTP 的区别是什么?

9.HTTP2 和 HTTP1.1 的区别是什么?

10.HTTP3 和 HTTP2 的区别是什么?

11.TCP 建立连接的过程是怎样的?

12.为什么是三次握手???

13.TCP 断开连接的过程是怎样的?

14.第四次挥手为什么要等待2MSL(60s)

15.为什么是四次挥手?

16.TCP 滑动窗⼝是什么?

17.发送方一直发送数据,但是接收方处理不过来怎么办?(流量控制)

18.TCP 半连接队列和全连接队列是什么?

19.粘包/拆包是怎么发生的?怎么解决这个问题?

20.浏览器地址栏输入网站按回车后发生了什么?

21、https的请求过程?

22、TCP是如何保证可靠性的

23、对称加密和非对称加密的区别?

24、websoket和http的区别?

25、Websoket是什么?

26、什么是AUTH2.0协议?有哪几种认证方式?什么是JWT令牌?和普通令牌有什么区别?

27、什么是SSO?

28、什么是认证和授权?如何设计一个权限认证框架?

29、Cookie和Session的区别?

30、什么是CSRF攻击?如何防止?


1.常说的四层、五层、七层网络模型有什么区别?

TCP/IP模型原为四层,而TCP/IP五层模型实际上是TCP/IP与OSI七层模型的混合后的产物。说到底,这些模型的出现目的是为了使大家都使用统一的协议(通信规则)来通信。可以看到,五层模型和七层模型在物理层、数据链路层、网络层、传输层都用的是相同的协议,他们是统一的。不同点只在于应用层部分。应用程序复杂多变,比如电子邮件用的是SMTP协议、WEB服务器用HTTP协议。应用程序可以根据自己的需求特点,来使用各种不同的协议。而五层模型和七层模型在应用层的理念各有优劣,也因此在不同的协议中得到实现。

  TCP/IP协议是互联网协议(簇)的统称,他是互联网标准通信的基础,它提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。而OSI模型是开放式系统互联通信参考模型——笔者的理解是:

  OSI是一个完整的、完善的宏观模型,他包括了硬件层(物理层),当然也包含了很多上面途中没有列出的协议(比如DNS解析协议等);而TCP/IP(参考)模型,更加侧重的是互联网通信核心(也是就是围绕TCP/IP协议展开的一系列通信协议)的分层,因此它不包括物理层,以及其他一些不想干的协议;其次,之所以说他是参考模型,是因为他本身也是OSI模型中的一部分,因此参考OSI模型对其分层。

2.TCP/IP 网络模型中的五层模型,每层分别有什么用?

TCP/IP网络模型总共有五层

  • 1.应用层:我们能接触到的就是应用层了,手机,电脑这些这些设备都属于应用层。
  • 2.传输层:就是为应用层提供网络支持的,当设备作为接收⽅时,传输层则要负责把数据包传给应⽤,但是⼀台设备上可能会有很多应⽤在接收或者传输数据,因此需要⽤⼀个编号将应⽤区分开来,这个编号就是端⼝。所以 TCP 和 UDP 协议就是在这一层的
  • 3.网络层:是负责传输数据的,最常使用的 ip 协议就在该层,⽹络层负责将数据从⼀个设备传输到另⼀个设备,世界上有很多设备,⽹络层需要有区分设备的编号。我们⼀般⽤ IP 地址给设备进⾏编号
  • 4.数据链路层:每⼀台设备的⽹卡都会有⼀个 MAC 地址,它就是⽤来唯⼀标识设备的。路由器计算出了下⼀个⽬的地 IP 地址,再通过 ARP 协议找到该⽬的地的 MAC 地址,这样就知道这个 IP 地址是哪个设备的了。路由器就是通过数据链路层来知道这个 ip 地址是属于哪个设备的,它主要为⽹络层提供链路级别传输的服务。
  • 5.物理层:当数据准备要从设备发送到⽹络的时候,需要把数据包转换成电信号,让其可以在物理介质中传输,它主要是为数据链路层提供⼆进制传输的服务。

3.介绍一下 HTTP 协议

HTTP 协议是基于 TCP 协议实现的,它是一个超文本传输协议,其实就是一个简单的请求-响应协议,它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。它主要是负责点对点之间通信的。超文本就是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。比如说html,内部定义了很多图片视频的链接,放在浏览器上就呈现出了画面。

4.GET POST有什么区别?

GET 和 POST 本质上就是 TCP 链接,并无差别。

但是由于 HTTP 的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

区别

GET

POST

数据传输方式

从服务器获取数据

向服务器提交数据

对数据长度的限制

当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)

无限制

对数据类型的限制

只允许 ASCII 字符

无限制

安全性

较差,所发送的数据是 URL 的一部分,会显示在网页上

较好 参数不会被保存在浏览器历史或 WEB 服务器日志中

可见性

显示在 URL 上

不显示

收藏为书签

可以

不可以

历史记录

可以被保留在历史记录当中

不可以被保留

缓存

能被缓存

不可以被缓存

5.PING 的作用?

PING 主要的作用就是测试在两台主机之间能否建立连接,如果 PING 不通就无法建立连接。

它其实就是向目的主机发送多个 ICMP 回送请求报文

  • 如果没有响应则无法建立连接
  • 如果有响应就可以根据目的主机返回的回送报文的时间和成功响应的次数估算出数据包往返时间及丢包率

6.常见的 HTTP 状态码有哪些

1xx        信息,服务器收到请求,需要请求者继续执行操作

2xx        成功,操作被成功接收并处理

3xx        重定向,需要进一步的操作以完成请求

4xx        客户端错误,请求包含语法错误或无法完成请求

5xx        服务器错误,服务器在处理请求的过程中发生了错误

7.HTTP1.1 HTTP1.0 的区别有哪些?

  • 1.长链接
  • 早期 HTTP1.0 的每一次请求都伴随着一次三次握手的过程,并且是串行的请求,增加了不必要的性能开销
  • HTTP1.1 新增了长链接的通讯方式,减少了性能损耗
  • 2.管道
  • HTTP1.0 只有串行发送,没有管道
  • HTTP1.1 增加了管道的概念,使得在同一个 TCP 链接当中可以同时发出多个请求
  • 3.断点续传
  • HTTP1.0 不支持断点续传
  • HTTP1.1 新增了 range 字段,用来指定数据字节位置,开启了断点续传的时代
  • 4.Host头处理
  • HTTP1.0 任务主机只有一个节点,所以并没有传 HOST
  • HTTP1.1 时代,虚拟机技术越来越发达,一台机器上也有可能有很多节点,故增加了 HOST 信息
  • 5.缓存处理
  • 在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准
  • HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
  • 6.错误状态响应码
;