JavaWeb开发一 通信协议

JAVA开发中的常用通讯协议 在JAVA开发中,通讯协议是实现不同系统或组件之间数据交换的基础。随着分布式系统和微服务架构的流行,掌握常用的通讯协议对于JAVA开发者来说至关重要。本文将介绍在JAVA开发中常用的几种通讯协议,以及它们的特点和应用场景。 阅读详情

一. HTTP协议

1. HTTP介绍

    HTTP协议是Hyper Text Transfer Protocol (超文本传输协议)  

    作用: 根据这个协议把超文本(除了文字还有图片, 连接, 甚至音乐视频的文本 也就是网页)从万维网服务器传输到本地,

    HTTP是在TCP/IP协议通信协议的基础上来传数据的, 这里的数据指HTMl文件, 图片文件, 查询结果等, 不涉及数据包(packet)传输.

    HTTP协议主要规定了客户端和服务器之间的通信格式, 默认使用80端口

2. HTTP解析

    内容:

①. HTTP特点

    简单快速, 灵活, 无连接, 无状态

  简单快速: 用户要什么资源,就向服务器请求什么资源, 用户只要传请求方法和路径就可以了, 因为简单所以快速

  灵活:    HTTP允许传任何类型的数据对象

  无连接: 每次连接只处理一个请求, 处理完客户的请求, 收到客户的应答后, 就断开连接. 这样可以节省传输时间

  无状态:  HTTP协议是无状态的, HTTP协议自身不会保存请求和响应之间的通信状态, 任何两次请求之间都没有依赖关系,每个请求都是独立的.

得益于上面优点, HTTP可以更快地处理大量事务, 而且确保了协议的可伸缩性

②. HTTP报文

    HTTP报文:    请求报文, 响应报文

   请求报文组成部分: 请求行(request line), 请求头(header), 空行, 请求体

   响应报文组成部分: 状态行, 响应头部, 空行, 响应体

 请求报文:

 

     请求报文:

           1. 请求行

                  说明请求类型, 要访问的资源以及所使用的HTTP版本     (请求类型+url+HTTP版本)

                  POST  /chapter1/user.html HTTP/1.1

                 以上代码中POST代表请求方法, /chapter1/user.html 表示url   HTTP/1.1 是协议和协议版本

         2. 请求头

                由关键字/值组成, 每行一对, 关键字和值用英文冒号:分隔

                内容: 客户端请求的信息, 包含许多有关客户端环境和请求正文的有用信息

                             Host: 表示主机, 虚拟主机

                             Connection:  HTTP/1.1 增加的, 使用keepalive, 即持久连接, 一个连接可以发多个请求

                             User-Agent:  请求发送者, 兼容性以及定制化需求

       3. 空行

             最后一个请求头之后是一个空行,表示请求头已经结束, 接下来的是请求正文

       4. 请求体

             可以承载多个请求参数的数据

③HTTP请求方式

  1. GET  请求指定的页面信息, 并返回实体主体
  2. HEAD  类似于get请求, 只不过返回的响应中没有具体的内容,用于获取报头
  3. POST  向指定资源提交数据进行处理请求(例如提交表单或者上传文件).数据被包含在请求体中
  4. PUT  从客户端向服务端传送的数据取代指定的文档的内容
  5. DELETE  请求服务器删除指定的页面

  GET与POST的区别

  • GET在浏览器回退时是无害的, 而POST会再次提交请求
  • GET请求会被浏览器主动缓存, 而POST不会, 除非手动设置
  • GET请求参数会被完整保留在浏览器历史记录里, 而POST中的参数不会被保留
  • GET请求在URL中传送的参数是有长度限制的, 而POST没有限制
  • GET参数通过URL传递, POST放在Requestbody中

④HTTP状态码

  状态码由3位数字组成, 第一个数字定义了响应的类别

      1xx:  指示信息--表示请求已接收, 继续处理

      2xx:  成功--表示请求已被成功接收, 理解, 接受

      3xx:  重定向--要完成请求必须进行跟进一步的操作

      4xx:  客户端错误--请求有语法错误或请求无法实现

      5xx:  服务端错误--服务器未能实现合法的请求

