Java架构师之路三、网络通信:TCP/IP协议、HTTP协议、RESTful API、WebSocket、RPC等。
目录
TCP/IP协议:
HTTP协议:
RESTful API:
WebSocket:
RPC:
UDP:
HTTPS:
上篇:Java架构师之路二、数据库:SQL语言、关系型数据库、非关系型数据库、数据一致性、事务管理等。-CSDN博客
下篇:Java架构师之路四、分布式系统:分布式架构、分布式数据存储、分布式事务、分布式锁、分布式缓存、分布式消息中间件、分布式存储等。-CSDN博客
TCP/IP协议:
TCP/IP协议是互联网通信中最常用的协议组合,它由两个部分组成:传输控制协议(TCP)和Internet协议(IP)。下面对TCP/IP协议进行详细解释:
-
IP协议(Internet Protocol):IP协议是互联网通信的基础协议,它负责将数据包从源主机传输到目标主机。IP协议使用IP地址来标识主机和网络,通过路由选择算法来确定数据包的传输路径。
-
TCP协议(Transmission Control Protocol):TCP协议是一种可靠的传输协议,它建立在IP协议之上。TCP协议通过提供可靠的、面向连接的数据传输,确保数据在网络中的可靠传输。TCP协议使用端口号来标识应用程序,通过三次握手建立连接,通过流控制和拥塞控制来维护网络的稳定性。
-
TCP/IP协议栈:TCP和IP协议是互联网通信的核心协议,它们与其他协议(如HTTP、FTP、SMTP等)一起构成了TCP/IP协议栈。TCP/IP协议栈是一个多层次的协议体系,从物理层、数据链路层、网络层、传输层到应用层,每一层都有特定的功能和协议。
-
数据包的传输过程:在TCP/IP协议中,数据被拆分成小的数据包(IP数据报),每个数据包包含源IP地址、目标IP地址、协议类型、数据等信息。数据包通过网络传输,经过路由器等网络设备,根据IP地址找到目标主机,然后通过TCP协议进行可靠的数据传输。
-
TCP/IP协议的特点:TCP/IP协议具有可靠性、灵活性和可扩展性的特点。它能够适应多种网络环境和应用需求,支持全球范围的互联网通信。
TCP/IP协议是互联网通信的基础,几乎所有的网络应用都依赖于TCP/IP协议进行数据传输。通过使用TCP和IP协议,可以在全球范围内实现可靠的数据传输和通信。
HTTP协议:
HTTP协议是一种应用层协议,用于在Web浏览器和Web服务器之间传输数据。HTTP协议的主要功能是传输超文本标记语言(HTML)文件,但它也可以用于传输任何类型的数据。HTTP协议是建立在TCP/IP协议之上的,它使用TCP/IP协议的传输机制来传输数据。
HTTP协议的特点:
-
无连接:HTTP协议使用短暂的连接来传输数据,每次连接只能传输一次请求和响应,连接关闭后就不能再次使用。这种无连接的方式可以减少服务器的负担,但它也会增加每次连接的开销。
-
无状态:HTTP协议是无状态的,服务器不会记录客户端的状态信息。这意味着每个请求都是独立的,服务器不能根据以前的请求来处理当前的请求。
-
请求-响应模式:HTTP协议使用请求-响应模式来传输数据。客户端向服务器发送请求,服务器接收请求并返回响应。
HTTP协议的请求格式:
-
请求行:包括请求方法、请求URL和HTTP协议版本。
-
请求头部:包括请求的一些附加信息,如请求的User-Agent、Accept-Language等。
-
请求正文:包括请求的具体内容,如表单数据、文件等。
HTTP协议的响应格式:
-
状态行:包括HTTP协议版本、状态码和状态码的解释。
-
响应头部:包括响应的一些附加信息,如Server、Date等。
-
响应正文:包括响应的具体内容,如HTML页面、图片等。
HTTP协议的请求方法:
-
GET:用于获取资源。
-
POST:用于提交数据。
-
PUT:用于更新资源。
-
DELETE:用于删除资源。
-
HEAD:与GET方法类似,但不返回响应正文,只返回响应头部。
-
OPTIONS:用于查询服务器支持的HTTP方法。
HTTP协议的状态码:
-
1xx:信息提示,如100 Continue。
-
2xx:成功,如200 OK。
-
3xx:重定向,如301 Moved Permanently。
-
4xx:客户端错误,如404 Not Found。
-
5xx:服务器错误,如500 Internal Server Error。
HTTP协议的应用:
HTTP协议是Web应用程序的基础,它被广泛应用于网站开发、Web服务、移动应用等领域。HTTP协议的优点是简单、灵活、可扩展性强,但它也存在一些缺点,如安全性较差、性能不够高效等。为了解决这些问题,人们开发出了许多基于HTTP协议的扩展,如HTTPS、SPDY等。
RESTful API:
RESTful API是一种基于REST(Representational State Transfer)原则设计的API接口。它使用HTTP协议中的请求方法(GET、POST、PUT、DELETE等)和状态码(200、404、500等)来表示资源的状态和操作,使得API接口具有简单、灵活、可扩展、易于开发等优点。
RESTful API的设计原则:
-
资源定位:每个资源都由一个唯一的URI(统一资源标识符)来标识,通过URI来定位资源。
-
统一接口:使用标准的HTTP请求方法(GET、POST、PUT、DELETE等)和状态码(200、404、500等)来表示资源的状态和操作。
-
无状态:每个请求都是独立的,服务端不会记录客户端的状态信息,使得服务端更加简单和可扩展。
-
可缓存:服务端可以使用HTTP协议中的缓存机制来提高性能和可扩展性。
-
分层系统:客户端不需要知道服务端的内部结构,服务端可以使用多层结构来提高可扩展性和安全性。
RESTful API的优点:
-
简单、灵活、可扩展:RESTful API的设计原则使得它具有简单、灵活、可扩展等优点,使得开发人员可以更加快速、高效地开发API接口。
-
易于理解、调试、测试:RESTful API的设计原则使得它的接口具有良好的可读性和可测试性,使得开发人员可以更加方便地理解、调试、测试API接口。
-
支持多种数据格式:RESTful API支持多种数据格式,如JSON、XML等,使得开发人员可以根据需要选择合适的数据格式。
-
与HTTP协议兼容:RESTful API与HTTP协议兼容,使得它可以使用HTTP协议中的各种特性,如缓存、安全性等,提高API接口的性能和安全性。
RESTful API的应用:
RESTful API被广泛应用于Web应用程序、移动应用程序、云计算等领域。它是一种基于开放标准、简单、可扩展的API设计风格,使得开发人员可以更加高效、快速地开发API接口,同时也提高了API接口的可读性、可测试性、可维护性和可扩展性。
WebSocket:
WebSocket是一种全双工通信协议,它建立在HTTP协议之上,通过在客户端和服务器之间建立持久连接,实现实时通信。WebSocket协议的主要特点是低延迟、高效率、易于开发和实现,因此被广泛应用于实时通信、在线游戏、在线视频等领域。
WebSocket协议的工作原理:
-
客户端向服务器发送WebSocket协议升级请求,请求中包含了Upgrade、Connection、Sec-WebSocket-Key等字段。
-
服务器收到升级请求后,返回升级响应,响应中包含了Upgrade、Connection、Sec-WebSocket-Accept等字段。
-
客户端收到升级响应后,将连接升级为WebSocket连接,此时客户端和服务器之间建立了持久连接。
-
客户端和服务器之间可以通过WebSocket连接进行双向通信,客户端和服务器可以随时发送和接收消息。
WebSocket协议的优点:
-
低延迟:WebSocket协议使用持久连接,可以避免频繁建立和关闭连接,从而减少了通信的延迟。
-
高效率:WebSocket协议采用二进制传输,可以减少数据传输的大小,提高传输效率。
-
易于开发和实现:WebSocket协议的API简单、易于使用,开发人员可以快速地实现WebSocket应用程序。
-
支持跨域通信:WebSocket协议支持跨域通信,可以在不同的域之间进行通信。
WebSocket协议的应用:
WebSocket协议被广泛应用于实时通信、在线游戏、在线视频等领域。它可以提供低延迟、高效率的通信服务,使得开发人员可以快速地实现实时通信和在线游戏等应用程序。同时,WebSocket协议也支持跨域通信,可以方便地在不同的域之间进行通信。
RPC:
RPC(Remote Procedure Call,远程过程调用)是一种基于网络的通信协议,它允许程序在不同的计算机上进行通信和调用远程的程序或函数。RPC协议的主要目的是使得分布式系统中的应用程序能够像本地程序一样调用远程程序,从而方便开发人员进行分布式应用程序的开发。
RPC协议的工作原理:
-
客户端调用本地的Stub(存根)函数,Stub函数将请求打包成网络消息,通过网络发送给服务端。
-
服务端接收到消息后,将消息解包,调用本地的实际函数进行处理,并将处理结果打包成网络消息,通过网络发送给客户端。
-
客户端接收到服务端的响应消息后,将消息解包,得到处理结果,并返回给调用者。
RPC协议的优点:
-
简单、易于理解和使用:RPC协议的调用方式类似于本地函数调用,使得开发人员可以快速地上手。
-
跨平台、跨语言:RPC协议可以支持不同的操作系统和编程语言之间的通信,使得分布式系统中的应用程序可以互相调用。
-
高效、低延迟:RPC协议采用二进制传输,可以减少数据传输的大小,提高传输效率,同时也可以避免频繁的网络通信,从而减少通信的延迟。
-
可扩展、可定制化:RPC协议可以根据需要进行扩展和定制化,使得开发人员可以根据具体的应用场景进行优化。
RPC协议的应用:
RPC协议被广泛应用于分布式系统中的应用程序,如微服务架构、云计算、大数据处理等领域。它可以使得不同的应用程序之间可以互相调用,从而实现功能的共享和复用。同时,RPC协议也可以提供高效、低延迟的通信服务,使得分布式系统中的应用程序可以快速地响应用户请求。
UDP:
UDP协议是一种不安全的协议,因为它没有提供加密和身份认证的功能。UDP协议主要用于实时的数据传输,如音视频数据,因为它具有低延迟、高效率的特点,但是它也存在安全性的问题。
UDP协议的不安全性主要表现在以下几个方面:
-
明文传输:UDP协议采用明文传输,容易被攻击者窃取和篡改数据。
-
没有身份认证:UDP协议没有提供身份认证的功能,使得攻击者可以冒充其他用户进行通信。
-
容易受到DoS攻击:UDP协议没有流量控制和拥塞控制的功能,容易被攻击者利用发送大量的垃圾数据包进行DoS攻击。
虽然UDP协议存在安全性的问题,但是它在实时数据传输方面具有很大的优势,因此在游戏、视频会议等领域得到了广泛的应用。为了解决UDP协议的安全性问题,人们可以采用加密、身份认证、流量控制等技术来增强其安全性,如DTLS协议、SRTP协议等。
HTTPS:
HTTPS(HyperText Transfer Protocol Secure)是一种加密的通信协议,用于在计算机网络上安全地传输数据。它是基于HTTP的通信协议,通过使用SSL(Secure Socket Layer)或TLS(Transport Layer Security)协议来加密数据传输,以确保通信的安全性和隐私。
在HTTPS通信中,数据在传输过程中经过加密,这意味着即使被拦截,攻击者也无法轻易窃取或篡改通信内容。此外,HTTPS还通过数字证书验证了通信双方的身份,防止中间人攻击和伪装。通常,HTTPS使用公钥加密以及对称密钥加密相结合的方式,以确保数据的机密性和完整性。
在建立HTTPS连接时,客户端和服务器之间会进行握手过程,这包括以下步骤:
- 客户端发送一个请求给服务器,请求建立安全连接。
- 服务器返回其SSL证书,其中包含公钥和其他相关信息。
- 客户端验证证书的有效性,并生成一个用于对称加密的密钥。
- 客户端使用服务器的公钥加密该密钥,并发送给服务器。
- 服务器使用自己的私钥解密得到的密钥。
- 客户端和服务器双方都获得了共享的对称密钥,用于后续通信的加密和解密。
使用HTTPS能够有效地保护用户的隐私数据,防止恶意攻击者的窃听和篡改。因此,现如今,大多数网站都采用HTTPS协议来保护用户数据的安全。
相关文章:
Java架构师之路三、网络通信:TCP/IP协议、HTTP协议、RESTful API、WebSocket、RPC等。
目录 TCP/IP协议: HTTP协议: RESTful API: WebSocket: RPC: UDP: HTTPS: 上篇:Java架构师之路二、数据库:SQL语言、关系型数据库、非关系型数据库、数据一致性、事…...

