Java面试题-计算机网络

news/2025/2/9 5:57:09 标签: java, 计算机网络, 开发语言

文章目录

    • 1.介绍一下TCP/IP五层模型?
    • 2.**什么是TCP三次握手、四次挥手?**
        • 1.三次握手建立连接
        • 2.四次握手断开连接
    • **3.HTTPS和HTTP的区别是什么?**
    • 4.**浏览器输入www.taobao.com回车之后发生了什么**?
        • 1.URL解析,对URL进行编码,之后查看浏览器是否缓存了该页面
        • 2.DNS查询,得到ip
        • 3.建立连接,进行TCP三次握手
        • 4.将请求封装为http报文,经过网关和路由器发送给server
        • 5.请求发送到Nginx服务器,负载均衡到某个服务器,交给MVC处理
        • 6.接下来就是MVC的执行流程了
        • 7.扩展:http报文
    • 5.**什么是TCP的粘包、拆包问题?**
    • 6.http执行流程
        • 1.URL解析,对URL进行编码,之后查看浏览器是否缓存了该页面
        • 2.DNS查询,得到ip
        • 3.建立连接,进行TCP三次握手
        • 4.将请求封装为http报文,经过网关和路由器发送给服务器
        • 5.服务器处理请求并返回http响应
        • 6.客户端接受并解析响应
        • 7.关闭连接
    • 7.解释一下DNS?
    • 8.ARP和RARP的区别是什么?
        • 1.概念介绍
        • 2.功能不同
        • 3.工作方式不同
    • 9.交换机和路由器的区别是什么?
    • 10.TCP是如何保证可靠传输的?
        • 1.三次握手建立连接
        • **2.四次握手关闭连接**
        • 3.超时重传机制
        • 4.确认应答机制(ACK)
        • 5.数据包序列号确保顺序传输
        • 6.**校验和字段进行数据校验**
        • 7. **流量控制**
    • 11.ping的原理是什么?
    • 12.什么是IPV6?和IPV4有什么区别?
        • 1.地址长度
        • 2.地址空间
        • 3.网络性能
    • 13.TCP和UDP的区别是什么?
        • 1.连接性
        • 2.可靠性
        • 3.流量控制
        • 4.速度和效率

1.介绍一下TCP/IP五层模型?

CleanShot 2024-08-21 at 08.53.53@2x

2.什么是TCP三次握手、四次挥手?

1.三次握手建立连接

客户端先向服务端发送请求,表示想要开始建立连接

服务端收到消息,则发送消息给客户端,表示他准备好了,并表示也想要建立连接

然后客户端收到消息,再发送消息给客户端,表示他收到了消息,可以开始建立连接了

第一次和第二次握手:决定了客户端的发包和服务端的收包能力

第三次和第四次握手:决定了服务端的发包和客户端的收包能力

CleanShot 2024-08-21 at 08.56.07@2x

2.四次握手断开连接

客户端向服务端发送消息,表示想要挂电话

服务端接收到消息,回复,知道了,但是还有点儿事要处理

一段时间之后,服务端处理完事情了,然后向客户端发送消息,表示事情处理完了,他准备好挂电话了

最后客户端收到了服务端的消息,并同意现在可以挂电话了

CleanShot 2024-08-21 at 08.56.16@2x

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

CleanShot 2024-08-21 at 09.08.15@2x

4.浏览器输入www.taobao.com回车之后发生了什么

1.URL解析,对URL进行编码,之后查看浏览器是否缓存了该页面
2.DNS查询,得到ip
3.建立连接,进行TCP三次握手
4.将请求封装为http报文,经过网关和路由器发送给server
5.请求发送到Nginx服务器,负载均衡到某个服务器,交给MVC处理
6.接下来就是MVC的执行流程了
7.扩展:http报文

从外到里分别为以太网首部+ip首部+tcp首部+http首部

5.什么是TCP的粘包、拆包问题?

CleanShot 2024-09-06 at 09.53.51@2x

6.http执行流程

1.URL解析,对URL进行编码,之后查看浏览器是否缓存了该页面
2.DNS查询,得到ip
3.建立连接,进行TCP三次握手
4.将请求封装为http报文,经过网关和路由器发送给服务器
5.服务器处理请求并返回http响应
6.客户端接受并解析响应
7.关闭连接

7.解释一下DNS?

DNS最重要的目的就是将域名翻译成ip地址。

DNS解析的过程是,输入域名,按照以下顺序查询ip,浏览器缓存,OS hosts缓存,根域名服务器缓存,顶级域名服务器缓存,权威域名服务器缓存。

8.ARP和RARP的区别是什么?

1.概念介绍

ARP和RARP都是网络通信协议,用于将ip地址和mac地址进行转换。

2.功能不同

ARP协议用于将ip地址转换为mac地址、RARP协议用于将mac地址转换为ip地址。

3.工作方式不同

ARP协议是一种广播协议,当一台主机需要知道另一台主机的mac地址时,直接在本地局域网广播一个ARP请求包,所有的主机都能够收到这个请求包,但是只有目标主机会响应这个请求,将自己的mac地址发送回来。

RARP协议则是向预定义的RARP服务器发出请求,请求服务器返回自己的ip地址。

9.交换机和路由器的区别是什么?

在OSI七层模型中,交换机主要工作在数据链路层,路由器工作在网络层。

