Linux 网络编程 --- 应用层

news2024/11/24 10:53:49

一、自定义协议和序列化反序列化
代码:

序列化反序列化实现网络版本计算器

二、HTTP协议

1、谈两个简单的预备知识

https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址

http的端口号为80端口,https的端口号为443

url为统一资源定位符。CSDNicon-default.png?t=O83Ahttps://mp.csdn.net/mp_blog/creation/editor?spm=1000.2115.3001.4503这就是一个url,所有网络上的资源,都可以用唯一的一个字符串标识,并且可以获取到资源。

网络行为:把别人的东西拿下来,把自己的东西传上去。

少量的情况,提交或者获取的数据本身可能包含和url中特殊的字符冲突的字符,要求BS双方进行编码和解码。

转义规则

2、http请求和响应,格式画出来,两个工具见一见http请求/响应的样子。

请求行内容

3、写一个最简单的httpserver,用浏览器直接测试

代码:

自主http实现

上图为http协议的请求报文的真实格式,每个字段代表什么,可以去自己搜一下。

user_agent :代表了客户机上所对应的浏览器型号等内容。通常表明这是一个很正常的客户端。反爬虫可以去检测这个user_agent。检测客户端是否合法。

4、谈http报文的细节

HTTP的方法

我们日常使用某些网站,我们把我们的数据是通过html中的表单来提交的

如果我们要提交 参数给我们的服务器,我们使用get方法的时候,我们提交的参数是通过url提交的!!

POST方法也可以提交参数,通过正文进行提交。GET方法通过URL进行提参,参数数量是受限的。不私密。POST方法是私密的。

HTTP的状态码

404没有发现要访问的资源

302 临时重定向,301永久重定向,搭配报头中的Location字段来使用。

让服务器指导浏览器,让浏览器访问新的地址

HTTP常见的Header

Content-Type: 数据类型 (text/html )
Content-Length: Body 的长度
Host: 客户端告知服务器 , 所请求的资源是在哪个主机的哪个端口上 ;
User-Agent: 声明用户的操作系统和浏览器版本信息 ;
referer: 当前页面是从哪个页面跳转过来的 ;
location: 搭配 3xx 状态码使用 , 告诉客户端接下来要去哪里访问 ;
Cookie: 用于在客户端存储少量信息 . 通常用于实现会话 (session) 的功能 ;

 connection: keep_alive,这是一个长连接。一个巨大的页面是会包含非常多的元素的!每一个元素就是一个资源!一次请求响应一个资源就关闭连接,叫做短链接。建立一个TCP连接,发送和返回多个http的请求和回复,叫做长连接。

Content-type: 内容格式 

cookie

http协议本身是无状态的。http对登录用户的会话保持功能。

原理:

浏览器保存cookie文件有两种方式,文件级和内存级。

向我们的浏览器写入cookie,做一个实验。

在回复报文中添加set-cookie字段

cookie被盗取的问题和个人信息泄漏的问题。

解决方案:session ID ,解决了私人信息泄露的问题。

 session ID 是服务器端统一管理分配的。

HTTPS解决安全问题

HTTPS 协议讲解

HTTPS也是一个应用层协议

两个观点:

1、攻破的成本大于攻破后的收益,这样的网络协议就是安全的。

2、ssl权威的官方的加密解密方案。

SSL(Secure Sockets Layer)是一种用于在计算机网络上保护数据传输安全的协议,它通过在客户端浏览器和Web服务器之间建立一条SSL安全通道,提供对用户和服务器的认证、对传送的数据进行加密和隐藏、确保数据在传送中不被改变,即数据的完整性。SSL协议主要用来提供对用户和服务器的认证,确保数据传输的安全性,现已成为该领域中全球化的标准。此外,SSL证书是遵守SSL协议,由受信任的数字证书颁发机构(CA)在验证服务器身份后颁发的具有服务器身份验证和数据传输加密功能的数字证书‌(AI的回答)

基础概念的理解:

什么是加密:把一个明文通过一系列变换变成密文。

什么是解密:把一个密文通过一系列变换变成明文。

密钥:一系列变换的辅助数据称为密钥

常见的加密方式:

对称加密:加密解密所采用的密钥只有一个。特点是算法公开,计算量小,速度快。

需要两个密钥来进行加密和解密。特点是运算速度特别慢。

对公钥进行加密时,只有拥有私钥的人来解密。

数据指纹(数据摘要)使用hash算法转换为固定长度的,非常低概率发生冲突的字符串,具有唯一性。(MD5是典型的哈希算法)称为数据指纹(数据指纹)在经过加密会形成一个数据签名。

 讲解思路

我们自己设计一套加密方式

方案一:只是用对称加密:

方案二:只是用非对称加密 

非对称加密,用公钥加密的数据可以用私钥解密。用私钥加密的数据只能用公钥解密。 

方案三:双方都是用非对称加密

双方互相把公钥发送给对方,都用对方的公钥进行加密。c-s用服务器的私钥解密。s-c 用客户端的私钥解密。貌似没有问题但是这里的效率太慢了并且仍然由安全问题。

 方案四:非对称加密 + 对称加密