⑤持久连接

    HTTP协议的初始版本中, 每进行一次HTTP通信就要断开一次TCP连接.以前都是传输容量很小的文本, 而现在随着HTTP的普及,文档包含了大量图片.如果使用浏览器访问一个包含多张图片的HTML页面时, 在发送请求访问HTML页面资源的同时, 也会请求该HTML页面里包含的其他资源. 每次的请求都会造成无谓的TCP连接建立和断开, 增加通信量的开销.

解决上诉TCP连接问题,的方法便是HTTP/1.1持久连接(HTTP Persistent Connections)

持久连接的特点是: 只要任意一端没有明确提出断开连接, 则保持TCP连接状态

持久连接的好处在于减少了TCP连接的重复建立和断开所造成的额外开销, 减轻了服务器的负载. 另外, 减少开销的那部分时间,使HTTP请求和响应能更早结束. 这样Web页面显示速度也就相应的提高了.

在HTTP/1.1中所有连接都是默认持久连接

⑥管线化

  持久连接使得多数请求以管线化方式发送成为可能. 以前发送请求后需等待并受到响应, 才能发送下一个请求. 管线化技术出现后, 不用等待也可以发送下一个请求.

  这样就能够做到同时并行发送多个请求, 而不需要一个接一个等待响应了. 通俗地讲, 请求打包一次传输过去, 响应打包一次传递回来. 管线化的前提是持久连接.

比较:

  未使用持久连接:   

        建立TCP连接->HTTP请求1->HTTP响应1->断开TCP连接->建立TCP连接->HTTP请求2->HTTP响应2->断开TCP连接

  使用持久连接未使用管线化:

        建立TCP连接->HTTP请求1-HTTP响应1->HTTP请求2->HTTP响应2->断开TCP连接

  使用持久连接和管线化:

       建立TCP连接->HTTP请求1->HTTP请求2->HTTP响应1->HTTP响应2->断开TCP连接

二. HTTPS协议

1. HTTP的不足

  • 通信使用明文(不加密), 可能会被窃听
  • 不验证通信方的身份, 因此有可能遭遇伪装
  • 无法证明报文的完整性, 所以报文有可能会遭到篡改

2. 什么是HTTPS协议

  添加了加密和认证机制的HTTP就是HTTPS.使用HTTPS通信的网站在浏览器上网址左边有一个锁?符号.

3. HTTPS和HTTP的比较

可见, HTTPS并非是应用层的一种新协议. 只是HTTP通信接口部分使用了SSL(Secure Socket Layer, 安全套接层) 或TLS(Transport Layer Security)协议替代而已.

采用SSL后, HTTP就拥有了HTTPS的加密, 证书和完整性保护这些功能. 需要注意的是: SSL是独立于HTTP协议的.

4. HTTPS通信过程中的加密技术

  加密技术是HTTPS组成的重要技术. 常见加密技术有: 共享密钥加密和公开密钥加密

①共享密钥加密(对称密钥加密)

  共享密钥加密又叫对称密钥加密, 加密和解密使用同一个密钥.加密算法是公开的, 密钥保密, 加密和解密都要用到密钥.

5个常用对称加密算法: DES, DESede, AES, IDEA, PBE

②公开密钥加密(非对称密钥加密)

  公开密钥加密使用一对非对称密钥: 私有密钥(private key) 和 公有密钥(public key).

  私有密钥在自己手里, 共有密钥可以随意发布.

 例: A有公钥密钥    B有公钥密钥

 B要发信息给A, A把A公钥给B, B用A公钥加密, 密文需要A密钥解密, A收到后用A密钥解密

HTTPS采用混合加密机制

   混合加密机制能够将两种加密方式各自的优势结合起来,即保证了通信过程中的安全性,又保证了通信过程的效率。通常,在交换密钥环节使用非对称密钥加密方式,之后的建立通信交换报文阶段则使用对称密钥加密方式。

   但是这样仍然有个问题就是:这个public key是否就是真正的public key,有不有可能在传输过程中被攻击者替换了.于是为了解决这个问题,出现了第三方机构--数字证书认证机构(CA, Certificate Authority).它站在客户端与服务器都可信赖的立场上,为服务器端颁发证明“这个公开密钥确实时那个服务器的”公开密钥证书,同时对该公开密钥进行数字签名。客户端在在收到服务器公钥时会对公钥上的数字签名进行验证,如果验证通过,客户端便可明确两件事:一,认证服务器的公开密钥的是真实有效的数字证书认证机构。二,服务器的公开密钥是值得信赖的。


