Java之网络面试经典题(一)

目录

​编辑

一.Session和cookie

Session

二.HTTP和HTTPS的区别

三.浅谈HTTPS为什么是安全的?

四.TCP和UDP

五.GET和Post的区别

六.forward 和 redirect 的区别?


本专栏全是博主自己收集的面试题,仅可参考,不能相信面试官就出这种题目。

一.Session和cookie

        Session和Cookie是用于在Web应用中跟踪用户状态和保持用户数据的重要机制。

Cookie是服务器发送到用户浏览器并保存在本地的小型文本文件。它通常用于:

  • 跟踪用户:通过将唯一标识符存储在Cookie中,服务器可以识别和跟踪特定用户的访问行为。
  • 保存用户偏好设置:例如语言偏好、主题选择等,使得用户下次访问时能够继续使用他们的偏好设置。
  • 保持登录状态:最常见的用途之一是通过Cookie来维持用户的登录状态。当用户进行登录时,服务器会在Cookie中设置一个会话标识符,浏览器会在后续的请求中将这个标识符发送回服务器,从而保持用户的登录状态。

特点:

  • 存储在客户端:Cookie是存储在用户的浏览器中的,每次用户访问同一个域名下的页面时,浏览器都会将相关的Cookie发送给服务器。
  • 大小限制:每个Cookie的存储容量通常有限制,通常在几KB到几MB之间,因此不适合存储大量数据。
  • 安全性考虑:Cookie中的数据可以被用户查看和修改,因此不适合存储敏感信息,如密码等。

Session

Session是在服务器端存储的关于用户会话的信息。它通常用于:

  • 保持状态:服务器可以在会话中存储用户的状态信息,如登录状态、购物车内容等。
  • 安全性:与Cookie相比,Session存储在服务器端,用户无法直接访问或修改它,因此更适合存储敏感信息。
  • 性能:由于数据存储在服务器端内存中,访问速度通常比Cookie快。

Session的工作流程如下:

  1. 会话创建:当用户首次访问服务器时,服务器会为该用户创建一个唯一的会话标识符(Session ID)。
  2. 存储信息:服务器使用这个Session ID来存储和检索与用户相关的信息,可以是关于用户状态的数据。
  3. 传递标识符:为了在请求之间保持会话,服务器会将Session ID发送给客户端。通常这个Session ID 被放置在Cookie中(称为Session Cookie)。
  4. 过期管理:会话可以有过期时间,一旦过期,服务器会删除与之关联的数据,用户需要重新登录或重新创建会话。

总结:

  • Cookie:存储在用户的浏览器中的数据(会话标识符、兴趣爱好等),每次请求都会发送给服务器。Session:存储在服务器端,客户端只保存一个标识符
  • Cookie:由于存储在客户端,Cookie中的数据可以被用户查看和修改,不安全;Session:数据存储在服务器端,用户无法直接访问或修改Session中的数据,安全
  • Cookie:每个Cookie通常有存储容量限制;Session:存储在服务器端,理论上没有大小限制,受限于服务器内存或存储设施的大小。
  • Cookie:可以设置过期时间,可以是会话Cookie(关闭浏览器后失效)或持久Cookie(在指定时间后失效)。Session:通常有一个过期时间或者在用户退出登录时被销毁,也可以手动清除。

二.HTTP和HTTPS的区别

        http协议是超文本传输协议,一种明文数据传输的网络协议,但也因此不安全。

传输的数据可有:html、图片、文本文件、音频和视频、应用程序(json、xml等)、软件安装包等