交换机转发所依据的对象是物理地址,也就是mac地址,路由器转发所依据的对象是网络地址,也就是ip地址。

交换机主要用于组建局域网,而路由器主要功能是连接局域网。

10.TCP是如何保证可靠传输的?

1.三次握手建立连接
2.四次握手关闭连接
3.超时重传机制

超时机制是 TCP 的核心之一。当发送方发送数据包后,等待接收方的 ACK。如果在预设的时间内没有收到 ACK,发送方会认为数据丢失了或没有成功到达接收方,于是触发超时重传,即重新发送数据。

4.确认应答机制(ACK)

每当接收方收到一个数据包后,会向发送方发送一个 确认应答(ACK)

5.数据包序列号确保顺序传输

TCP 通过为每个数据包分配一个 序列号,保证数据包的顺序传输。

6.校验和字段进行数据校验

每个TCP数据包中都有一个 校验和 字段,用来检查数据在传输过程中是否损坏。

7. 流量控制

TCP 使用 滑动窗口 机制来进行流量控制。滑动窗口指的是发送方允许未确认的数据的最大数量。接收方会通过通告窗口大小(window size)来告诉发送方它可以接收多少数据,避免接收方被数据包淹没。

11.ping的原理是什么?

ping是一个网络工具,用来测试两台机器的网络连通性。原理是基于ICMP协议,通过发送ICMP回显请求报文。并等待目标设备返回ICMP回显应答报文,来判断网络是否畅通。

另外ping是不需要端口的,因为ping是一个应用层直接使用网络协议的,不涉及到传输层,所以不需要指定端口。

12.什么是IPV6?和IPV4有什么区别?

IPV6是下一代网络协议,旨在解决IPV4的地址资源耗尽问题,并提供更高效的网络通信。

1.地址长度

IPV4地址长度32位,IPV6地址长度128位,足以满足未来全球的网络需求。

2.地址空间

IPV4的地址资源有限,地址逐渐耗尽。IPV6提供了大范围的地址空间,可以为每一个设备分配唯一的ip地址。

3.网络性能

IPV6去掉了IPV4的某些功能,比如校验和,减轻了路由器处理的负担,从而提高了网络传输效率。

13.TCP和UDP的区别是什么?

1.连接性

TCP需要建立连接,UDP是无连接的协议。

2.可靠性

TCP提供可靠的传输。

UDP没有数据包序列号,确认应答,校验和,所以是不可靠的。

3.流量控制

TCP使用滑动窗口机制动态保证发送数据的速率。

UDP不提供流量控制机制。

4.速度和效率

UDP 没有连接的建立和数据确认机制,因此传输速度更快,延迟更低,但无法保证数据的可靠性。


http://www.niftyadmin.cn/n/5845636.html

相关文章

使用Spring boot的@Transactional进行事务管理

文章目录 一、前置条件二、基本用法1. 在方法上添加注解2. 在类上添加注解 三、核心配置参数1. 传播行为(Propagation)2. 隔离级别(Isolation)3. 超时时间(Timeout)4. 只读模式(readOnly&#x…

deepseek本地部署-linux

1、官网推荐安装方法(使用脚本,我绕不过github,未采用) 登录ollama下载网站https://ollama.com/download/linux,linux下有下载脚本。 正常来说,在OS系统下直接执行脚本即可。 2、手动安装方法 2.1获取ollama-linux-arm64.tgz wget https://ollama.com/download/ollam…

[手机Linux] onepluse6T 系统重新分区

一,刷入TWRP 1. 电脑下载 Fastboot 工具(解压备用)和对应机型 TWRP(.img 后缀文件,将其放入前面解压的文件夹里) 或者直接这里下载:TWRP 2. 将手机关机,长按音量上和下键 开机键 进入 fastbo…

【0403】Postgres内核 检查(procArray )给定 db 是否有其他 backend process 正在运行

文章目录 1. 给定 db 是否有其他 backend 正在运行1.1 获取 allPgXact[] 索引1.1.1 MyProc 中 databaseId 初始化实现1.2 allProcs[] 中各 databaseId 判断1. 给定 db 是否有其他 backend 正在运行 CREATE DATABASE 语句创建用户指定 数据库名(database-name)时候, 会通过 …

MYSQL innodb引擎的索引结构,B+树一般都多高,层高怎么计算的?

目录 B+树的高度计算 计算公式 B+树的层高示例 B+树的典型高度 B+树的结构 如何查看 B+树的高度 总结 在 MySQL InnoDB 引擎中,索引结构采用 B+树,这是一种平衡树结构,适合用于磁盘存储和范围查询。B+树的高度(层数)直接影响查询性能,因为每一层都需要一次磁盘 I/…

node 程序占用处理方法与后台运行方法

程序占用 如果你在关闭终端后重新运行 node server.js,但提示端口 3000 被占用,说明之前的服务器进程仍然在后台运行。以下是解决方法: 1. 检查后台运行的 Node.js 进程 首先,检查是否有 Node.js 进程正在占用端口 3000。 在 L…

在线SQL转JSON-GO在线工具集

此工具提供多数据库 SQL 自动转换为 JSON 格式的工具,支持 MySQL、PostgreSQL、Oracle 等主流数据库。此工具将 SQL 查询结果转换为结构化的 JSON 数据,方便 JSON 处理和数据交换,优化数据管理和集成过程,提升工作效率。 gotool

存储异常导致的Oracle重大生产故障

📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验 Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯…