01前端导入

【一】前后端介绍

1.前端:通俗的说就是用户所看到的页面,通过浏览器渲染出来的页面
2.后端:就是对数据进行逻辑校验和加密等操作,用户看不到的操作

【二】浏览器访问地址全流程

1.输入网址--》https://www.baidu.com/域名
2.解析域名----》变成一串数字:端口号,IP地址+端口号,会标记一个独一无二的接入网络的应用程序
3.用IP地址+端口号与服务器(通过三次握手)建立TCP连接
4.服务端接收请求,响应请求发送数据给客户端
5.客户端(前端)得到响应数据后,对页面进行渲染后,与服务器断开本次请求连接
    断开的连接不是指TCP的连接
    本次的请求被断开
"""注意:用户所看到的界面都加载好了,浏览器(客户端)通常会继续与服务器保持连接(如果连接是持久的),以便处理后续的用户交互(如点击按钮、提交表单等),这些交互通常会触发新的HTTP请求。由于每个HTTP请求都是独立的,并且一旦其响应被接收和处理,该请求就被认为是“完成”的。所以要断开这次请求连接但是tcp链接是没有断开的"""

【三】学习http协议前须知

1.Mac地址---》网卡地址
2.广播---》在同一个局域网内有一台主机发送消息,一个局域网内的主机都能收到
3.ethernet---》以太网协议,Ethernet(以太网)是一种广泛应用于局域网(LAN)的计算机通信技术,它采用了一系列标准和规范,确保不同设备之间的有效通信
4.IP---》每台计算机接入互联网的地址
5.port---》标识每台计算机上的应用程序
6.HTTP协议---》超文本传输协议,是一个应用层协议,用于在万维网上传输超文本和其他数据。规定客户端怎么与服务器交换信息和提供服务
7.internet--->互联网,多个局域网通过路由器连接在一起组成互联网

【四】HTTP协议(重点)

1.自己写的服务器和浏览器无法交互,是由于我们的服务器没有遵守HTTP协议去传输数据
2.HTTP协议特点
1.无状态---》服务器不会记住请求的任何信息,而且每个请求都是独立的,服务器只会对当前的请求进行响应,服务端无法区分多次请求的客户端是否同一个客户端。
2.是一种应用层协议
3.是基于响应和请求的协议---》所有请求都是客户端发起,服务端响应
4.短连接
就是每个请求都是独立的,请求得到响应完成后,就会断开请求连接
5.持久连接
都是在不断的交换数据,TCP连接是没有断开的
​

【五】HTTP请求和响应格式

(1)请求格式
     客户端给服务端发送消息应该遵循的数据格式 
        请求首行(请求方法  请求路径  协议版本)
        请求头(一大堆k:v键值对)
        (换行不能省略)
        请求体(携带敏感数据:密码 身份照号...) 不是一直都有
"""         
请求方法  请求路径  http协议版本                   <---- http响应的一行内容,也叫请求行
请求头选项1: 选项值
请求头选项2: 选项值
....
请求头选项n: 选项值
​
请求体(可以有多行,前后必有空行)
eg:
1.发送get请求
GET  /get  HTTP/1.1
Host: httpbin.org
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
2.发送post请求
POST /post HTTP/1.1
Host: httpbin.org
Content-Type: application/json
Content-Length: 44
​
{"name": "xiaoming", "age": 16,"pwd": "123"}
"""
(2) 响应格式
    服务端给客户端发送消息应该遵循的数据格式 
        响应首行(响应状态码 协议版本)
        响应头(一大堆k:v键值对)
        (换行不能省略)
        响应体(给浏览器展示给用户看的页面内容)
"""
响应状态码 响应文本提示 协议版本                             <-----  http响应的第一行内容,响应行
响应头选项1: 选项值
响应头选项2: 选项值
....
响应头选项n: 选项值
(换行不能省略)
响应体(服务端返回的正文信息,前后必有空行)
​
"""