特点:

  1. 简单快速: HTTP的设计简单直接,基于请求-响应模型,使得通信高效迅速。它通常使用短连接,即每个请求/响应对都使用一个单独的TCP连接来处理,减少了服务器的负担,同时也不会消耗过多的资源。

  2. 灵活: HTTP允许传输任意类型的数据对象。不限于传输超文本,还可以传输图片、音频、视频等多媒体内容,甚至可以传输应用程序的数据。

  3. 无连接: HTTP协议是无连接的,即每次请求都是独立的,服务器不会保存前一次请求的信息,因此它是一种无状态协议。这样的设计简化了服务器端的设计和实现,但也增加了一些管理和状态维护的复杂性,为了解决这个问题,引入了Cookie等机制来维护状态。

        HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。HTTPS协议基于TLS/SSL协议加密进行TCP传输 进行了加密,拿到的是密文。传输端口为443。

二者之间的主要区别:

  1. 加密机制:HTTP不加密数据传输,而HTTPS通过SSL/TLS加密传输数据。
  2. 安全性:HTTP传输的数据容易被窃听和篡改,HTTPS传输的数据经过加密保护,安全性更高。
  3. 端口:HTTP默认端口号为80,HTTPS默认端口号为443。
  4. 使用场景:HTTP适用于不涉及隐私和安全要求不高的数据传输,而HTTPS用于保护敏感数据的传输和保障用户隐私。
  5. 默认端口:http使用的是80端口,https使用的是443端口。在网络模型中,HTTP工作于应用层,而HTTPS工作在传输层。
  6. 连接过程:http中使用的是tcp三次握手三次握手进行连接。https中使用的是tcp的三次握手加上TLS(安全传输层)四次握手。

三.浅谈HTTPS为什么是安全的?

        通过几个方面来解答:

第一个:加密传输,使用了SSL和TLS协议进行加密HTTP的通信。

第二个:有加密哈希算法例如SHA 可以保证数据的完好性,服务器在接收数据前会通过哈希函数验证数据的完整性

第三个:由于SSL证书是第三方机构颁发,可以验证服务器的身份,确保发送数据的安全性

四.TCP和UDP

        说起这两个,我们得回忆下什么是Socket套接字。

Socket可以看作是两个计算机之间通信的端点。它包含了IP地址和端口号,用来唯一标识网络中的一个进程。在通信的过程中,每个参与通信的程序都会创建一个Socket,用来建立连接、发送和接收数据。

Socket套接字通常有两种类型:流套接字(Stream Socket)和数据报套接字(Datagram Socket),也称TCP和UDP

TCP协议

  特点:可靠的、面向连接的通信。流套接字提供了字节流的传输方式,保证数据按照发送的顺序到达目标,并且无差错、不丢失、不重复。

TCP的连接方式:确认应答机制

  1. 第一次握手(SYN)

    • 客户端向服务器端发送一个带有SYN(同步序列编号)标志的数据包,表明客户端请求连接。此时客户端进入SYN_SENT状态,等待服务器的确认。
  2. 第二次握手(SYN + ACK)

    • 服务器收到客户端的SYN请求后,会以自己的SYN和ACK确认标志作为应答,表示接受连接请求。服务器端进入SYN_RCVD状态。
  3. 第三次握手(ACK)

    • 客户端收到服务器端的SYN和ACK确认后,向服务器端发送一个带有ACK标志的数据包,表示连接建立成功。客户端和服务器端均进入已建立连接的状态,可以开始通信。

问:四次握手和两次握手可以吗?

答:四次握手可以,但多了一次交互,增加了网络通信的时延和复杂度。而两次握手是不可行的,服务器接收到同步序列号,并且发送自身的syn和ack回复,这是单方面的确认连接,客户端有可能接收不到,难以确定何时连接真正建立或中断。

四次挥手 

  1. 第一次挥手 (FIN)

    • 客户端或服务器决定关闭连接后,发送一个FIN(Finish)标志给对方,表示它已经没有数据要发送了,但仍愿意接收数据。
  2. 第二次挥手 (ACK)

    • 接收到FIN的一方发送一个ACK(Acknowledgment)确认,表示它已收到了关闭请求。
  3. 第三次挥手 (FIN)

    • 接收到ACK的一方也准备好关闭连接时,会发送一个FIN给对方,表示它也没有数据要发送了。
  4. 第四次挥手 (ACK)

    • 最后,接收到第三步的FIN的一方发送一个ACK确认,告知对方已收到关闭请求。

