【Java】JavaWEB核心要点总结:64

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,数据同步 1个月
简介: 1. TCP 和 UDP的异同TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种常见的传输层协议,用于在网络中进行数据传输。它们之间主要有以下异同:可靠性:TCP 是一种面向连接的可靠协议,它可以保证数据传输的可靠性,并通过重传机制和流量控制来保证数据的正确到达。而 UDP 则是一种无连接的不可靠协议,不提供确认、重传和流量控制等可靠性保证。速度:由于 TCP 的可靠机制和复杂的协议头部,它的传输速度相对较慢;而 UDP 虽然不具有可靠性,但协议头部比 TCP 简单,传输速度较快。

1. TCP 和 UDP的异同


TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种常见的传输层协议,用于在网络中进行数据传输。它们之间主要有以下异同:


可靠性:TCP 是一种面向连接的可靠协议,它可以保证数据传输的可靠性,并通过重传机制和流量控制来保证数据的正确到达。而 UDP 则是一种无连接的不可靠协议,不提供确认、重传和流量控制等可靠性保证。


速度:由于 TCP 的可靠机制和复杂的协议头部,它的传输速度相对较慢;而 UDP 虽然不具有可靠性,但协议头部比 TCP 简单,传输速度较快。


连接:TCP 是面向连接的,需要三次握手建立连接,建立连接后才能进行数据传输。而 UDP 则是无连接的,发送方只需知道目的地址和端口号,即可向其中发送数据。


适用场景:TCP 通常应用于各种需要确保数据完整性、稳定性的应用程序,如文件传输、电子邮件、网页浏览、远程登录等;而 UDP 则适用于实时性要求高、延迟较小的应用程序,例如音视频传输、在线游戏等。


实现复杂度:TCP 协议本身具有较高的实现复杂度,需要手动实现一些具体的细节;而 UDP 相对简单,不需要很多额外的处理。


在选择 TCP 或 UDP 作为传输协议时,应根据具体的应用需求和性能要求来选择使用哪种协议。如果需要可靠地传输数据或进行大文件传输,则应选择 TCP;如果需要快速地进行实时数据传输,则应选择 UDP。


2. TCP为什么要三次握手 两次不行吗


TCP协议采用三次握手的原因在于确保双方之间建立可靠的连接,避免出现类似于以下的数据包重复发送的情况:


客户端发送连接请求报文段 SYN。但是由于网络等原因导致该报文未及时到达服务器,客户端无法获得确认信息。


服务端收到客户端请求后发送了确认信息回应(SYN+ACK码),但是由于网络等原因导致该信息还未及时到达客户端,此时服务端会启动超时重传机制,重传相同的确认信息。


客户端接收到该确认信息,但此时客户端已经向服务端发送了其他请求或已关闭连接,不再响应认证信息。然而,服务端并不知道客户端已经关闭连接,会一直发送确认信息,这样可以占用过多的网络资源,影响网络性能。


如果只需要两次握手,那么在以上情况下就有可能会发生错误:双方都进入到了ESTABLISHED状态,但实际上客户端无意与服务端通信,使服务端的资源白白浪费了。所以,三次握手的步骤可以确保双方建立可靠的连接,并避免类似的问题出现,从而更好地保障数据传输的可靠性和安全性。

3. get post put 请求方式有什么区别

GET、POST和PUT都是常见的HTTP请求方法,主要区别如下:


GET:一般用于获取资源(特别是多次访问同一资源),通过 URL 传递参数,对数据没有修改操作,并且通常不支持发送大量数据。


POST:一般用于提交表单数据或者上传文件等请求,将数据置于请求体中,对服务器的数据做出改变,并且可以发送大量数据。


PUT:一般用于更新资源,是幂等的操作。可以通过请求内容来更新指定的资源,例如上传新版本的文件到服务器。


总结:


GET 请求是一种简单的数据获取方式,且速度较快,但安全性较低,不能用来传递敏感信息。经常被用作请求静态资源或者页面,从而加快网页展示速度。