但是上面的方案,最开始就会受到中间人的攻击呢?

上面的方法就都不安全了。下面的方式为中间人攻击

确实,在⽅案2/3/4中,客⼾端获取到公钥S之后,对客⼾端形成的对称秘钥X⽤服务端给客⼾端的公钥 S进⾏加密,中间⼈即使窃取到了数据,此时中间⼈确实⽆法解出客⼾端形成的密钥X,因为只有服务 器有私钥S' ,但是中间⼈的攻击,如果在最开始握⼿协商的时候就进⾏了,那就不⼀定了,假设hacker已经成功成 为中间⼈
1. 服务器具有⾮对称加密算法的公钥S,私钥S'
2. 中间⼈具有⾮对称加密算法的公钥M,私钥M'
3. 客⼾端向服务器发起请求,服务器明⽂传送公钥S给客⼾端
4. 中间⼈劫持数据报⽂,提取公钥S并保存好,然后将被劫持报⽂中的公钥S替换成为⾃⼰的公钥M, 并将伪造报⽂发给客⼾端
5. 客⼾端收到报⽂,提取公钥M(⾃⼰当然不知道公钥被更换过了),⾃⼰形成对称秘钥X,⽤公钥M加 密X,形成报⽂发送给服务器
6. 中间⼈劫持后,直接⽤⾃⼰的私钥M'进⾏解密,得到通信秘钥X,再⽤曾经保存的服务端公钥S加 密后,将报⽂推送给服务器
7. 服务器拿到报⽂,⽤⾃⼰的私钥S'解密,得到通信秘钥X
8. 双⽅开始采⽤X进⾏对称加密,进⾏通信。但是⼀切都在中间⼈的掌握中,劫持数据,进⾏窃听甚 ⾄修改,都是可以的

 客户端无法验证服务器发来的公钥是否是合法的。、

那么如何保证安全呢?如何验证公钥是合法的呢?

CA证书:CA认证

服务端在使⽤HTTPS前,需要向CA机构申领⼀份数字证书,数字证书⾥含有证书申请者信息、公钥信 息等。服务器把证书传输给浏览器,浏览器从证书⾥获取公钥就⾏了,证书就如⾝份证,证明服务端 公钥的权威性。

问题又来了,你怎么保证你的证书是权威机构发布且没有被改过呢?

证书里面有一个签名

理解签名:

签名的形成是基于⾮对称加密算法的,注意,⽬前暂时和https没有关系,不要和https中的公钥私钥搞 混了

CA证书的形成就可以用上面的算法来进行。上面的数据就是提交给CA的申请信息。CA使用散列函数。形成签名,CA机构也有自己的公钥和私钥注意这里的私钥和公钥跟之前讲的私钥和公钥毫无关系。用自己的私钥对签名进行加密。和数据附加到一起就形成了CA证书。服务器把证书发送给客户端的时候,client通过CA的公钥对签名进行解密。再按照上图验证的方式对数据和签名进行判断。如果在传输的过程中被修改。数据摘要和散列值会不相同,证书不可信。

 方案五:

非对称加密 + 对称加密 + CA证书

所有的客户端只使用CA的公钥去解密我们的数字签名,也就意味着,只有CA能够进行证书的签发,因为只有CA自己具有私钥。所以中间人没资格进行证书的重新形成。如果我们中间人把整个证书都调换了呢?黑客申请真证书,提交信息。证书中的域名是不同的,域名具有唯一性。客户端还是可以识别的。

如何看待HTTPS?

其实是很安全的。但是如果中间人是客户本身。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java+Swing图书管理系统

JavaSwing图书管理系统 一、系统介绍二、功能展示1.管理员登陆2.图书查询3.图书入库4.借书5.还书6.图书证管理 三、系统实现1.BookManageMainFrame.java 四、其它1.其他系统实现 一、系统介绍 该系统实现了用户端实现书籍查询,借书,还书功能。用户能够查…

QLib学习

开源地址:GitHub - microsoft/qlib: Qlib is an AI-oriented quantitative investment platform that aims to realize the potential, empower research, and create value using AI technologies in quantitative investment, from exploring ideas to implementi…

为何在106短信群发前需完成实名认证?

为了严格遵循国家法律法规及电信运营商的规范要求,确保您及贵公司的合法权益得到充分保障,使用云通信服务进行106短信群发前,实名认证成为必要步骤。 根据《中华人民共和国网络安全法》第二十四条的明确规定: 法律强制性要求&…

vulhub think PHP 2-rce远程命令执行漏洞

1.开启环境 2。访问对应网站端口 3.这里我们直接构造payload,访问phpinfo() http://192.168.159.149:8080/?s/Index/index/L/${phpinfo()} 4.可以访问到我们的phpinfo, 所以写入一句话木马,也可使用蚁剑进行连接,获得其shell进…

GenAI 用于客户支持 — 第 4 部分:调整 RAG 搜索的相关性