(1)请求方法
请求方法描述
GET表示客户端希望从服务器中获取下载资源信息
POST表示客户端希望上传文件或通过请求在服务器创建资源信息。
PUT表示客户端希望修改或更新服务器资源(表示修改全部资源信息,例如数据表的一整个记录)
PATCH表示客户端希望修改或更新服务器资源(表示修改部分资源信息,例如数据表的一个记录里面某个属性值)
DELETE表示客户端希望删除或废弃服务器资源
OPTION表示客户端希望获取服务器所支持的请求方法列表
HEAD表示客户端希望获取服务器支持的跨域地址列表
(2)请求头
对客户端的一些说明
选项描述
Host指定客户端请求的服务器的域名和端口号。
Content-Type告诉服务器,客户端请求携带的请求体数据的媒体类型信息(MIME类型)
User-Agent告知服务器HTTP 客户端网络代理程序的版本信息,一般就是浏览器的版本信息。
Authorization告知服务器客户端的Web认证信息。
Content-LengthHTTP报文中请求体的大小,以字节为单位。
Referer告诉服务器该网页是从哪个页面链接过来。也就是上一页页面的地址。
Accept指定客户端能够接收并理解的媒体类型类型(MIME类型),用于表达希望服务端的返回资源格式。
Accept-Encoding指定浏览器可以支持的web服务器返回内容压缩编码类型。
Pragma指定服务端控制缓存行为。http/1.0以前的字段。
Cache-Control指定服务端控制缓存行为。http/1.1以后的字段。
Upgrade向服务器请求在当前http协议的基础上升级采用新的某种传输协议以便服务器进行转换
Connection指定本次http通信结束以后,是否关闭TCP网络连接。如果设置持久连接,则可以在一次会话中,可以使用同一个TCP连接,进行多次的HTTP通信,提高效率。
(3)常见的MIME格式
描述别名
HTML网页
json文本text/json
纯文本,普通文本
xml文档
js脚本text/javascript
css样式
png格式图片
jpg格式图片
gif格式图片
gzip格式压缩包
doc文档
docx文档
xls文档
xlsx文档
pdf文档
mp3音频
mp4视频
(4)响应状态码
状态码类型描述
1xx告诉客户端,本次请求,服务端还在持续处理中,并没有结束
2xx告诉客户端,本次请求,服务端已经接收并成功受理了。
3xx告诉客户端,服务端位置发生改变,希望客户端重定向访问跳转新的服务器地址进行请求
4xx告诉客户端,本次请求有误,服务器无法处理。
5xx告诉客户端,本次请求服务端在处理过程中服务端出错了。
常见状态码
状态码响应信息描述
101Switching Protocols服务器已经理解了客户端的请求,并将通过Upgrade消息头通知客户端采用升级协议来完成请求。
200OK请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。常用于GET,PUT或PATCH
201Created请求已成功,请求的资源已经创建成功或更新完成,常用于POST,PUT或PATCH
204No Content请求已成功,但是没有任何内容返回。常用于DEELTE
301Moved Permanently永久重定向,表示当前客户端请求的资源地址已经永久发生改变。
302Move Temporarily临时重定向,表示当前客户端请求的资源地址还存在,但是访问客户端达不到访问资源的条件,所以暂时无法访问。
304Not Modified表示本次客户端请求的资源,并非来自服务端,而是本地缓存。如果web项目有做了客户端缓存,一般静态文件都会出现304
305Use Proxy被请求的资源必须通过指定的代理才能被访问。
307Temporary Redirect请求的资源临时从不同的URI 响应请求。
400Bad Request本次请求,报文语义有误或请求参数有误,当前请求无法被服务器理解。
401Unauthorized本次请求,需要需要用户验证,但用户并没有提供认证。
403Forbidden服务器已经理解请求,但是拒绝执行它。一般是因为没有权限导致的。
404Not Found请求失败,请求所希望得到的资源未被在服务器上发现,请求路径不存在。
405Method Not Allowed请求行中指定的请求方法不能被用于请求相应的资源。使用了错误的请求方法。
500Internal Server Error服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。就是服务端的代码报错了。
502Bad Gateway网关宕机,作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。一般就是大量访问请求导致服务器瘫痪或宕机了。
503Service Unavailable网关过载,由于临时的服务器维护或者过载,服务器当前无法处理请求。
504Gateway Timeout网关超时,作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器或者辅助服务器(例如DNS)收到响应。
507Insufficient Storage服务器无法存储完成请求所必须的内容。

【六】服务器模板

