小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
网络协议概念
-
是为了实现计算机之间能够传输数据而达到的一种约定或规定。只要计算机遵守协议,那么无论计算机是哪个厂商开发的,以及不同操作系统
-
实现网络数据传输的协议:
TCP/IP协议族TCP/IP:是指以TCP和IP协议为主的用于实现网络通信的一整套网络协议的集合
TCP/IP协议族及分层(了解)
-
主要分为4层:
- 应用层: 把应用程序的数据按照指定的协议进行包装。比如发送的是邮件,采用邮件的协议进行包装-SMTP,如果发送的是文件,会用FTP(file Transfer protocol),如果是网页,就用HTTP进行包装。
- 传输层
- 网络层
- 数据链路层/网络接口层
HTTP数据交互流程*
流程(浏览器获取网络资源流程)
- 浏览器要发送请求到服务器,用于请求某个资源(可能是
HTML页面、css文件、js文件、图片之类的),服务器接受到请求后经过处理,将要返回的数据包装成一个响应,最后服务器会将响应传回给浏览器。浏览器用http解析响应并渲染对应的数据在页面上。 - 浏览器一个请求只能请求一个资源。即一次只能拿到一个文件,可能是HTML、或js、或、css、图片等,也有可能只是一段文字。比如判断登录。
客户端
- 在http中客户端指的是 浏览器。
服务器
- 处理请求并发送响应的电脑
url&uri*
-
uri:uniform resource identifier:统一资源标识符- 给网络上的每个资源都设定一个”身份证”。
-
url:uniform resource location:统一资源定位符- 给网络上的每个资源都给一个唯一访问的路径。只要输入的是同一个地址,无论是在哪台电脑,哪个浏览器,得到的都是同一个资源。
- 可以理解
url是uri的落地方案。
http&https对比*
http:hyper-text transfer protocol(超文本传输协议)。
-
是运行在应用层上的一个协议。规定了两台主机的网页数据,如何传输。
-
特点:
- 对于数据传输,
http协议并没有做安全认证、不能识别接受数据的服务器身份,同时对于一些数据,使明文传输。
- 对于数据传输,
HTTPS:hyper-text transfer protocol over secure socket layer:建立在安全套字上的超文本传输协议
- 安全版本的
http协议。 HTTPS比http多了一层ssl/tsl专门负责数据的加密和解密以及身份验证。- 传输效率不如
http,但增加了安全性,同时也增加了身份认证。
请求和响应*
请求和相应概念
-
当浏览器发送请求时,会把请求相关的信息和要发送的数据包装成一个请求数据块发送给服务器,服务器接受请求并处理之后,也会把返回的数据包装秤相应数据块传回给浏览器,浏览器解析数据并展示在页面上。
-
手动发送请求的两种方式
- 通过网页地址
- JavaScript
请求
-
一个普通的请求包含了三个部分:状态行、请求头、请求体
- 状态行: 请求的方式、请求的地址、版本号
- 请求头: 包含了对数据属性的描述以及请求本身的配置信息。
- 请求体: 包含了要发送给服务器的用户数据。一般是post请求会有,get请求没有。
-
状态行:
-
请求头:
Accept:期望接受的数据类型content-length:请求体的数据字符长度,无请求体为0connection:浏览器和服务器的连接方式:keep-alive:长连接content-type:请求体的数据类型Cache-Control:是否启动缓存Accept-Encoding:支持的扩展数据类型。比如支持压缩host:发送请求的域名
-
请求体
-
请求的方式
-
GET:一般是指获取数据,不发送数据- get是可以发送数据
- get发送的数据是明文传输,而且会直接将数据显示在地址中
- 有数据大小限制,一般不超过2kb
-
POST:提交数据。一般是需要提交用户数据时使用。比如登录、注册、添加数据。- 请求包含请求体,要发送的数据就保存在请求体里
- 大小无限制,可以实现上传文件。
- post一般会发送两次请求。第一次是发送一个请求头,当服务器接收并响应时,才发送包含数据集的第二个请求到服务器。
- 数据没有包含在地址里。
-
PUT:修改数据 -
Delete:删除数据用
-
-
指定请求的方式:
- < form >里有个
method属性可以指定请求方式 - JavaScript修改
- 默认情况下,通过地址栏发送的请求都是get请求
- < form >里有个
响应
-
包含了状态行、响应头、响应体
- 状态行: 包含了服务器的地址,版本号,响应状态码
- 响应头: 包含了该响应配置信息
- 响应体: 服务器要发送的数据
-
状态码:表示该请求处于什么阶段。
-
200*:表示该请求已处理完毕,浏览器已接受完响应 -
304*:数据未修改 -
400*:浏览器端错误 -
401:浏览器没有经过授权 -
403:发送请求被服务器拒绝 -
404*:服务器没有该资源 -
500*:服务器发生崩溃性错误 -
503:服务器临时错误
-
结尾
整理了下学校当时老师讲的知识点,自己也温习回顾了下。希望对你们有帮助,欢迎大家来提建议,共同学习,共同进步,我是leetjian,麻烦大家订阅加关注,谢谢!