问:为什么不会是三次挥手?就是把中间的两次ack和fin结合在一起!

答:第一个原因:TCP是全双工通信,需要回应;第二个,可以提前关闭自身的发送能力,确保数据不会丢失。


UDP协议:

   特点:无连接,面向数据报的通信协议,只有接收缓冲区,无发送缓冲区,不保证数据传输的可靠性和顺序性,但是具有低延迟的特点。

单播、多播和组播的特性

  1. 单播

    • 例子:你给你的朋友发短信。
    • 解释:当你发送一条短信给你的朋友,你知道这条信息只会被你的朋友接收到,因为你只发送给了她的手机号码。这类似于UDP的单播,数据从一个发送者(你)到一个特定的接收者(你的朋友)。
  2. 广播

    • 例子:学校的广播通知。
    • 解释:学校广播通知是通过学校的广播系统发送到所有教室和办公室的。当校长或者行政人员发出通知时,所有在校内的人都可以收到相同的消息,即使他们分布在不同的房间里。这就像UDP的广播,一个消息被发送到一个特定的地址(广播地址),所有在该地址上的接收者都可以接收到这条消息。
  3. 组播

    • 例子:视频会议。
    • 解释:在一个视频会议中,多个参与者通过互联网连接,他们共享相同的视频和音频流。数据通过组播地址发送,只有那些加入了会议的参与者才会接收到数据。这类似于UDP的组播,数据从一个发送者(视频会议服务器)发送到一个特定的组(参与视频会议的所有人)。

TCP和UDP区别:

五.GET和Post的区别

1、get 和 post请求是http协议中的两种请求方式。

 2、get一般用来获取服务器的信息的,post一般是用来更新信息

主要区别:

  1. 数据传输方式

    • GET:通过URL提交数据,数据在URL中可见,以查询字符串的形式附加在URL后面。例如:http://example.com/resource?key1=value1&key2=value2
    • POST:通过HTTP消息主体(HTTP请求的消息主体(body)中进行传输)传输数据,数据不在URL中可见,更多适用于传输敏感数据或大量数据。
  2. 数据长度限制

    • GET:由于数据附加在URL中,所以受到URL长度限制的影响,不同的浏览器和服务器对URL长度限制不一致,通常在几千字节左右。
    • POST:由于数据在HTTP消息主体中传输,通常可以传输更多数据,不受URL长度限制。
  3. 安全性

    • GET:因为数据在URL中可见,所以不适合传输敏感数据,如密码等,容易被截获或泄露。
    • POST:数据在HTTP消息主体中传输,相对于GET请求更安全,适合传输敏感信息。
  4. 幂等性

    • GET:通常是幂等的,即对同一URL的多次请求应该返回相同的结果。
    • POST:不一定是幂等的,同一POST请求可能会导致不同的结果(比如每次提交一个订单会产生一个新的订单号)。
  5. 缓存处理

    • GET:可以被浏览器缓存,因为GET请求是幂等的,通常不会对服务器数据产生影响。
    • POST:不适合被浏览器缓存,因为POST请求可能会对服务器数据进行修改或增加,缓存的数据可能不再有效。

六.forward 和 redirect 的区别?

        forward(转发)和redirect(重定向)是两种不同的请求转发机制

Forward(转发)

  • forward是服务器内部的转发机制,将请求从一个资源(通常是Servlet)传递到另一个资源(Servlet或JSP),所有操作都在服务器内部完成,客户端浏览器不知道发生了转发。

特点

  • 单次请求-响应forward是一次请求-响应过程,浏览器只发起一次请求,服务端接收请求后,将请求转发给另一个资源,再由该资源生成响应返回给浏览器。
  • URL不变:浏览器的地址栏保持不变,显示的是最初请求的URL,因为对客户端来说,只发起了一次请求。

