网络基础2(1)

news2024/11/30 9:33:21

HTTP

  • 1.应用层协议
  • 2.send和recv单独使用不安全
  • 3.URL
  • 4.urlencode和urldecode
  • 5.HTTP协议格式
  • 6.HTTP中的常见请求方法POST&&GET
  • 7.HTTP的状态码
  • 8.HTTP常见Header

🌟🌟hello,各位读者大大们你们好呀🌟🌟
🚀🚀系列专栏:【Linux的学习】
📝📝本篇内容:应用层协议;send和recv单独使用不安全;URL;urlencode和urldecode;HTTP协议格式;HTTP中的常见请求方法POST&&GET;HTTP的状态码;HTTP常见Header
⬆⬆⬆⬆上一篇:网络编程套接字
💖💖作者简介:轩情吖,请多多指教(>> •̀֊•́ ) ̖́-

1.应用层协议

例如, 我们需要实现一个服务器版的加法器. 我们需要客户端把要计算的两个加数发过去, 然后由服务器进行计算, 最后再把结果返回给客户端
我们约定:
定义结构体来表示我们需要交互的信息;
发送数据时将这个结构体按照一个规则转换成字符串, 接收到数据的时候再按照相同的规则把字符串转化回结构体,这个过程叫做 “序列化” 和 “反序列化”,这样能够方便网络通信
只要保证, 一端发送时构造的数据, 在另一端能够正确的进行解析, 这种约定, 就是应用层协议
具体的的网络计算器实现请点击

2.send和recv单独使用不安全

这里的不安全是指send数据发了好多数据,而recv读取数据不完整就造成了解析失败而结果不正确,因此发送的次数和接受的次数,没有任何关系,面向字节流。
IO接口本质都是拷贝函数,TCP叫做传输控制协议,TCP协议是全双工的,客户端和服务器会有所谓的接收发送缓冲区,本质上就是从一个缓冲区,通过从上至下的传输过程,发送到对方的接收缓冲区。

3.URL

平时我们俗称的 “网址” 其实就是说的 URL(Uniform Resource Locator统一资源定位符)
在这里插入图片描述
URL的具体格式:
1、资源在哪台主机上——域名 (domain) 或者ip来体现一主机 (host),浏览器会进行域名解析服务,并没有显示给client
2、和主机上的哪个进程去获取资源——端口 (port)
3、具体定位到是该进程管理的哪个资源——资源路径/路径 (path)
要访问服务器,就要知道对应的port+ip
http服务器的默认的端口号为80
https服务器的默认的端口号为443
在这里插入图片描述
server端的port不能随意更改,必须是总所周知的,端口号和成熟的应用层协议是一一对应的

4.urlencode和urldecode

在这里插入图片描述

像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现.
比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义.
转义的规则如下:
将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式
urldecode就是urlencode的逆过程;

5.HTTP协议格式

在这里插入图片描述
Request:
首行: [方法] + [url] + [版本]
Header: 请求报头, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个
Content-Length属性来标识Body的长度;
Response:
首行: [版本号] + [状态码] + [状态码解释]
Header: 响应报头, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个
Content-Length属性来标识Body的长度; 如果服务器返回了一个html页面, 那么html页面内容就是在
body中.

6.HTTP中的常见请求方法POST&&GET

浏览器客户端发起,它会构建一个http request,携带POST或GET,使用html表单
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
GET能获取一个静态网页
GET也能提交参数,通过URL的方式提交参数,POST,是提交数据的时候,是通过正文部分提交参数的
两者差别:
GET方法提交参数,不私密
POST提交参数比较私密一点
但是他们两者都不安全,所有的登录注册支付等行为,都要使用POST(不只是使用post)方法提取参数,想要保证安全得加密
url的话,http请求行字符串,一般都会有大小约束,而正文理论上可以非常大

7.HTTP的状态码

在这里插入图片描述
最常见的状态码, 比如 200(OK), 404(Not Found), 403(Forbidden), 302(Redirect, 重定向), 504(Bad Gateway)
这里重点讲一下什么是重定向
在这里插入图片描述
临时重定向:不能随意更改浏览器的任何地址信息
永久重定向:会更改浏览器的本地书签
因此服务器给其返回时会携带Location这个报头,告诉客户端接下来要去哪里访问

8.HTTP常见Header

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

这里要重点说一下Cookie
首先这指的是http的会话保持功能,http本身是无状态的,http不直接做这个工作,但是用户需要会话保持,用户是否在线要持续记录下来,否则用户每次访问都要进行登录,会非常麻烦

在这里插入图片描述

在这里插入图片描述
可以通过下图的方式查看cookie在这里插入图片描述
查看模拟HTTP响应的代码请点击

🌸🌸HTTP的知识大概就讲到这里啦,博主后续会继续更新更多Linux的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!你们的支持是博主坚持创作的动力!💪💪

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

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

相关文章

【算法|前缀和系列No.1】牛客网 DP34 【模板】前缀和

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【牛客网刷题】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希…

Opencv——颜色模型+通道分离与合并

视频加载/摄像头调用 VideoCapture允许一开始定义一个空的对象 VideoCapture video VideoCapture(const String &filename,int apiPreferenceCAP_ANY) filename:读取的视频文件或者图像序列名称 apiPreference:读取数据时设置的属性,例如编码格式、是否调用Op…

罗技鼠标接收器丢失或损坏后用另一个接收器配对的方法

本文介绍罗技鼠标在丢失、损坏其自身原有的接收器后,将另一个新的接收器与原有鼠标相互配对的方法。 在开始之前,大家需要首先查看两个内容:首先是原有的鼠标——大家需要查看自己的鼠标(罗技键盘也是同样的操作)底部&…

