Linux网络基础2之http

这里是ky233的主页,欢迎光临~icon-default.png?t=N7T8https://blog.csdn.net/ky233?type=blog

目录

一、认识URL

1.认识URL

2.urlencode和urldecode

二、HTTP协议格式

1.快速构建http请求和相应的报文格式

三、http demo

1.GET和POST

2.HTTP的状态码

3.http的特征

4.HTTP常见Header


应用层:就是程序员基于socket接口之上编写的具体逻辑,做的很多工作,都是和文本处理有关的!——协议分析与处理

所以http协议,一定会具有大量的文本分析和协议处理!

一、认识URL

1.认识URL

平时我们俗称的 "网址" 其实就是说的 URL

我们平时上网无非就是我们想获取或者上传资源

一张图片、一这段视频,这些资源在没有被拿到的时候是在对应的Linux服务器上,在一个服务器上可能存在很多的文件资源,当我们请求资源拿到本的的时候,服务器会打开你要访问的文件,读取该文件通过网络发送到客户端

所以我们要打开这个文件先要找到它,这时候就用到路径来标识!

所有的资源:全球范围内,只要找到它的url就能访问到该资源,也成为www,万维网

2.urlencode和urldecode

像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现. 比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义。

 转义的规则如下: 将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式

例如:

二、HTTP协议格式

在双方通信之前已经进行了三次握手的过程

1.快速构建http请求和相应的报文格式

单纯在报文的角度,http可以是基于行的文本协议!

如何看待:在三次握手之后,这不就是客户端在给服务器发送大量的字节流吗?

所以我们可以看成是线性结构

如何看待,也是看成线性结构!

其中请求行中的协议版本是客户端告诉服务端,客户端用的http版本,而响应行中的协议版本是服务端告诉客户端,服务端用的http版本

http是如何区分报头和有效载荷的呢?

有效载荷:正文部分的内容

答案很简单,是通过空行\r\n的方式来区分的

也就是说我们一定能把报头读完,所以接下来读的就是正文,那么我们如何得知正文的大小呢?

其中报头当中就包含了一种属性Cotent-Length,后面跟的就是正文的长度

三、http demo

1.GET和POST

我们平时上网行为分为两种,从服务器拿资源,以及上传资源

其中拿资源一般GET,上传资源两者都可

GET:是通过URL向服务端传参的,会回显用户的私密信息,不够私密

POST:是通过http的正文部分提交参数的,不会回显,在私密性方面是有保证的

注意:私密性不是安全性

2.HTTP的状态码

永久重定向301和临时重定向302、307

永久重定向:影响用户后续的请求策略如看付费电影,买一次直接就可以看了

临时重定向:不影响用户后续的请求策略

也就是说,客户端发送了一个请求,服务端返回错误码302原因是found,并且会告诉一个新的地址,客户端在向新的地址发送请求

3.http的特征

1.简单快速

2.无连接:虽然底层是TCP但是连接时TCP的事情和我http有什么关系

3.无状态:协议是不会记录你的访问记录之类的,但是登录网站会记录,这是因为因为业务逻辑来管的

4.HTTP常见Header

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

Cookie简单来说就是用来保存用户的私密信息的

但是这种不安全,有风险,所以现如今我们在登陆或者注册的时候生成一个session id,在服务端保存了私密信息,这样客户端发送这个id就可以自动登录了

Set-cookie是写在代码中的,设置之后就可以在http的属性中看到cookie的内容

5.短链接与长连接

短链接就是指一次只传输一个文件如一张图片,长连接则是一次性传输多个文件

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ARTS Week 20

Algorithm 本周的算法题为 1222. 可以攻击国王的皇后 在一个 下标从 0 开始 的 8 x 8 棋盘上,可能有多个黑皇后和一个白国王。 给你一个二维整数数组 queens,其中 queens[i] [xQueeni, yQueeni] 表示第 i 个黑皇后在棋盘上的位置。还给你一个长度为 2 的…

VARMA(Vector Auto Regressive Moving Average) in Time Series Modelling

what is VARMA? ARIMA是针对单一变量进行建模的方法,当我们需要进行多变量时序建模时,需要使用VAR and VMA and VARMA模型。 VAR:Vector Auto-Regressive,a generalization of the auto-regressive model for multivariate time series where the time series is station…

高吞吐SFTP连接池设计方案

背景 在现代的数据驱动环境中,安全文件传输协议(SFTP)扮演着至关重要的角色,它提供了一种安全、可靠的文件传输方式。我们目前项目是一个大型数据集成平台,跟上下游有很多文件对接是通过SFTP协议,当需要处…

如何修复advapi32.dll丢失无法启动程序的问题

如果你在运行Windows程序时遇到了“advapi32.dll丢失无法启动程序”的错误消息,那么这意味着你的计算机缺少这个DLL文件。在本文中,我们将提供一些解决方案,帮助你解决这个问题并恢复计算机的正常运行。 一.advapi32.dll丢失电脑的提示 关于…

C语言编译成库文件的要求

keil编译成库文件 在Keil中,将C语言源文件编译成库文件通常需要进行以下步骤: 创建一个新的Keil项目,并将所需的C语言源文件添加到该项目中。 在项目设置中配置编译选项,确保生成的目标文件符合库文件的标准格式。 编译项目&…