POST 请求传输更大的数据和用户信息,有更好的安全性,同时也可用于创建更新资源。


PUT 请求同样也可用于更新资源,但更强调的是替换已存在的资源,如更新一个文件。


虽然每个方法都有其自身特性和优势,但在实际使用时需要根据具体的场景,选择合适的HTTP方法进行数据的传输和请求,以对网络的负载和性能影响最小化。

4. 什么是XXS攻击 如何避免

跨站脚本攻击(Cross-site scripting attack, XSS攻击)是一种常见的Web攻击,攻击者利用漏洞注入恶意的脚本代码,在用户浏览器上运行,从而窃取或篡改用户信息,以达到攻击目的。


以下是一些可行的避免措施:


输入检查和过滤:应对用户输入进行检查和过滤,特别是对 HTML 和 JavaScript 等敏感符号进行转义处理。可以通过使用一些现成的库来实现安全地处理数据。


设置HTTP头中的X-XSS-Protection属性:该属性用于开启或关闭XSS筛选功能,并指定浏览器的反射性XSS保护级别。设置该属性能够帮助浏览器检测和防御潜在的XXS攻击。


使用Content-Security-Policy(CSP):CSP可以控制Web页面的资源加载,使其只能加载域名白名单内的资源文件,从而有效地防止执行恶意脚本的情况出现。


安全编码和安全管理:在系统设计开发和维护阶段,应严格执行安全编码和安全管理标准规范,及时修补已知漏洞和弱点,包括但不限于更新后台管理系统、强化用户密码等。


XXS攻击对于现代Web应用来说是一个普遍的问题。应采取一系列适当的技术和管理措施,以防止这种类型的攻击和恶意代码注入。

5. 什么是 CSRF 攻击,如何避免

跨站请求伪造攻击 (Cross-Site Request Forgery, CSRF) 是一种常见的Web攻击,攻击者通过某种方式诱导用户在登录了某个网站后,进入一个恶意网站,利用漏洞来实现对登录状态的利用。


以下是一些可行的避免措施:


防止非法请求:在程序中进行验证,只接受来自正式页面的请求,设定一个验证机制 ,比如 唯一Token之类的方法,这样可以减少被CSRF攻击的可能性。


关闭第三方 Cookie:在应用程序上关闭第三方Cookie的使用(最好禁用该功能),可以有效地避免来自恶意 JavaScript 的操作。


对敏感操作进行二次验证:对于敏感操作,加入二次验证 (如:输入验证码或 token),以提高安全性.


安全编码和安全管理:在Web应用的设计、开发和维护过程中,应严格执行安全编码和安全管理标准规范,及时修补已知漏洞和弱点。同时,其他通用的防御措施(如CSP)也可参考。


通过尽量避免信任外部输入及严格限制用户权限,并采取以上几点防范措施,可以有效地降低CSRF攻击的风险。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
6月前
|
存储 前端开发 JavaScript
基于JavaWeb实现停车场管理系统
基于JavaWeb实现停车场管理系统
109 1
|
6月前
|
前端开发 JavaScript Java
图书借阅管理平台|基于JavaWeb实现图书借阅系统
图书借阅管理平台|基于JavaWeb实现图书借阅系统
138 1
|
3月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
480 37
|
2月前
|
前端开发 Java 应用服务中间件
Javaweb学习
【10月更文挑战第1天】Javaweb学习
37 2
|
2月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
71 5
|
6月前
|
前端开发 Java 关系型数据库
JavaWeb开发简介
JavaWeb开发简介
65 0
|
3月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
3月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
124 2
|
3月前
|
SQL JSON JavaScript
JavaWeb基础9——VUE,Element&整合Javaweb的商品管理系统
Vue 指令、生命周期、this和$、vue脚手架进行模块化开发/ElementUI框架、综合案例,element商品列表展示增删改查
JavaWeb基础9——VUE,Element&整合Javaweb的商品管理系统
|
6月前
|
SQL Java 数据库连接
JavaWeb Mapper代理开发
JavaWeb Mapper代理开发
下一篇
DataWorks