当前位置:网站首页>网络基础知识
网络基础知识
2022-07-13 17:38:00 【qinqinzqq】
CDN :content delivery network
内容分发网络,就是提供很多的服务器,用户访问时,自动就近选择服务器给用户提供资源
网络:在网络的世界里,两个应用程序之间经常会发生通信
在大部分情况下,通信总是由一方发出一个消息开始,而另一方回复一个消息结束
发出消息的一方称之为客户端Client,发出消息的过程称之为请求Request
回复消息的一方称之为服务器Server,回复消息的过程称之为响应Response
这个过程中,有几个点需要特别注意:
1、不管是客户端,还是服务器,它们都是一个应用程序,而不是一台计算机,客户端和服务器可以分布在不同的计算机上,也可以在同一个计算机上,并不需要特殊看待(比如我们之前接触的live server插件,就是一个服务器,它运行在本地的计算机上,大部分后段开发的就是服务器程序,前端的Node技术也能开发服务器程序)
2、客户端和服务端的这种交互模式称之为【经典c/s结构】,在这种结构中,如果客户端是浏览器,则我们称之为B/S结构
3、服务器程序往往是互联网产品提供服务,因此又称之为web服务器
4、一次完整的交互,总是从请求开始,响应结束
URL:uniform resource locator 统一资源定位符,它是一个字符串,用于表达互联网中某个资源的位置
一个完整的url地址(示例):
协议+主机+端口+路径+参数+hash
http:// + www.baidu.com + :8080 + /news/2022 + ?page=1&limit=10 + #main
协议Protocal/Schema:它表示客户端希望用什么方式和服务器沟通
主机Host:它表示客户端希望在哪台计算机上寻找资源,这里有两种写法:IP地址和域名
IP地址:IP地址是一个网络中计算机的唯一编号,通常,一个IP对应一台计算机(特殊的IP地址:127.0.0.1,它表示本机IP,IP地址的访问是不能用https的,只能用HTTP)
域名:域名类似IP地址的别名,把不容易记忆的数字变为容易记忆的单词,当使用域名访问时,会自动转换为IP地址(记住特殊域名:Localhost,它表示的IP地址为127.0.0.1)
端口Port:它表示客户端希望在哪个应用程序中寻找资源
每个服务器程序,都会监听一个或多个端口,只有找到对应的端口,才能找到这个服务器程序,端口号是可选的,若不填写:
如果使用的是http协议,默认端口号为80
如果使用的https,默认端口号为443
路径Path :服务器上往往有许许多多的资源,每个资源都有自己的访问路径,路径是可选的,若不填写,则路径为 /
参数Query/Param:某些资源可以根据需要呈现不同的内容,参数部分可以包含多个参数,不同的参数之间使用&符号分割,参数是可选的
hash:在网络通信中,hash没有什么作用,往往作为浏览器的锚链接出现
http是基于请求-响应的方式完成通信的,每一次通信都是由客户端向服务器发出请求,传递一些消息过去,然后经过服务器程序处理后,响应给客户端一些消息
http协议规定:
1、每次请求-响应都是独立的,相互之间互不干扰,这种模式的协议我们称之为无状态协议
2、每次请求-响应传递的消息都是纯文本(字符串),而且文本格式必须按照http协议规定的格式来书写
请求行:请求行是整个http报文的第一行字符串,它包含三个部分:
请求方法 路径+参数+hash 协议和版本
约定俗成的规范:动作通常有:GET获取资源、POST提交消息、PUT修改数据、DELETE删除数据;
GET和DELETE请求不能有请求体,而POST和PUT请求可以有请求体;由于GET请求没有请求体,所以要传递数据只能把数据放到URL的参数中;
常见的get请求:在地址栏输入地址并按下回车、点击了某个A元素、获取图片、音频、获取css、js、字体等文件(事实上,浏览器自动发出的请求基本都是Get请求,而POST请求需要开发者手动处理,比如在form表单中设置method为post)
请求头header:请求头是一系列的键值对,里面包含了诸多和业务无关的信息
1、host:url地址中的主机
2、User-Agent:客户端的信息描述
3、Content-Type:请求体的消息是什么格式,如果没有请求体,这个字段无意义,常见的取值:
application/x-www-form-urlencoded
表示请求体的数据格式和url地址中参数格式一样;
application/json表示请求体是json格式
multipart/form-data一种特殊的格式,上传文件一般选择该格式
请求体body:包含业务数据的字符串,里面的内容格式要和请求头的格式一致
响应信息:
响应行:响应行包括两部分
1)协议版本:表示服务器打算和客户端用什么协议通信
2)状态码、状态信息:表示服务器对当前请求的表态
通常,状态码和状态消息是一一对应的,比如状态码200的消息就是OK,不同的请求可能会得到不同的状态码,至于到底会得到哪个状态码,由后端程序决定
状态码分为5类:
1** :信息,服务器收到请求,需要请求者继续执行操作
2** :成功,操作被成功接收并处理
3** :重定向,需要进一步的操作以完成请求
4** :客户端错误,请求包含语法错误或无法完成请求
5** :服务器错误,服务器在处理请求的过程中发生了错误
通常认为,0~399之间的状态码都是正常的,其他的都是不正常的
常见的状态码:
1)200 OK 一切正常
2)301 Moved Permanently 资源已被永久重定向 (你的请求我收到了,但是,你要的东西不在这个地址,我已经永远的把它移动到了一个新的地址,麻烦你请求新的地址,地址我放到了响应头的Location中了)
3)302 Found 资源已被临时重定向(你的请求我收到了,但是,你要的东西不在这个地址,我已经临时的把它移动到了一个新的地址,麻烦你请求新的地址,地址我放到了响应头的Location中了)
4)304 Not Modified 文档内容未被修改(你的请求我收到了,你要的东西和之前是一样的,没有任何的变化,所以我就不给你结果了,你用以前的吧)
5)400 Bad Request 语义有误,当前请求无法被服务器理解(你给我发的是啥,听不懂)
6)403 Forbidden 服务器拒绝执行(你的请求我已经收到,但是我就是不给你东西)
7)404 Not Found 资源不存在(你的请求我收到了,但是我没有你要的东西)
8)500 Internal Server Error 服务器内部错误(你的请求我收到了,但这题我不会,解不出来)
响应头:和请求头一样,也是由多个键值对组成的,具体由哪些键值对,完全取决于服务器程序,目前对我们最重要的键值对是Content-Type ,它有多种取值,表示响应体的数据类型,在B/s模式中,浏览器会自动根据响应头中Content-Type的取值,决定如何处理响应体
1)text/plain:普通的纯文本,浏览器通常会将响应体原封不动的显示到页面上
2)text/html :html文档,浏览器通常会将响应体作为页面进行渲染
3)text/javascript或application/javascript:js代码,浏览器通常会使用js引擎将它解析执行
4)text/css css代码,浏览器会将它视为样式
5)image/jpeg 浏览器会将它视为图片
6)attachment 附件,浏览器看到这个类型,通常会触发下载功能
7)其他MIME类型
响应体body:响应的主体内容
静态资源服务:
HTML CSS JS 文档、图片、字体文件、视频、音频
数据服务:接口文档
相对路径 :相对的是url地址
绝对路径:完整的url地址,可省略协议
也可省略协议、主机、端口
浏览器页面处理流程:
当在浏览器地址栏中输入一个url地址,按下回车之后,会发生什么?(面试题)
边栏推荐
猜你喜欢

