Java面试题-计算机网络

devtools/2025/2/12 4:13:11/

文章目录

    • 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.ppmy.cn/devtools/158107.html

相关文章

1.31-子序列问题

Code-1.31-子序列问题 300. 最长递增子序列 题目分析 1. 状态表示 dp[i]表示&#xff1a;以i结尾的所有子序列中&#xff0c;最长递增子序列的长度。 2. 状态转移方程 dp[i] 长度为1 -> 1长度大于1 -> nums[j] < nums[i] -> max(dp[j] 1) 3. 初始化 把表…

aio-pika 快速上手(Python 异步 RabbitMQ 客户端)

目录 简介官方文档如何使用 简介 aio-pika 是一个 Python 异步 RabbitMQ 客户端。5.0.0 以前 aio-pika 基于 pika 进行封装&#xff0c;5.0.0 及以后使用 aiormq 进行封装。 https://github.com/mosquito/aio-pikahttps://pypi.org/project/aio-pika/ pip install aio-pika官…

C#操作excel数据,第一步先保存到Redis,第二步再保存到Sql Server数据库。第三步同步到MongoDB中

以下是一个完整的C#示例,展示如何将Excel数据依次保存到Redis、SQL Server和MongoDB中。代码分为三个步骤,并使用异步编程模型提高性能。 --- ### **实现步骤** 1. **读取Excel数据**:使用 `EPPlus` 库读取Excel文件。 2. **保存到Redis**:使用 `StackExchange.Redis` 将…

C++ 使用CURL开源库实现Http/Https的get/post请求进行字串和文件传输

CURL开源库介绍 CURL 是一个功能强大的开源库&#xff0c;用于在各种平台上进行网络数据传输。它支持众多的网络协议&#xff0c;像 HTTP、HTTPS、FTP、SMTP 等&#xff0c;能让开发者方便地在程序里实现与远程服务器的通信。 CURL 可以在 Windows、Linux、macOS 等多种操作系…

curl与telnet的区别

协议支持&#xff1a;curl支持多种协议&#xff0c;如HTTP、HTTPS、FTP等&#xff0c;而telnet主要用于基于TCP协议的连接。 功能&#xff1a;curl是一个功能强大的工具&#xff0c;可以用来发送各种HTTP请求、下载文件等&#xff0c;而telnet主要用于在远程服务器上进行简单的…

vue3+vite全局loading

vue3vite全局loading j-loading.vue组件 <template><transition enter-active-class"animate__animated animate__fadeIn"leave-active-class"animate__animated animate__fadeOut"><div class"root-box" v-if"show"…

网络通信的精髓:透彻理解 TCP/IP 的三次握手与四次挥手

网络通信的精髓:透彻理解 TCP/IP 的三次握手与四次挥手** 引言 在浩瀚的网络世界中,信息如流水般穿梭于全球各地,支撑着我们日常的在线互动、数据传输和云端服务。而这一切高效、可靠的网络通信,都离不开一个幕后英雄——TCP/IP 协议栈。它犹如网络的“骨架”和“神经系统…

docker启动报错code=exited, status=1/FAILURE——问题排查

问题 在某台centos7机器上&#xff0c;启动docker服务 sudo systemctl start docker报下列错误&#xff1a; ● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)Active: …