使用场景:用户在一个表单页面填写了一些信息,然后点击提交按钮。服务器端的Servlet收到这个提交请求,处理其中的数据,然后根据处理结果决定展示给用户一个结果页面。如果这两个页面需要共享相同的请求数据(比如用户的姓名、邮箱等信息),使用forward可以直接将原始请求中的数据传递给结果页面,而无需将这些数据存储在数据库或者通过其他方式传递。(预览)

Redirect(重定向)

  • redirect是一种通过客户端浏览器的重定向机制,告知浏览器应该向新的URL发起新的请求。服务器返回一个特殊的响应码(通常是302 Found),指示浏览器重新定向到新的URL。

特点

  • 两次请求-响应redirect会触发浏览器发起两次请求-响应循环。第一次请求服务器时,服务器返回重定向响应码和新的URL;浏览器根据新URL再发起第二次请求。
  • URL改变:浏览器的地址栏会显示新的URL,用户可以看到请求已经被重定向到另一个URL。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/777688.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式Linux系统编程 — 7.2 进程的环境变量

目录 1 什么是进程的环境变量 2 环境变量的作用 3 应用程序中获取环境变量 3.1 environ全局变量 3.2 获取指定环境变量 getenv 4 添加/删除/修改环境变量 4.1 putenv()函数添加环境变量 4.2 setenv()函数 4.3 unsetenv()函数 1 什么是进程的环境变量 每一个进程都有一…

Android - Json/Gson

Json数据解析 json对象:花括号开头和结尾,中间是键值对形式————”属性”:属性值”” json数组:中括号里放置 json 数组,里面是多个json对象或者数字等 JSONObject 利用 JSONObject 解析 1.创建 JSONObject 对象,传…

快手大模型首次集体亮相,用AI重塑内容与商业生态

7月6日,在2024世界人工智能大会期间,快手举办了以“新AI新应用新生态”为主题的大模型论坛,会上,快手大模型首次集体亮相,视频生成大模型可灵、图像生成大模型可图等产品的多项新功能正式发布。 继图生视频、视频续写…

Appium启动APP时报错Security exception: Permission Denial

报错内容Security exception: Permission Denial: starting Intent 直接通过am命令尝试也是同样的报错 查阅资料了解到:android:exported | App quality | Android Developers exported属性默认false,所以android:exported"false"修改为t…

QT学习积累——如何提高Qt遍历list的效率

目录 引出Qt遍历list提高效率显示函数的调用使用&与不使用&除法的一个坑 总结自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.进行触发 自定义信号重载带参数的按钮触发信号触发信号拓展 lambda表达式返回值mutable修饰案例 引出 QT学习积累——如何提高Qt遍历list…

Springboot学习之用EasyExcel4导入导出数据(基于MyBatisPlus)

一、POM依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><m…

Kotlin中的数据类型

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

使用WinSCP工具连接Windows电脑与Ubuntu虚拟机实现文件共享传输

一。环境配置 1.首先你的Windows电脑上安装了VMware虚拟机&#xff0c;虚拟机装有Ubuntu系统&#xff1b; 2.在你的windows电脑安装了WinSCP工具&#xff1b; 3.打开WinSCP工具默认是这样 二。设置WinSCP连接 打开WinSCP&#xff0c;点击新标签页&#xff0c;进入到如下图的…

Ubuntu20.04配置TurtleBot3 Waffle Pi远程控制

这里写目录标题 0. 机器人配置1. Ubuntu20.04配置TurtleBot3 Waffle Pi远程控制1.1 TurtleBot3 Waffle Pi端配置1.2 PC端配置1.2.1 安装turtlebot3的环境配置1.2.2 创建项目并安装Turtlebot31.2.3 配置环境变量 1.3 PC端与TurtleBot3进行通信1.3.1 PC端与机器人端互PING和SSH连…

用C#调用Windows API向指定窗口发送按键消息详解与示例