ES6新增的变量修饰符let和const、新增的基本数据类型symbol

41.js--闭包

Blue Bridge Cup: the second game of the 13th provincial competition of single chip microcomputer group

油猴脚本更改tw樣式

ES6--symbol( )与Map( )
![Random signal analysis, 2nd Edition [edited by Zhao Shuqing and Zheng Wei] (part) answer to homework after class (written by myself)](/img/13/edd5af20fb9a9514339d8ae21eed71.jpg)
Random signal analysis, 2nd Edition [edited by Zhao Shuqing and Zheng Wei] (part) answer to homework after class (written by myself)
![[tensorflow2] implementation of gradient inversion layer (GRL) and domain antagonism training neural network (Dann)](/img/c4/1e1d68a69cb41da8ebb6463a35ca82.png)
[tensorflow2] implementation of gradient inversion layer (GRL) and domain antagonism training neural network (Dann)

CONDA based operation record of starting a tensorflow GPU (2.6.0) environment on win10 from scratch (2022.07)

基于 conda 的在 Win10 上从零开始搞一个 Tensorflow-gpu (2.6.0) 环境的操作记录 (2022.07)

Jmeter相关知识整理
随机推荐
扩展知识——JS的劫持技术
37.js--对象的成员操作和原型对象的操作(主要是相关程序举例)
21天SQL打卡总结
2022暑期实践(第一周)
【prettier】通过prettier自动格式化代码不生效
Use of command line client
js复制文本到剪切板
Keil reports an error: error 118 (errors reference to external variables) solution and reason
将列表数据转换为树形数据
Oil monkey script changes TW style
遍历器总结
Find the ID of the parent node according to the child node ID in the tree data
Svelte 官方入门教程(3)—— Props
【黄啊码】redis实现模糊查询并删除|redis根据前缀获取key
ES6--模块化
使用 ramda 解析 .yarnrc/.npmrc 配置文件的例子
ES6--arr(数组)-map-set的转换
C语言:有关字符串函数的一些自我实现
ES6新增的变量修饰符let和const、新增的基本数据类型symbol
初识c语言(二)