5. 客户端证书

HTTPS 中还可以使用客户端证书。以客户端证书进行客户端认证,证明服务器正在通信的对方始终是预料之内的客户端,其作用跟服务器证书如出一辙。
在PC端首次登陆支付宝、网上银行等网页时,其是不是让你安装一些东西?没错,这些“东西”就是支付宝、银联等提供的客户端证书。通过客户端证书,服务器就能知道它正在响应的“确实是那个客户端”,这样就保证了双方通信的安全性。

 

 

 

JavaWeb系列八: WEB 开发通信协议(HTTP协议) JavaWeb系列八: WEB 开发通信协议-HTTP协议 阅读详情

相关推荐

李兴华亲授JavaWeb开发全体系经典笔记

聊了这么多底层机制,最后想说的是:掌握这些知识的目的,不是为了炫耀“我会手写Servlet”,而是为了让我们的应用更可靠、更高效。当你发现页面加载慢,你能想到可能是HTTP/1.1的队头阻塞;当用户投诉登录状态莫名其妙消失,你知道要去检查session超时配置;当上传大文件失败,你清楚该调整哪些Tomcat参数……这才是一个专业工程师应有的素养。技术日新月异,但解决问题的思路是相通的。保持好奇心,深入理解每一层抽象背后的真相,你就能在任何框架浪潮中稳如泰山。

weixin_36047538的博客 746

Java通信原理(1)——TCP/IP协议

TCP/IP Java套接字 Java Socket编程模型

qq_64037280的博客 2053

二元交叉熵:分类模型概率校准的数学根基

二元交叉熵(BCE)是二分类任务中实现概率校准的核心损失函数,其本质源于最大似然估计与KL散度,确保模型输出具备真实可解释的概率意义。相比均方误差(MSE)或Hinge Loss,BCE强制优化预测分布与真实伯努利分布之间的信息差异,使p=0.8真正对应约80%的正例发生率,支撑风控、医疗、推荐等高信度场景的阈值决策。它不只影响训练收敛,更决定部署后概率的业务可信度——这正是Focal Loss等变体无法替代其基础地位的根本原因。理解BCE,就是理解分类模型如何从‘打分器’进化为‘概率契约签署者’。

congli3478的博客 1333

Java基础 网络通信协议