文章目录 1. 按键消息的定义及功能2. 引入所需的命名空间3. 定义Windows API函数4. 定义发送消息的方法5. 获取窗口句柄6. 调用API发送按键消息7. 使用示例注意事项总结 在C#中调用Windows API向指定窗口发送按键消息是一种常见的操作&#xff0c;这通常用于自动化脚本、游戏辅…

加密货币大利好!9月降息概率突破70%!美国可能大幅降息或多次降息?

根据最新消息&#xff0c;美国9月降息的概率已经突破70%&#xff0c;这对加密货币市场来说是个利好消息。与此同时&#xff0c;美国经济表现疲软&#xff0c;可能会陷入衰退&#xff0c;联邦储备系统(Fed)接下来会不会果断采取大幅降息措施备受关注。 美国劳工统计局7月5日公布…

前端面试项目细节重难点(十)(已工作|做分享)

面试官&#xff1a;现场出需求&#xff1a;我想让一个左侧盒子可以进行拉伸、缩小、展示或隐藏这些功能&#xff0c;你会如何实现&#xff1f; 答&#xff1a;&#xff08;1&#xff09;分析问题&#xff1a;其实&#xff0c;我听到这个问题后&#xff1a; 我的第一种想法&am…

E1.【C语言】练习:用函数求两个整数的较大值

有关创建函数见&#xff1a; 12.【C语言】创建函数 写法 1&#xff1a;if语句 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int max(int a, int b) {if (a > b)return a;elsereturn b; } int main() {int a 0;int b 0;scanf("%d%d", &a,…

迎接AI新时代:GPT-5即将登场的巨大变革与应用前瞻

迎接AI新时代&#xff1a;GPT-5即将登场的巨大变革与应用前瞻 &#x1f48e;1. GPT-5 一年半后发布&#xff1a;AI新时代的来临1.1 GPT-5的飞跃&#xff1a;从高中生到博士生 &#x1f48e;2. GPT-5的潜在应用场景&#x1f48e;2.1 医疗诊断和健康管理&#x1f48e;2.2 教育领域…

生产力工具|VS Code安装及使用指南

一、VS Code介绍 &#xff08;一&#xff09;软件介绍 Visual Studio Code&#xff08;简称VS Code&#xff09;是由Microsoft开发的免费开源代码编辑器&#xff0c;适用于Windows、macOS和Linux操作系统。它支持多种编程语言&#xff0c;如JavaScript、Python、C等&#xff0…

Python爬虫获取视频

验证电脑是否安装python 1.winr输入cmd 2.在黑窗口输入 python.exe 3.不是命令不存在就说明python环境安装完成 抓取快手视频 1.在phcharm应用中新建一个项目 3.新建一个python文件 4.选择python文件,随便起一个名字后按回车 5.安装requests pip install requests 6.寻找需要的…

Selenium 切换 frame/iframe

环境&#xff1a; Python 3.8 selenium3.141.0 urllib31.26.19说明&#xff1a; driver.switch_to.frame() # 将当前定位的主体切换为frame/iframe表单的内嵌页面中 driver.switch_to.default_content() # 跳回最外层的页面# 判断元素是否在 frame/ifame 中 # 126 邮箱为例 # …

半同步主从复制

半同步主从复制的概念 半同步主从复制&#xff08;Semisynchronous Replication, SBR&#xff09;是MySQL数据库中的一种数据复制方式&#xff0c;它在异步复制的基础上增加了一定程度的同步性&#xff0c;旨在提高数据安全性&#xff0c;减少数据丢失的风险。 半同步主从复制…

自动缩放 win7 远程桌面

https://mremoteng.org/download 用这个软件&#xff0c;下载 zip 版&#xff0c;不需要管理员权限 在这里找到的&#xff0c;选票最高的一个就是 https://superuser.com/questions/1030041/remote-desktop-zoom-and-full-screen-how-win10-remote-win7-2008-2003-ho

超越YOLO! RT-DETR 实时目标检测技术介绍

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…