作者:来自 Elastic Antonio Schnmann 欢迎阅读我们关于将生成式 AI 集成到 Elastic 客户支持的博客系列的第 4 部分。本期深入探讨了检索增强生成 (RAG) 在增强我们 AI 驱动的技术支持助理方面的作用。在这里,我们解决了改进搜索效果的挑战、解决方案和结…

【C++】windwos下vscode多文件项目创建、编译、运行

目录 🌕vscode多文件项目创建方法🌙具体案例⭐命令行创建项目名,并在vscode中打开项目⭐创建include目录和头文件⭐创建src目录和cpp文件⭐根目录下创建main.cpp 🌕运行项目失败(找不到include目录下的头文件和src目录…

实习生进了公司不会开发?一个真实业务教会你如何分析业务!

一、权限业务介绍 本业务为个人试用期的时候的真实企业级业务,进行了简单的替换词和业务内容模糊,但是业务逻辑没有变化,值得学习,代码部分可能因为替换词有部分误解,发现问题请评论区提醒我。 这个业务教会了我&…

最新前端开发VSCode高效实用插件推荐清单

在此进行总结归类工作中用到的比较实用的、有助于提升开发效率的VSCode插件。大家有其他的好插件推荐的也欢迎留言评论区哦😄 基础增强 Chinese (Simplified) Language Pack: 提供中文界面。 Code Spell Checker: 检查代码中的拼写错误。 ESLint: 集成 ESLint&…

AIoTedge边缘计算+边缘物联网平台

在数字化转型的浪潮中,AIoTedge边缘计算平台以其边云协同的架构和强大的分布式AIoT处理能力,正成为推动智能技术发展的关键力量。AIoTedge通过在数据源附近处理信息,实现低延迟、快速响应,增强了应用的实时性。同时,它…

CCF推荐C类会议和期刊总结:(计算机网络领域)

CCF推荐C类会议和期刊总结(计算机网络领域) 在计算机网络领域,中国计算机学会(CCF)推荐的C类会议和期刊为研究者提供了广泛的学术交流平台。以下是对所有C类会议和期刊的总结,包括全称、出版社、dblp文献网…

DMDPC单副本集群安装

1. 环境描述 2. 部署步骤 2.1. 安装DM数据库软件启动DMAP [dmdbalei1 ~]$ DmAPService status DmAPService (pid 1269) is running.2.2. 初始化数据库实例 [dmdbalei1 data]$ dminit path/dmdba/data/sp1 instance_nameSP1 port_num5236 ap_port_num6000 dpc_modeSP initdb …

野火霸天虎V2学习记录

文章目录 嵌入式开发常识汇总1、嵌入式Linux和stm32之间的区别和联系2、stm32程序下载方式3、Keil5安装芯片包4、芯片封装种类5、STM32命名6、数据手册和参考手册7、什么是寄存器、寄存器映射和内存映射8、芯片引脚顺序9、stm32芯片里有什么10、存储器空间的划分11、如何理解寄…

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠…

长芯微国产LS0104电平转换器/电平移位器P2P替代TXS0104

LS0104这个4位非反相转换器是一个双向电压电平转换器,可用于建立数字混合电压系统之间的切换兼容性。它使用两个单独的可配置电源轨支持1.65V至5.5V工作电压的端口同时它跟踪VCCA电源和支持的B端口工作电压从2.3V到5.5V,同时跟踪VCCB供应。这允许更低和更…

【C++】stackqueuedeque

目录 一、stack: 1、栈的介绍: 2、栈的使用: 3、栈的成员函数的模拟实现: 二、queue: 1、队列的介绍: 2、队列的使用: 3、队列的模拟实现: 三、deque: deque的底层结构&am…

电脑丢失msvcp120.dll问题原因及详细介绍msvcp120.dll丢失的解决方法

在使用 Windows 操作系统时,你可能会遇到一个常见的错误提示:“程序无法启动,因为计算机中丢失 msvcp120.dll”。这个错误通常意味着你的系统中缺少了一个重要的动态链接库文件,即msvcp120.dll。这个文件是 Microsoft Visual C 20…

一文读懂SpringMVC的工作原理

前言 MVC是经典的软件架构设计模式,几乎在各个领域各种开发语言中,均采纳了这个思想。此刻博主突然想到了Thinking in xxx系列设计书籍。换句话说,就是“各人自扫门前雪”和“术业有专攻”。当职责分配得当后,剩下的就是发挥各“…

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

全志A527 A133 A523 T527 T133 H6 H8应用无法开启后台服务

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改4.1 代码修改方法14.2 代码修改方法24.3 代码修改方法35.彩蛋1.前言 像全志的很多平台,普通的app并不能正常的启动后台的服务,这样对于应用层很困扰,无法启动后台的服务,功能就不能正常使用…

2024最新软件测试面试题(带答案)

1. 请自我介绍一下(需简单清楚的表述自已的基本情况,在这过程中要展现出自信,对工作有激情,上进,好学) 面试官您好,我叫###,今年26岁,来自江西九江,就读专业是电子商务,毕…