【C++】笔试训练(九)
目录 一、选择题二、编程题1、另类加法2、走方格的方案数 一、选择题 1、某函数申明如下 void Func(int& nVal1);有int a,下面使用正确的为() A Func(a) B Func(&a) C Func(*a) D Func(&(*a)) 答案:A 2、C语言中,类…...

模板注入 [BJDCTF2020]Cookie is so stable1
打开题目 有flag页面,有Hint页面 这里题目有提示,突破口是在cookie上面 经过测试发现有ssti注入: 抓包 判断模板注入类型的办法 输入 {{7*‘7’}} 回显49 输入{{7*‘7’}},返回49表示是 Twig 模块 输入{{7*‘7’}}࿰…...
2-18算法习题总结
二分查找问题 [COCI 2011/2012 #5] EKO / 砍树 题目描述 伐木工人 Mirko 需要砍 M M M 米长的木材。对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍伐森林。不过,Mirko 只被允许砍伐一排树。 Mirko 的伐木…...
【软考高项】【英语知识】-- 单词积累
目录 一、常见计算机技术词汇 二、项目管理词汇 2.1 十大知识域 2.2 五大过程组 2.3 49个子过程 2.4 工具和技术汇总 2.5 输入和输出汇总 一、常见计算机技术词汇 序号中文英文1云计算Cloud computing2云存储Cloud storage3云服务Cloud service4软件即服务SaaS5平台即服…...

外包干了3个月,技术退步明显
先说一下自己的情况,本科生,19年通过校招进入广州某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…...

【ArcGIS微课1000例】0105:三维模型转体模型(导入sketchup转多面体为例)
文章目录 一、实验概述二、三维模型转多面体三、加载多面体数据四、注意事项一、实验概述 ArcGIS可以借助【导入3D文件】工具支持主流的三维模型导入。支持 3D Studio Max (.3ds)、VRML and GeoVRML 2.0 (.wrl)、SketchUp 6.0 (.skp)、OpenFlight 15.8 (.flt)、Collaborative …...

创建型设计模式 - 原型设计模式 - JAVA
原型设计模式 一 .简介二. 案例三. 补充知识 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 一 .简介 原型模式提供了一种机制,可以将原始对象复制到新对象࿰…...
Squid代理:APT、PyPI和Docker的内网穿透解决方案
如果你是在内网环境,并且你知道一台服务器可以链接外网,可以通过Squid代理的方式更新apt、pypi、docker源。 你可以通过在服务器A(172.16.16.122,可上外网)上设置代理服务器来实现服务器B通过服务器A访问外部APT源的需…...
MYSQL--触发器
一:介绍: 1.触发器实际上就是一种特殊的存储过程,两者都能够在MYSQL当中完成特定的功能,存储在服务器上的特殊SQL片段,可以重复进行使用,提高复用性的一种功能.但是触发器并不需要进行调用,在使用DML操作的时候会自动的调用相关的触发器操作 2.触发器能够对于DML操作当中的,删除…...

onnx 1.16 doc学习笔记四:python API-If和Scan
onnx作为一个通用格式,很少有中文教程,因此开一篇文章对onnx 1.16文档进行翻译与进一步解释, onnx 1.16官方文档:https://onnx.ai/onnx/intro/index.html](https://onnx.ai/onnx/intro/index.html), 如果觉得有收获&am…...

如何构建企业专属GPT
大语言模型(LLM)具有令人印象深刻的自然语言理解和生成能力, 2022年11月底OpenAI发布了ChatGPT,一跃成为人工智能AI领域的现象级应用。但由于LLM的训练数据集主要来源于互联网数据,企业私域信息并未被LLM所训练&#x…...

知识积累(二):损失函数正则化与权重衰减
文章目录 1. 欧氏距离与L2范数1.1 常用的相似性度量 2. 什么是正则化?参考资料 本文只介绍 L2 正则化。 1. 欧氏距离与L2范数 欧氏距离也就是L2范数 1.1 常用的相似性度量 1)点积 2)余弦相似度 3)L1和L2 2. 什么是正则化&…...