import socket
server=socket.socket()
server.bind(("127.0.0.1",8810))
server.listen(5)
sock,addr=server.accept()
while True:
    data=sock.recv(1024)
    data_str=data.decode()
    print(data_str)
    # 响应行
    respoonse_line="HTTP/1.1 200 OK\r\n"
    # 响应头
    response_header = "Server:Python20ws/21.1\r\n"
    # 空行
    response_blank = "\r\n"
    # 响应主体
    response_body = "<html><h1>HelloWorld!<h1/><html/>"
    data1=respoonse_line+response_header+response_blank+response_body
    sock.send(data1.encode())
​

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

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

相关文章

数据结构学生信息顺序表

主程序 #include "fun.h" int main(int argc, const char *argv[]) { seq_p Screate_seq(); stu data; printf("请问要输入几个学生的数据&#xff1a;"); int n; scanf("%d",&n); while(n--) { prin…

cloudflare tunnels tcp

这里是官网的说明Cloudflare Tunnel Cloudflare Zero Trust docs 根据实际情况安装环境 tunnels除了http,https协议是直接暴露公网&#xff0c;tcp是类似ssh端口转发。 在需要内网穿透的局域网找一条机子部署代理 我这边是window cloudflared tunnel login #生成一个身份校…

防火墙概述

1、防火墙 防火墙顾名思义就是防止火灾发生时&#xff0c;火势烧到其它区域&#xff0c;使用由防火材料砌的墙。在网络安全中&#xff0c;防火墙的作用就是保护本地网络不受到外部网络或恶意程序的伤害。 防火墙的核心任务是控制和防护&#xff0c;即通过安全策略识别流量并做…

【周末闲谈】AI“抢饭碗”?绝对不是危言耸听

AI是在帮助开发者还是取代他们? 在软件开发领域,生成式人工智能(AIGC)正在改变开发者的工作方式。无论是代码生成、错误检测还是自动化测试,AI工具正在成为开发者的得力助手。然而,这也引发了对开发者职业前景和技能需求变化的讨论。AI究竟是在帮助开发者还是取代他们?…

【论文阅读】-- Visual Analytics for Model Selection in Time Series Analysis

时间序列分析中模型选择的可视化分析 摘要1 引言2 相关工作3 问题表征3.1 Box-Jenkins 方法论3.2 ARIMA 和季节性 ARIMA 模型3.3 模型规范3.4 模型拟合3.5 模型诊断 4 需求分析5 VA 用于时间序列分析中的模型选择5.1 VA选型流程说明5.2 TiMoVA 原型5.2.1 实施选择5.2.2 图形用户…

【JavaSE复习】数据结构、集合

JavaSE 复习 1.数据结构1.1 查找1.1.1 基本查找1.1.2 二分查找1.1.3 插值查找1.1.4 斐波那契查找1.1.5 分块查找1.1.6 分块查找的扩展&#xff08;无规律数据&#xff09; 1.2 排序1.2.1 冒泡排序1.2.2 选择排序1.2.3 插入排序1.2.4 快速排序 2. 集合2.1 基础集合2.1.1 集合和数…

MyBatis中二级缓存的配置与实现原理

大家好&#xff0c;我是王有志&#xff0c;一个分享硬核 Java 技术的金融摸鱼侠&#xff0c;欢迎大家加入 Java 人自己的交流群“共同富裕的 Java 人”。 上一篇文章《MyBatis中一级缓存的配置与实现原理》中&#xff0c;我们已经掌握了 MyBatis 一级缓存的配置&#xff08;虽然…

使用AOP思想实现开闭原则下的流水日志输出

主要实现思想&#xff1a; 通过实现Convert接口来抽取公共组件&#xff0c;获取想要的标准模型。 现在有两个订单场景&#xff0c;一个保存订单&#xff0c;一个为更新订单。构造如下的服务类&#xff1a; import org.springframework.stereotype.Service;Service public clas…

pwm 呼吸灯(如果灯一直亮或者一直灭)

&#xff08;这个文章收藏在我的csdn keil文件夹下面&#xff09; 如果这样设置预分频和计数周期&#xff0c;那么算出来的pwm频率如下 人眼看起来就只能是一直亮或者灭&#xff0c;因为pwm的频率太高了&#xff0c;但是必须是频率够高&#xff0c;才能实现呼吸灯的缓慢亮缓慢…

Django之项目开发(一)

一、项目的生命周期介绍 传统Web 项目的生命周期指的是从开始构建一个网站到该网站完成并维护的整个过程。通常情况下,Web 项目的生命周期包括以下几个阶段 需求分析阶段:在这个阶段,项目组会与客户进行沟通,确定网站的功能、内容和设计。 主要由产品经理参与产出思路与方案…