》协议(tcp/ip) TCP/IP(Transmission Control Protocol/Internet Protocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议,Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的 网络协议的理解 ...

sun1995sun的博客 716

详解STM32F407双重ADC同步采集与DMA传输的配置技巧及实战应用

本文详细解析了STM32F407双重ADC同步采集与DMA传输的配置技巧及实战应用。通过CubeMX配置、代码实现和常见问题解决方案,帮助开发者高效实现多通道数据同步采集,提升工业自动化和嵌入式系统的数据采集效率与精度。

ii567的博客 364

【明道云】如何让用户可以新增但不能修改记录

在设计表单时直接将字段设置只读是不行的。字段设置只读将会直接让界面上此字段的前端组件不可编辑。

每日出拳老爷子的博客 701

Java网络协议

Java网络

qq_50724390的博客 1743

【VisDrone数据集】YOLOX训练VisDrone数据集步骤与结果

YOLOX训练VisDrone数据集步骤与结果。

Gorgeous_wxd 2233

22.1 网络编程:软件结构、网络通信协议、UDP与TCP协议、(网络编程三要素:协议、ip地址、端口号)、查看ip地址、检测网络是否连通、判断ip是否可用

目录 1、网络编程 软件结构 网络通信协议 TCP/IP协议 协议分类 UDP TCP 网络编程三要素 协议 IP地址 列:查看本机ip地址 端口号 2、TCP通信程序 客户端Socket类 构造方法 成员方法 客户端ServerSocket类 构造方法 成员方法 列:客户端向服务器发送数据 列:从客户上传文件到服务器(基础版) 列:从客户上传文件到服务器(优化版) 模拟B\S服务器 列:服务器程序中字节输入流可以读取到浏览器发来的请求信息 列:模拟B\S服

Birdlun的博客 942

5.7 医疗 Agent 实战:构建一个懂“望闻问切”的智能医疗咨询助手

本文介绍了如何构建一个智能医疗咨询助手项目,通过LoRA微调和vLLM部署技术,将通用大模型改造为专业"AI皮肤科医生"。项目采用精简架构:Streamlit前端直接与vLLM推理服务通信,重点展示了微调模型在专业性、安全性和同理心方面的显著提升。实施步骤包括:部署微调模型、构建交互界面,并通过对比测试验证微调效果。项目强调AI仅作为咨询助手而非医生替代品,始终以引导用户寻求专业医疗帮助为核心目标,体现了负责任AI应用的关键原则。

yonggeit的博客 2962

Python自动化脚本:模拟鼠标键盘保持电脑在线状态

在计算机自动化领域,模拟用户输入是一项基础且实用的技术,其核心原理是通过程序生成鼠标或键盘事件来与操作系统交互。这项技术的价值在于能够自动化重复性操作,提升工作效率,并解决特定场景下的系统交互问题。PyAutoGUI作为Python生态中广泛使用的自动化库,封装了跨平台的底层API调用,为开发者提供了简洁统一的接口来实现输入模拟。在实际工程实践中,这类技术常应用于自动化测试、远程办公辅助、数据抓取等场景,帮助用户保持系统活跃状态,防止因无操作导致的锁屏或休眠中断任务。通过合理配置移动间隔和随机化模式,可以更

weixin_28713299的博客 578

JAVAweb开发(一)javaweb概述

JAVAweb开发(一)javaweb概述 一.搭建云服务器 可以看我的帖子https://blog.youkuaiyun.com/qq_43445553/article/details/107342445 二.URL,URL,URI 首先我们要弄清楚一件事:URL和URN都是URI的子集。 换言之,URL和URN都是URI,但是URI不一定是URL或者URN。为了更好的理解这个概念,看下面这张图片。 关于URL: URL是URI的一种,不仅标识了Web 资源,还指定了操作或者获取方式,同时指出了主要访问机制和

qq_43445553的博客 497

《用 R 探索医药数据科学》目录(持续更新,已超 250 万字)|订阅前说明

我们重磅推出《用 R 探索医药数据科学》专栏!本文作为专栏【订阅后首读】的核心内容,堪称开启学习之旅的 “入门钥匙”,也是整个专栏最关键的一篇指引文。文中不仅完整呈现了专栏 9 大核心篇章 + 问答板块的详细目录,更囊括了订阅后必知的核心要点 —— 从阅读设备、实操工具的使用建议,到学习路径、更新规则的清晰说明,再到问题反馈、感悟记录的实用方法,一站式帮你摸清专栏框架、找准学习方向。建议各位订阅者务必认真阅读、吃透内容,这能让你后续的学习更高效、少走弯!

MD Code 1万+

javaWEB安全开发基本原则

javaWEB安全开发基本原则 最小化设计 用户输入最小化,尽可能少地使用用户的输入 用户输入范围最小化,过滤参数时尽量使用白名单策略 用户权限最小化,只对用户进行所需的最少授权 输出数据字段最小化,限制数据输出并且不输出业务无关的数据 所有(客户端)输入都不可信 通信协议中从客户端传来的一切数据 从数据库/文件/网络等,一些不直接来源于用户,但又不是程序中定义好的常量数据 安全编...

复利人生的博客 1万+

YOLOv9改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计

实时检测器架构的轻量级设计GsConv。

Limiiiing的博客 1364

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

JavaWeb

JavaWeb是指用Java技术来解决Web互联网领域的技术栈。Web客户端和Web服务端两部分Web开发:Web(World Wide Web),即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面静态WebHTML、CSS早些年,提供给所有人观看的数据始终不会发生变化!动态web现在,几乎所有的网站都是动态Web的。

记录学习历程 7684

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

JavaWeb——基础知识

HTTP协议(超文本传输协议) Java Web 服务器 web服务器 JavaWeb项目结构!!! servlet和jsp对比 servlet servlet单实例多线程理解 JDBC数据库连接池 连接池使用的好处

weixin_45864705的博客 5505

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JavaWeb[总结]

B: browser(浏览器, 种类太多 ff, chrome, ie, edge,)S: Server(服务端, 考虑很多)示意图对 BS 的解读(1) 兼容性 , 因为浏览器的种类很多,发现你写的程序,在某个浏览器会出现问题,其它浏览器正常(2) 安全性, 通常情况下,BS 安全性不如 CS 好控制(3) 易用性, BS 好于 CS, 浏览器电脑有(4) 扩展性, BS 相对统一,只需要写 Server什么是 Servlet。

知不足而奋进 望远山而前行 795

初识javaweb

javaweb,顾名思义,分为java和web,而web又包括前端和数据库 1.基本概念 1.1前言 web开发: -----web,网页的意思,表示我们可以从互联网上拿到一定的资源。 例如www.baidu.com是一个web页面 ----静态web(html,css)提供给所有人看的数据始终不会发生变化 ----动态web 提供给所有人看的数据会发生变化!每个人在不同的时间,不同的地点看到的信息各不相同。 淘宝,几乎是所有的网站都是动态web,(动态web在淘宝上深有体会)几乎是所有的

超级程序诞生的博客 3116

JavaWeb基础学习(一)--javaweb概述

一、架构 javaweb是使用Servlet开发B/S架构的WEB应用程序。 C/S 与 B/S 区别,有如下八个方面的不同:1.硬件环境不同:    C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.   B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息管理. 有比C/S更强的适应范围, 一般只要...

七宝.博客 576

JavaWeb核心①(概述、HTTP)

文章目录前置知识:Web概述Web和JavaWeb的概念JavaWeb技术栈B/S架构静态资源动态资源数据库HTTP请求数据格式响应数据格式附:响应状态码状态码大类常见的响应状态码 前置知识:Web概述 Web和JavaWeb的概念 Web是全球广域网,也称为万维网(www),能够通过浏览器访问的网站。 那么JavaWeb又是什么呢?顾名思义JavaWeb就是用Java技术来解决相关web互联网领域的技术栈。 JavaWeb技术栈 B/S架构 B/S 架构:Browser/Server,浏览器/服务器 架

十八岁讨厌编程的博客 576

JavaWeb安全与防护

1.背景介绍 JavaWeb安全与防护是一项至关重要的技术领域。随着互联网的发展,JavaWeb应用程序的规模不断扩大,其安全性也成为了关键的考虑因素。JavaWeb安全与防护涉及到多个领域,包括网络安全、应用安全、数据安全等。本文将从多个角度深入探讨JavaWeb安全与防护的核心概念、算法原理、实例代码以及未来发展趋势。 2.核心概念与联系 JavaWeb安全与防护的核心概念包括: 网...

AI天才研究院 1565

Javaweb三大组件详解

目录Servlet(程序)如何写 Servlet(五种方法)如何让浏览器访问ServletServle 特性:ServletConfigServlet 相关类之 ServletRequest 和 Servletresponse 对象HttpServletFilter(过滤器)Listener(监听器)事件源:三大域监听器实现类:小结 JavaWeb三大组件(Servlet、Filter、Listener) Servlet(程序) Servlet 是 JavaWeb 的三大组件之一,它属于动态资源。 Serv

qq_58372242的博客 2126

JavaWeb复习

JavaWeb知识总体复习

心有—林夕的博客 1239

java 服务端 和 javaweb_JavaWeb世界之JavaWeb的由来和知识点

什么是 Java WebJava语言能长期霸占语言排行榜一个重要的原因就是强大的web开发能,web开发是java的基石(在EJB推出的时候当时的Sun用基石来描述EJB),所以了解java web开发原理是非常重要的Web开发的历史早期的web是非常简单的结构,用户发出请求(request),服务器给出回应(response),这个时期的web应用,我们称为web site(网站),特点是一系列...

weixin_42525569的博客 171
上一篇: JSON
下一篇: C++ 复习总结
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值