网络应用层

news/2024/11/28 8:25:54/

目录

  • 应用层
  • 网络版计算器
  • 服务器守护进程化
  • HTTP协议
    • URL
    • urlencode和urldecode
  • HTTP协议格式
  • HTTP的方法
  • HTTP的状态码
  • HTTP常见Header
    • GET/POST
    • 重定向
    • 会话管理
    • 长连接与短链接
  • 简易HTTP代码
  • HTTPS

应用层

应用层的目的是向应用程序提供网络接口,直接向用户提供服务。应用协议要常见有 HTTP 、HTTPS 、SSH 等应用层协议。传输层的端口号用于标识数据所对应的应用层协议。也就是说,有端口号的协议都是应用层协议。应用协议是终端设备之间的应用通信规则。应用之间交互的信息叫消息,应用协议定义这些消息的格式以及消息的控制或操作的规则。

网络版计算器

相关代码

服务器守护进程化

什么是守护进程?
守护进程(Daemon Process),也就是通常说的 Daemon 进程(精灵进程),是 Linux 中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。

守护进程是个特殊的孤儿进程,这种进程脱离终端,为什么要脱离终端呢?之所以脱离于终端是为了避免进程被任何终端所产生的信息所打断,其在执行过程中的信息也不在任何终端上显示。由于在 Linux 中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进程都会自动关闭。

Linux 的大多数服务器就是用守护进程实现的。比如,Internet 服务器 inetd,Web 服务器 httpd 等。

#pragma once#include <iostream>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>void MyDaemon()
{// 1. 忽略信号,SIGPIPE,SIGCHLDsignal(SIGPIPE, SIG_IGN);signal(SIGCHLD, SIG_IGN);// 2. 不要让自己成为组长if (fork() > 0)exit(0);// 3. 调用setsidsetsid();// 4. 标准输入,标准输出,标准错误的重定向,守护进程不能直接向显示器打印消息// int devnull = open("/dev/null", O_RDONLY | O_WRONLY);int devnull = open("null.txt", O_RDONLY | O_WRONLY | O_CREAT);if(devnull > 0){// dup2(0, devnull);// dup2(1, devnull);// dup2(2, devnull);dup2(devnull, 0);dup2(devnull, 1);dup2(devnull, 1);close(devnull);}
}

在这里插入图片描述

HTTP协议

URL

在这里插入图片描述

urlencode和urldecode

像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现.
转义的规则如下:
将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式
在这里插入图片描述“+” 被转义成了 “%2B”
urldecode就是urlencode的逆过程;
urlencode工具

HTTP协议格式

在这里插入图片描述
Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度;
在这里插入图片描述

HTTP的方法

在这里插入图片描述

HTTP的状态码

在这里插入图片描述

HTTP常见Header

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

GET/POST

在这里插入图片描述

重定向

在这里插入图片描述

会话管理

在这里插入图片描述

长连接与短链接

在这里插入图片描述

简易HTTP代码

代码

HTTPS

参考https博客


http://www.ppmy.cn/news/39274.html

相关文章

SQL SERVER数据库生成数据字典并且导出方法

SQL SERVER数据库生成数据字典并且导出方法打开SQL SERVER 2014找到你所需要建立数据字典的数据库在代码区输入如下SQL语句点击运行&#xff0c;导出或者带标题复制出来打开SQL SERVER 2014找到你所需要建立数据字典的数据库 右键→点击 新建查询 在代码区输入如下SQL语句 S…

类的加载过程-过程二:Linking阶段

链接过程之验证阶段(Verification) 当类加载到系统后&#xff0c;就开始链接操作&#xff0c;验证是链接操作的第一步。 它的目的是保证加载的字节码是合法、合理并符合规范的。 验证的步骤比较复杂&#xff0c;实际要验证的项目也很繁多&#xff0c;大体上Java虚拟机需要做…

使用ControlNet 控制 Stable Diffusion

本文将要介绍整合HuggingFace的diffusers 包和ControlNet调节生成文本到图像&#xff0c;可以更好地控制文本到图像的生成 ControlNet是一种通过添加额外条件来控制扩散模型的神经网络结构。它提供了一种增强稳定扩散的方法&#xff0c;在文本到图像生成过程中使用条件输入&…

面向对象编程(基础)9:封装性(encapsulation)

目录 9.1 为什么需要封装&#xff1f; 而“高内聚&#xff0c;低耦合”的体现之一&#xff1a; 9.2 何为封装性&#xff1f; 9.3 Java如何实现数据封装 9.4 封装性的体现 9.4.1 成员变量/属性私有化 实现步骤&#xff1a; 成员变量封装的好处&#xff1a; 9.4.2 私有化…

IEArch-卷积神经网络

一、感受 ​ 这次作业的神经网络是比上一次作业复杂的&#xff0c;上一次作业是“多层感知机&#xff08;MLP&#xff09;”&#xff0c;这一次的作业是“卷积神经网络&#xff08;CNN&#xff09;”。运算从原来的矩阵乘法变成了卷积&#xff0c;网络结构也更加复杂&#xff…

Pod生命周期简洁版

Pod 的生命周期 Pod 的生命周期 官方文档链接 Pod的status字段是一个PodStatus的对象&#xff0c;PodStatus中有一个phase字段。无论是手动创建还是通过Deployment等控制器创建&#xff0c;Pod对象总是应该处于其生命进程中以下几个阶段&#xff08;phase&#xff09;之一。 …

koa开发实践2:为koa项目添加路由模块

nodeJS server-side-developkoa开发实践2&#xff1a;为koa项目添加路由模块上一节&#xff1a;《 koa开发实践2&#xff1a;为koa项目添加路由模块 》| 下一节&#xff1a;《 koa开发实践3&#xff1a;在koa项目中使用 swagger 文档 》作者&#xff1a; 李俊才&#xff1a;…

Android 事件分发源码解析(基于API31)

文章目录事件分发从何说起&#xff1f;以一个什么框架去学习&#xff1f;重点关于事件事件是由一系列事件组成的事件流。这里先总览一下这三个方法都要做些什么&#xff1a;View的事件分发先明确一下框架中提到的问题&#xff1a;View 的事件分发源码分析总结ViewGroup的事件分…