消息中间件-面试题
MQ选择 一、Kafka 1、消息队列如何保证消息可靠性 消息不重复 生产者控制消费者幂等消息不丢失 生产者发送,要确认broker收到并持久化broker确认消费者消费完,再删除消息2、kafka是什么 Kafka是一种高吞吐量、分布式、基于发布/订阅的消息中间件,是Apache的开源项目。broke…...
Python 将二维数组或矩阵变为三维
Python 将二维数组或矩阵变为三维 引言正文基础 拓展 引言 之前,我们已经介绍过了 Python 将一维数组或矩阵变为三维。然而,很多时候,我们也需要对二维矩阵进行操作,这里特来介绍一下如何将二维矩阵扩展为三维。 阅读这一篇前推…...

区块链与Solidity详细介绍及基本语法使用
一、区块链简介 区块链是一种分布式数据库技术,它以块的形式存储数据,并通过加密算法确保数据的安全性。每个块包含一系列交易,并通过哈希值与前一个块相连接,形成一个链式结构。这种结构使得数据难以被篡改,因为任何对…...
题目 1253: 老王赛马
题目描述: 赛马是一古老的游戏,早在公元前四世纪的中国,处在诸侯割据的状态,历史上称为“战国时期”。在魏国作官的孙膑,因为受到同僚庞涓的迫害,被齐国使臣救出后,到达齐国国都。 赛马是当时最受齐国贵族…...

【MATLAB源码-第144期】基于matlab的蝴蝶优化算法(BOA)无人机三维路径规划,输出做短路径图和适应度曲线。
操作环境: MATLAB 2022a 1、算法描述 蝴蝶优化算法(Butterfly Optimization Algorithm, BOA)是基于蝴蝶觅食行为的一种新颖的群体智能算法。它通过模拟蝴蝶个体在寻找食物过程中的嗅觉导向行为以及随机飞行行为,来探索解空间…...

地下管线管网三维建模工具MagicPipe3D V3.4.2发布
经纬管网建模系统MagicPipe3D,本地离线参数化构建地下管网三维模型(包括管道、接头、附属设施等),输出标准3DTiles服务、Obj模型等格式,支持Cesium、Unreal、Unity、Osg等引擎加载进行三维可视化、语义查询、专题分析&…...

糖尿病性视网膜病变(DR)的自动化检测和分期
糖尿病性视网膜病变(DR)的自动化检测和分期 提出背景DR的阶段及其特征 历年解法计算机视觉方法多分类方法 新的解法深度学习方法迁移学习大模型多模型集成全流程分析 总结特征1:图像分割特征2:疾病分级特征3:治疗建议生…...

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...