React Three Fiber快速入门

https://threejs-journey.com/lessons/what-are-react-and-react-three-fiber#学习笔记 1.基础知识 resize 填充模版 构建第一个场景 we didn’t have to create a scenewe didn’t have to create the webglrenderthe scene is being rendered on each framethe default…

C++字符串操作【超详细】

零.前言 本文将重点围绕C的字符串来展开描述。 其中,对于C/C中字符串的一些区别也做出了回答,并对于C的(string库)进行了讲解,最后我们给出字符串的不同表达形式。 开发环境: VS2022 一.字符串常量跟字…

leetcode 热题 100_相交链表

题解一: 哈希表:两链表出现的第一个相同的值就是相交节点,因此我们先用哈希记录链表A所有出现过的值,再遍历链表B查找哈希表,找出第一个相同的值即为结果。 import java.util.HashSet;public class Solution {public …

如何使用Hexo搭建个人博客

文章目录 如何使用Hexo搭建个人博客环境搭建连接 Github创建 Github Pages 仓库本地安装 Hexo 博客程序安装 HexoHexo 初始化和本地预览 部署 Hexo 到 GitHub Pages开始使用发布文章网站设置更换主题常用命令 插件安装解决成功上传github但是web不更新不想上传文章处理方式链接…

【解读】OWASP 大语言模型(LLM)安全测评基准V1.0

大语言模型(LLM,Large Language Model)是指参数量巨大、能够处理海量数据的模型, 此类模型通常具有大规模的参数,使得它们能够处理更复杂的问题,并学习更广泛的知识。自2022 年以来,LLM技术在得到了广泛的应…

ReactNative项目构建分析与思考之react-native-gradle-plugin

前一段时间由于业务需要,接触了下React Native相关的知识,以一个Android开发者的视角,对React Native 项目组织和构建流程有了一些粗浅的认识,同时也对RN混合开发项目如何搭建又了一点小小的思考。 RN环境搭建 RN文档提供了两种…

多维时序 | Matlab实现BiGRU-Mutilhead-Attention双向门控循环单元融合多头注意力机制多变量时序预测

多维时序 | Matlab实现BiGRU-Mutilhead-Attention双向门控循环单元融合多头注意力机制多变量时序预测 目录 多维时序 | Matlab实现BiGRU-Mutilhead-Attention双向门控循环单元融合多头注意力机制多变量时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.多维时序 …

字典Trie树

字典树 : 概念 建字典树 查询 : 代码模板 : const int N100010; int n; char s[N]; int ch[N][26],cnt[N],idx;void insert(char *s){int p0;for(int i0; s[i]; i ){int js[i]-a;//字母映射if(!ch[p][j])ch[p][j]idx;pch[p][j];}cnt[p];//插入次数 } int query(char *s){i…

线上应用部署了两台load为1四核服务器

线上应用部署了两台服务器。 项目发布后,我对线上服务器的性能进行了跟踪,发现一台负载为3,另一台负载为1,其中一台四核服务器已经快到瓶颈了,所以我们紧急排查原因。 1、使用TOP命令查看占用CPU较大的负载和进程&…

《C语言都有哪些字符串处理函数?》

目录 17个字符串处理函数 1. gets()--读 2.fgets()--从指定文件内读 3.puts()--输出 4.fputs()--写入到指定文件中 5.strlen()--计算字符串长度 6.strcpy()--复制 7.strncpy()--复制前n个字符 8.strcat()--字符串连接 9.strncat()--将前n个字符连接 10.strcmp()--比…

Flink概述

1.什么是Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。 官网:Flink 2.Flink的发展历史 Flink起源于一个叫作Stratosphere的项目,它是由3所地处柏林的大学和欧洲其他一些大学在2010~2014年共同进行的研究项目&a…

从零开始:神经网络(2)——MP模型

声明:本文章是根据网上资料,加上自己整理和理解而成,仅为记录自己学习的点点滴滴。可能有错误,欢迎大家指正。 神经元相关知识,详见从零开始:神经网络——神经元和梯度下降-CSDN博客 1、什么是M-P 模型 人…

物联网云原生云边协同

文章目录 一、物联网平台设计1.物联网平台设计2.物联网平台实现 二、部署环境1.节点配置2.版本信息 三、物联网平台部署1.部署 Kubernetes 集群2.部署 KubeEdge3.部署 ThingsBoard 集群4.部署 ThingsBoard Edge4.1.创建 Edge 实例4.2.部署 PostgreSQL4.3.创建数据库4.4.部署 Th…

构建高效可靠的消息队列系统:设计与实现

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 目录 一、引言 二、设计目标 2.1、高可用性 1. 集群搭建 1.1 …

MACBOOK PRO M2 MAX 安装Stable Diffusion及文生图实例

以前偶尔会使用Midjourney生成一些图片,现在使用的头像就是当时花钱在Midjourney上生成的。前段时间从某鱼上拍了一台性价比还不错的macbook,想着不如自己部署Stable Diffusion(以下简称SD)尝试一下。 网上有很多教程&#xff0c…