网络基础知识

本文详细解析了CDN的工作原理,介绍了HTTP请求-响应过程,包括URL结构、客户端与服务器交互、状态码和响应头的重要性。重点讲解了HTTP协议和常见操作,如GET和POST,以及静态资源与数据服务的区别。
摘要由CSDN通过智能技术生成

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地址,按下回车之后,会发生什么?(面试题)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值