【动态规划】309. 买卖股票的最佳时机含冷冻期、 714. 买卖股票的最佳时机含手续费

提示:努力生活,开心、快乐的一天 文章目录 309. 买卖股票的最佳时机含冷冻期💡解题思路🤔遇到的问题💻代码实现🎯题目总结 714. 买卖股票的最佳时机含手续费💡解题思路🤔遇到的问题&…

MybatisPlus 从零开始 全面学习!

引入 本文以下将mybatisPlus简称为mp 首先注意: mybatisPlus不是mybatis 的替代品,而是增强mybatis的技术. 只做增强不做改变, 引入他不会对现有工程产生影响. 快速入门 基本步骤 以下为mapper例子: 要继承这个BaseMapper类, 并在泛型括号中 标注好要操作的类 public interf…

【题解】[NOIP2015]扫雷游戏(Java C++)

题目描述 见 P2670 [NOIP2015 普及组] 扫雷游戏 - 洛谷。 前置知识 无。 题目分析 只需要统计每一个格子周围 8 个格子的地雷数量即可。 重点是处理边界情况,比如左上角,有五个格子不在数组范围内,需要特殊处理。 为了避免思路混乱&a…

div盒子放在页面正中间,添加旋转动画的时候,盒子向右下偏移

一、问题代码(核心部分) //盒子定位在页面正中心 #spinner { position: absolute; left: 50%; top: 50%; border: #2ecc71 solid 1px; transform: translate(-50%, -50%); animation: rotate 5s linear 2s forwards; transform-origin: 50% 50%; } keyfr…

hadoop组成

在hadoop1.x时代,Hadoop中的MapReduce同时处理业务逻辑运算和资源调度,耦合性较大; 在hadoop2.x时代,新增了yarn,主要负责资源的调度,MapReduce仅负责运算; 在hadoop3.x时代,在组成上没有变化;

【Vue面试题二十八】、vue要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:vue要做权限管理该怎么做…

社区活动|Apollo开发者城市活动·长沙站来啦!

Apollo开发者城市活动长沙站 2023/10/22 🙋想亲身乘坐无人车,感受自动驾驶技术的魅力吗? 🙋想与技术大咖面对面,了解自动驾驶的历史与原理吗? 🙋想与本地开发者交流心得,实现自动…

springboot自动配置原理面试题(自用)

springboot自动装配主要是基于注解编程和约定大于配置的思想设计 核心步骤: 1 组件必须包含configuration并声明为bean注解返回注入到IOC容器中 2 第三方jar包,根据/meta-inf/目录下增加spring.factories文件加载配置文件中的内容 3 springboot获取到…

游戏开发这么久没见过github-lfs-居然不能下载图片的,这就让你见到了解决方法

以前很少见到github上有游戏的整体仓库,还觉得是游戏人都不爱分享 git 是很好的分布式代码管理,但对于大部分的“”云资源“”管理,git的很多原生功能并不擅长 现在想想,其实也合理,基本只要是手游换皮游戏&#xff…

注释的两难之道:程序员的反思

文章目录 代码即注释?注释的艺术1. 注释要言简意赅2. 注释的时机3. 注释内容4. 避免无意义的注释5. 维护注释 如何看待注释? 🎉欢迎来到Java学习路线专栏~注释的两难之道:程序员的反思 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f3…

JDBC批量插入数据

PreparedStatement的一些好处 1.PreparedStatement可以防止SQL注入 2.PreparedStatement可以操作Blob数据,Statement做不到. 3.PreparedStatement可以实现更高效的批量操作 演示PreparedStatement批量操作 在数据库操作中 update,delete后面如果没有条件,本身就可以就可以…

基于html5开发的Win12网页版,抢先体验

据 MSPoweruser 报道,Windows 11虽然刚刚开始步入正轨,但最新爆料称微软已经在开启下一个计划,Windows 12 的开发将在 去年3 月份开始。德国科技网站 Deskmodder.de 称,根据内部消息,微软将在 2022年3 月开始开发 Wind…

02_单片机及开发板介绍

单片机简介 单片机,又称为微控制器(Microcontroller),是一种集成了微处理器核心、存储器、输入/输出接口及各种功能模块的集成电路芯片。它通常由中央处理器(CPU)、存储器、输入/输出接口以及各种外设组成&…

HDLbits: Fsm serial

根据题意设计了四个状态,写出代码如下: module top_module(input clk,input in,input reset, // Synchronous resetoutput done ); parameter IDLE 3b000, START 3b001, DATA 3b010, STOP 3b100, bit_counter_end 4d7;reg [2:0] state,next_sta…

关于TCP协议面试中常见的一千个问题

TCP传输层控制协议 TCP是面向连接的、可靠的、基于字节流的传输层通信协议。 TCP 头部格式 1、 源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。 2、 序号字段——占 4 字节。TCP 连接中传送的数据流中…

诊断DLL——Vector模板生成Send2Key.dll

文章目录 前言一、Vector诊断控制台Secutity Access基本原理二、Seed2Key DLL生成GenerateKeyEx源码自定义安全算法源码CAPL调用27服务解密算法前言 在实际诊断工程应用中,如UDS刷写——27服务,经常会遇到一些Seed2Key的算法问题,为了安全保密,这个算法的源码不便公开,我…

【C++基础】10. 指针

文章目录 【 1. 指针的定义 】【 2. 指针的调用 】【 3. NULL 空指针 】【 4. 指针的算术运算 】4.1 指针的递加4.2 指针的递减4.3 指针的比较 【 5. 指针与数组 】5.1 通过指针操作数组5.2 指针数组、数组指针 【 6. 指向指针的指针(多级间接寻址)】【 7. 传递指针给函数 】【…