当前位置: 首页 > news >正文

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协议进行详细解释:

  1. IP协议(Internet Protocol):IP协议是互联网通信的基础协议,它负责将数据包从源主机传输到目标主机。IP协议使用IP地址来标识主机和网络,通过路由选择算法来确定数据包的传输路径。

  2. TCP协议(Transmission Control Protocol):TCP协议是一种可靠的传输协议,它建立在IP协议之上。TCP协议通过提供可靠的、面向连接的数据传输,确保数据在网络中的可靠传输。TCP协议使用端口号来标识应用程序,通过三次握手建立连接,通过流控制和拥塞控制来维护网络的稳定性。

  3. TCP/IP协议栈:TCP和IP协议是互联网通信的核心协议,它们与其他协议(如HTTP、FTP、SMTP等)一起构成了TCP/IP协议栈。TCP/IP协议栈是一个多层次的协议体系,从物理层、数据链路层、网络层、传输层到应用层,每一层都有特定的功能和协议。

  4. 数据包的传输过程:在TCP/IP协议中,数据被拆分成小的数据包(IP数据报),每个数据包包含源IP地址、目标IP地址、协议类型、数据等信息。数据包通过网络传输,经过路由器等网络设备,根据IP地址找到目标主机,然后通过TCP协议进行可靠的数据传输。

  5. TCP/IP协议的特点:TCP/IP协议具有可靠性、灵活性和可扩展性的特点。它能够适应多种网络环境和应用需求,支持全球范围的互联网通信。

TCP/IP协议是互联网通信的基础,几乎所有的网络应用都依赖于TCP/IP协议进行数据传输。通过使用TCP和IP协议,可以在全球范围内实现可靠的数据传输和通信。

HTTP协议:

HTTP协议是一种应用层协议,用于在Web浏览器和Web服务器之间传输数据。HTTP协议的主要功能是传输超文本标记语言(HTML)文件,但它也可以用于传输任何类型的数据。HTTP协议是建立在TCP/IP协议之上的,它使用TCP/IP协议的传输机制来传输数据。

HTTP协议的特点:

  1. 无连接:HTTP协议使用短暂的连接来传输数据,每次连接只能传输一次请求和响应,连接关闭后就不能再次使用。这种无连接的方式可以减少服务器的负担,但它也会增加每次连接的开销。

  2. 无状态:HTTP协议是无状态的,服务器不会记录客户端的状态信息。这意味着每个请求都是独立的,服务器不能根据以前的请求来处理当前的请求。

  3. 请求-响应模式:HTTP协议使用请求-响应模式来传输数据。客户端向服务器发送请求,服务器接收请求并返回响应。

HTTP协议的请求格式:

  1. 请求行:包括请求方法、请求URL和HTTP协议版本。

  2. 请求头部:包括请求的一些附加信息,如请求的User-Agent、Accept-Language等。

  3. 请求正文:包括请求的具体内容,如表单数据、文件等。

HTTP协议的响应格式:

  1. 状态行:包括HTTP协议版本、状态码和状态码的解释。

  2. 响应头部:包括响应的一些附加信息,如Server、Date等。

  3. 响应正文:包括响应的具体内容,如HTML页面、图片等。

HTTP协议的请求方法:

  1. GET:用于获取资源。

  2. POST:用于提交数据。

  3. PUT:用于更新资源。

  4. DELETE:用于删除资源。

  5. HEAD:与GET方法类似,但不返回响应正文,只返回响应头部。

  6. OPTIONS:用于查询服务器支持的HTTP方法。

HTTP协议的状态码:

  1. 1xx:信息提示,如100 Continue。

  2. 2xx:成功,如200 OK。

  3. 3xx:重定向,如301 Moved Permanently。

  4. 4xx:客户端错误,如404 Not Found。

  5. 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的设计原则:

  1. 资源定位:每个资源都由一个唯一的URI(统一资源标识符)来标识,通过URI来定位资源。

  2. 统一接口:使用标准的HTTP请求方法(GET、POST、PUT、DELETE等)和状态码(200、404、500等)来表示资源的状态和操作。

  3. 无状态:每个请求都是独立的,服务端不会记录客户端的状态信息,使得服务端更加简单和可扩展。

  4. 可缓存:服务端可以使用HTTP协议中的缓存机制来提高性能和可扩展性。

  5. 分层系统:客户端不需要知道服务端的内部结构,服务端可以使用多层结构来提高可扩展性和安全性。

RESTful API的优点:

  1. 简单、灵活、可扩展:RESTful API的设计原则使得它具有简单、灵活、可扩展等优点,使得开发人员可以更加快速、高效地开发API接口。

  2. 易于理解、调试、测试:RESTful API的设计原则使得它的接口具有良好的可读性和可测试性,使得开发人员可以更加方便地理解、调试、测试API接口。

  3. 支持多种数据格式:RESTful API支持多种数据格式,如JSON、XML等,使得开发人员可以根据需要选择合适的数据格式。

  4. 与HTTP协议兼容:RESTful API与HTTP协议兼容,使得它可以使用HTTP协议中的各种特性,如缓存、安全性等,提高API接口的性能和安全性。

RESTful API的应用:

RESTful API被广泛应用于Web应用程序、移动应用程序、云计算等领域。它是一种基于开放标准、简单、可扩展的API设计风格,使得开发人员可以更加高效、快速地开发API接口,同时也提高了API接口的可读性、可测试性、可维护性和可扩展性。

WebSocket:

WebSocket是一种全双工通信协议,它建立在HTTP协议之上,通过在客户端和服务器之间建立持久连接,实现实时通信。WebSocket协议的主要特点是低延迟、高效率、易于开发和实现,因此被广泛应用于实时通信、在线游戏、在线视频等领域。

WebSocket协议的工作原理:

  1. 客户端向服务器发送WebSocket协议升级请求,请求中包含了Upgrade、Connection、Sec-WebSocket-Key等字段。

  2. 服务器收到升级请求后,返回升级响应,响应中包含了Upgrade、Connection、Sec-WebSocket-Accept等字段。

  3. 客户端收到升级响应后,将连接升级为WebSocket连接,此时客户端和服务器之间建立了持久连接。

  4. 客户端和服务器之间可以通过WebSocket连接进行双向通信,客户端和服务器可以随时发送和接收消息。

WebSocket协议的优点:

  1. 低延迟:WebSocket协议使用持久连接,可以避免频繁建立和关闭连接,从而减少了通信的延迟。

  2. 高效率:WebSocket协议采用二进制传输,可以减少数据传输的大小,提高传输效率。

  3. 易于开发和实现:WebSocket协议的API简单、易于使用,开发人员可以快速地实现WebSocket应用程序。

  4. 支持跨域通信:WebSocket协议支持跨域通信,可以在不同的域之间进行通信。

WebSocket协议的应用:

WebSocket协议被广泛应用于实时通信、在线游戏、在线视频等领域。它可以提供低延迟、高效率的通信服务,使得开发人员可以快速地实现实时通信和在线游戏等应用程序。同时,WebSocket协议也支持跨域通信,可以方便地在不同的域之间进行通信。

RPC:

RPC(Remote Procedure Call,远程过程调用)是一种基于网络的通信协议,它允许程序在不同的计算机上进行通信和调用远程的程序或函数。RPC协议的主要目的是使得分布式系统中的应用程序能够像本地程序一样调用远程程序,从而方便开发人员进行分布式应用程序的开发。

RPC协议的工作原理:

  1. 客户端调用本地的Stub(存根)函数,Stub函数将请求打包成网络消息,通过网络发送给服务端。

  2. 服务端接收到消息后,将消息解包,调用本地的实际函数进行处理,并将处理结果打包成网络消息,通过网络发送给客户端。

  3. 客户端接收到服务端的响应消息后,将消息解包,得到处理结果,并返回给调用者。

RPC协议的优点:

  1. 简单、易于理解和使用:RPC协议的调用方式类似于本地函数调用,使得开发人员可以快速地上手。

  2. 跨平台、跨语言:RPC协议可以支持不同的操作系统和编程语言之间的通信,使得分布式系统中的应用程序可以互相调用。

  3. 高效、低延迟:RPC协议采用二进制传输,可以减少数据传输的大小,提高传输效率,同时也可以避免频繁的网络通信,从而减少通信的延迟。

  4. 可扩展、可定制化:RPC协议可以根据需要进行扩展和定制化,使得开发人员可以根据具体的应用场景进行优化。

RPC协议的应用:

RPC协议被广泛应用于分布式系统中的应用程序,如微服务架构、云计算、大数据处理等领域。它可以使得不同的应用程序之间可以互相调用,从而实现功能的共享和复用。同时,RPC协议也可以提供高效、低延迟的通信服务,使得分布式系统中的应用程序可以快速地响应用户请求。

UDP:

UDP协议是一种不安全的协议,因为它没有提供加密和身份认证的功能。UDP协议主要用于实时的数据传输,如音视频数据,因为它具有低延迟、高效率的特点,但是它也存在安全性的问题。

UDP协议的不安全性主要表现在以下几个方面:

  1. 明文传输:UDP协议采用明文传输,容易被攻击者窃取和篡改数据。

  2. 没有身份认证:UDP协议没有提供身份认证的功能,使得攻击者可以冒充其他用户进行通信。

  3. 容易受到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连接时,客户端和服务器之间会进行握手过程,这包括以下步骤:

  1. 客户端发送一个请求给服务器,请求建立安全连接。
  2. 服务器返回其SSL证书,其中包含公钥和其他相关信息。
  3. 客户端验证证书的有效性,并生成一个用于对称加密的密钥。
  4. 客户端使用服务器的公钥加密该密钥,并发送给服务器。
  5. 服务器使用自己的私钥解密得到的密钥。
  6. 客户端和服务器双方都获得了共享的对称密钥,用于后续通信的加密和解密。

使用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’}}&#xff0…...

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

原型设计模式 一 .简介二. 案例三. 补充知识 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 一 .简介 原型模式提供了一种机制,可以将原始对象复制到新对象&#xff0…...

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:治疗建议生…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率&#xff0c…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...

GitHub 趋势日报 (2025年06月06日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

网页端 js 读取发票里的二维码信息(图片和PDF格式)

起因 为了实现在报销流程中,发票不能重用的限制,发票上传后,希望能读出发票号,并记录发票号已用,下次不再可用于报销。 基于上面的需求,研究了OCR 的方式和读PDF的方式,实际是可行的&#xff…...