大菜鸡对动态网络和网络协议的naive理解

2023-12-14 18:08

本文主要是介绍大菜鸡对动态网络和网络协议的naive理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

建议在阅读这篇之前看一下web的基本运作方式(如果不知道的话):

关于网络知识(网络运作方式)的常识(也是在下的菜鸡理解)

好了,先来具体看一下关于协议的东西。协议是计算机通过网络交流要共同遵循的套路,网络协议对交流过程中可能遇到的各种问题该咋办都做了规定。协议就像是人类交流的语言。TCP/IP协议像汉语一样用得最多。
TCP/IP协议群是用的最多,http就是其中一个。

ISO(international organization for standardization,国际标准化机构)规定了宏观的七层网络体系,TM我至今没懂七层究竟都他妈在干啥。每层都干自己的事情,层层互不干扰。某一层协议变化并不影响其它层。举个例子:电话有两层,语音和电气层,你说话不用考虑电流是啥,电话只管转化电流而不管你说啥。你从中文改成英文不会对电气层产生任何影响。

然后TCP/IP把七层弄成四层了:http就在最高的4层应用层saf

http主要规定了web的信息交换的格式方法。即规定了如何互相请求和应答,请求和应答以文本的形式传输,以及这种文本的格式等。
在这里插入图片描述
这张图很清楚地描述了各协议的配合和http负责的东西。我发现http负责的东西在开始那个链接里其实已经讲过了。
http最牛逼的是它规定了消息的格式:

请求消息的格式:

HTTP请求是客户端往服务端发送请求动作,告知服务器自己的要求。
HTTP请求由状态行、请求头、请求正文三部分组成:

状态行:包括请求方式Method、资源路径URL、协议版本Version;

请求头:包括一些访问的域名、用户代理、Cookie等信息;
中间有个空行。
请求正文:就是HTTP请求的数据(这具体是啥我也不知道,请大佬在评论多多指教)。

备注:请求方式Method一般有GET、POST、PUT、DELETE,含义分别是获取、修改、上传、删除,其中GET方式仅仅为获取服务器资源,方式较为简单,因此在请求方式为GET的HTTP请求数据中,请求正文部分可以省略,直接将想要获取的资源添加到URL中。下图所示就是GET的请求,没有请求正文。详细的说明在下边。
现在大多数协议版本为http/1.1。

二、HTTP响应

服务器收到了客户端发来的HTTP请求后,根据HTTP请求中的动作要求,服务端做出具体的动作,将结果回应给客户端,称为HTTP响应。

HTTP响应由三部分组成:状态行、响应头、响应正文;

状态行:包括协议版本Version、状态码Status Code、回应短语;

响应头:包括搭建服务器的软件,发送响应的时间,回应数据的格式等信息;

响应正文:就是响应的具体数据,一般是html代码,浏览器会显示。

常见状态码的含义

    200---OK/请求已经正常处理完毕301---/请求永久重定向302---/请求临时重定向304---/请求被重定向到客户端本地缓存400---/客户端请求存在语法错误401---/客户端请求没有经过授权403---/客户端的请求被服务器拒绝,一般为客户端没有访问权限404---/客户端请求的URL在服务端不存在500---/服务端永久错误503---/服务端发生临时错误

关于一些主要代码比如Accept或ETag等的意思,感觉知道好像没啥用?如果觉得有用就自己Google吧,反正我不会。

然后我们看一下动态网络。。。。

实现动态网络的方法大概有几种

CGI(Commen Gateway Interface,直译过来大概是通用网关接口,即基于服务器的动态程序),基于客户端(浏览器)的动态处理;
还有就是web映射。

CGI

CGI是存在于服务器的程序,可由多种高级语言编写(c++,Java。。。),这些程序可以根据浏览器的信息(比如用户的输入等),自动计算或去别的数据库查找,然后自己将获取的信息生成格式化的HTML代码,发送回客户端。而用户出入后点击提交等按钮实际上是指定了URL(网址),比如http://www.ooo.co.jp/a.cgi就是点击按钮后浏览器实际发出的请求。
CGI的工作流程如下:
1.浏览器通过URL发出请求消息
2.经过DNS等层层处理被服务器收到
3.CGI程序启动运行去计算或查数据库或干别的指定的事
4.CGI生成HTML
5.发出相应消息给客户端
6.客户端浏览器显示。

基于客户端(浏览器)的动态处理

可以在HTML中指定小程序,浏览器发现有陷入小程序的要求时,再向服务器申请下载小程序,下完后又浏览器解码执行。所以执行者是浏览器而不是服务器,跟上面那个不同。

web映射

因为服务器的数据会经常更新,所以浏览器访问服务器时服务器会给元数据(即版本信息,更新信息等,和外卖的票挺像的)。浏览器就会根据这来自动定期访问服务器。若没有用户申请,两者都用元数据交流,不用文件本身交流,提高了效率。

希望大佬能发现我理解错或不足之处,评论指出

下面放上我老婆,希望她能带给我好运,希望她能让更多大佬在评论指教。
在这里插入图片描述

这篇关于大菜鸡对动态网络和网络协议的naive理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/493505

相关文章

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

如何用Python绘制简易动态圣诞树

《如何用Python绘制简易动态圣诞树》这篇文章主要给大家介绍了关于如何用Python绘制简易动态圣诞树,文中讲解了如何通过编写代码来实现特定的效果,包括代码的编写技巧和效果的展示,需要的朋友可以参考... 目录代码:效果:总结 代码:import randomimport timefrom math

Java中JSON字符串反序列化(动态泛型)

《Java中JSON字符串反序列化(动态泛型)》文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导... 需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。方案一:将方法参数存成jsON字

.NET利用C#字节流动态操作Excel文件

《.NET利用C#字节流动态操作Excel文件》在.NET开发中,通过字节流动态操作Excel文件提供了一种高效且灵活的方式处理数据,本文将演示如何在.NET平台使用C#通过字节流创建,读取,编辑及保... 目录用C#创建并保存Excel工作簿为字节流用C#通过字节流直接读取Excel文件数据用C#通过字节

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依