ChatGPT-4o大语言模型优化、本地私有化部署、从0-1搭建、智能体构建等高级进阶

目录 第一章 ChatGPT-4o使用进阶 第二章 大语言模型原理详解 第三章 大语言模型优化 第四章 开源大语言模型及本地部署 第五章 从0到1搭建第一个大语言模型 第六章 智能体&#xff08;Agent&#xff09;构建 第七章 大语言模型发展趋势 第八章 总结与答疑讨论 更多应用…

Nginx auth 的权限验证

基本流程 整个流程为&#xff1b;以用户视角访问API开始&#xff0c;进入 Nginx 的 auth 认证模块&#xff0c;调用 SpringBoot 提供的认证服务。根据认证结果调用重定向到对应的 API 接口或者 404 页面。 查看版本保证有 Nginx auth 模块 由于 OpenAI 或者本身自己训练的一套…

数据结构(其一)--基础知识篇

1. 数据结构三要素 1.1 数据结构的运算 即&#xff0c;增删改查 1.2 数据结构的存储结构 2. 数据类型&#xff0c;抽象数据类型 数据类型&#xff1a; &#xff08;1&#xff09;. 原子类型&#xff1a;bool、int... &#xff08;2&#xff09;. 结构类型&#xff1a;类、…

Linux多线程(中)

Linux多线程&#xff08;中&#xff09; 1.Linux线程互斥1.1互斥量的接口1.1.1初始化互斥量1.1.2销毁互斥量1.1.3互斥量加锁和解锁 1.2修改代码1.3互斥量实现原理 2.可重入VS线程安全3.死锁4.Linux线程同步5.生产者消费者模型 &#x1f31f;&#x1f31f;hello&#xff0c;各位…

Java 自定义集合常量

文章目录 Java 自定义集合常量一、普通方法自定义集合常量信息1、定义 Map 集合信息&#xff08;1&#xff09;方法一&#xff1a;使用静态代码块&#xff08;2&#xff09;方法二&#xff1a;简单定义 Map 常量 2、定义 List 集合信息3、定义 Set 集合信息 二、通过 Collectio…

用win的控制台去远程连接虚拟机linux的终端

以Ubuntu为例&#xff0c;首先确保Ubuntu已经安装了ssh服务 sudo apt-get install openssh-server输入密码 安装完毕后查看ssh状态是否开启 sudo systemctl status ssh 显示绿色激活状态&#xff0c;可以关闭或开启 对应start和stop winr打开win端控制台 输入 ssh -p 22 …

python-22-零基础自学python-数据分析基础 打开文件 读取文件信息

学习内容&#xff1a;《python编程&#xff1a;从入门到实践》第二版 知识点&#xff1a; 读取文件 、逐行读取文件信息等 练习内容&#xff1a; 练习10-1:Python学习笔记 在文本编辑器中新建一个文件&#xff0c;写几句话来总结一下你至此学到的Python知识&#xff0c;其中…

ASCII码对照表(Matplotlib颜色对照表)

文章目录 1、简介1.1 颜色代码 2、Matplotlib库简介2.1 简介2.2 安装2.3 后端2.4 入门例子 3、Matplotlib库颜色3.1 概述3.2 颜色图的分类3.3 颜色格式表示3.4 内置颜色映射3.5 xkcd 颜色映射3.6 颜色命名表 4、Colorcet库5、颜色对照表结语 1、简介 1.1 颜色代码 颜色代码是…

声明队列和交换机 + 消息转换器

目录 1、声明队列和交换机 方法一&#xff1a;基于Bean的方式声明 方法二&#xff1a;基于Spring注解的方式声明 2、消息转换器 1、声明队列和交换机 方法一&#xff1a;基于Bean的方式声明 注&#xff1a;队列和交换机的声明是放在消费者这边的&#xff0c;这位发送的人他…

OSS存储桶漏洞总结

简介 OSS&#xff0c;对象存储服务&#xff0c;对象存储可以简单理解为用来存储图片、音频、视频等非结构化数据的数据池。相对于主机服务器&#xff0c;具有读写速度快&#xff0c;利于分享的特点。 OSS工作原理&#xff1a; 数据以对象&#xff08;Object&#xff09;的形式…