计算机网络知识合集
1.计算机网络性能指标
- 速率:指的是连接在计算机网络上的主机在数字信道上传输数据的速率。数据量的单位是比特(bit)。速率的单位是b/s,或者写为bps(bit per second),当传输速率高的时候,可以用Kb/s 、Mb/s等表示。
- 带宽:表示链路的最大传输速率,单位是 b/s (比特/秒),带宽越大,其传输能力就越强。
- 延时(时延):表示请求数据包发送之后,收到接收端响应所需要的时长(时间延迟)。总时延=发送时延+传播时延+处理时延+排队时延。
- **吞吐率:**单位时间内成功接收的数据量,单位是b/s、B/s。吞吐率受带宽影响,带宽越大,吞吐率越高。
- **往返时间RTT:**从发送方发送数据,到发送方接收到接收方的确认过程中所经历的总的时间。
除了上述五种基本指标以外,还有一些其他常用的性能指标。
- 网络可用性
- 并发连接数
- 丢包率
- 重传率
2.协议及层次划分
1.OSI七层体系协议模型
2.TCP/IP四层体系模型
3.五层协议模型
3.应用层
3.1关于HTTP协议
3.1.1什么是HTTP
HTTP,即超文本传输协议,全名为 HyperText Transfer Protocol.
HTTP协议是用于客户端和服务端之间的通信,客户端负责发送请求,服务端负责响应请求。
3.1.2HTTP的特点
- 支持客户端、服务器端模式,并且必定有一端为客户端、一端为服务器。
- 简单快速,客户端向服务器端请求服务时,只需传送请求方法和路径。
- HTTP允许传输任意类型的数据对象,无连接(HTTP1.0),限制每次连接只处理一个请求,数据发送万州会立即断开连接。
- 无状态,HTTP协议是无状态协议,指明协议对于事务处理没有记忆能力(有利有弊,可以利用cookie实现状态保存)
1.没有使用cookie时的http连接
2.使用cookie时的http连接
3.1.3HTTP的消息结构
- 请求的消息结构
一个请求消息是由请求行、请求头、一个空行和消息主体构成的。
- 客户端:发送请求
GET/HTTP/1.1
Host: hackr.jp
- **服务端:**响应请求
HTTP/1.1 200 OK
Date: Tue, 10 Jul ...
Content.Length: 362
Content.Type: text/html
<html>
...
- 请求与响应的各个字段
Request URL: 请求的URL地址。
Request Method: 请求方法。
-
GET 请求指定的页面信息,并返回实体主体。
-
HEAD 只用于获取响应头,响应中没有具体的内容。
-
POST 向指定资源提交数据进行处理请求,请求数据包含在请求体中。
-
PUT 向服务器传送的数据取代指定文档的内容。
-
DELETE 请求服务器删除指定的页面。
-
COONNECT HTTP/1.1协议中预留的能够将连接改为管道方式连接的代理服务器。
-
OPTIONS 允许客户端查看服务器的性能。
-
TRACE 回显服务器收到的请求,主要用于调试。
说到请求方法,就不得不提到HTTP的请求幂等性。
1.什么是请求幂等性?
HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用。
1.比如前端对同一表单数据的重复提交,后台应该只会产生一个结果。 2.比如我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱。 3.比如发送消息,也应该只发一次,同样的短信如果多次发给用户,用户会崩溃。 4.比如创建业务订单,一次业务请求只能创建一个,不能出现创建多个订单。
Status Code 响应状态码和响应消息
分类 | 分类描述 | |
---|---|---|
1xx | 信息,服务器收到请求,需要请求者继续执行操作。 | |
2xx | 成功,操作被成功接收并处理。 | |
3xx | 重定向,需要进一步的操作以完成请求。 | |
4xx | 客户端错误,请求包含语法错误或者无法完成请求。 | |
5xx | 服务器错误,服务器在处理请求的过程中发生了错误。 |
常见状态码及其含义
常见状态码 | 含义 |
---|---|
200 | 请求成功,已经正常处理完毕。 |
301 | 请求永久重定向,转移到其它URL。 |
301 | 请求临时重定向。 |
304 | 请求被重定向到客户端本地缓存。 |
400 | 客户端请求存在语法错误。 |
403 | 客户端请求被服务器拒绝,一般是因为客户端不具有访问权限。 |
404 | 客户端请求的URL在覅武器不存在。 |
500 | 服务端永久错误。 |
User-Agent 产生请求的浏览器类型
Accept 客户端可以识别 / 接收的内容类型列表
Host 主机地址
响应字段及含义
Server 服务器的版本信息
Content-Type 响应体的类型及编码
Content-Length 响应体字节长度
Set-Cookie 响应给客户端的cookie
Date 响应的时间
3.1.4URL与URI
URI Uniform Resource Identifier,统一资源标识符
URL Uniform Resource Locator,统一资源定位符
URN Uniform Resource Name,统一资源名称
3.1.5 HTTP各个版本的区别
1 HTTP 0.9
URI,统一资源标识符,作为互联网上的唯一标识。
HTML,超文本标记语言,描述超文本。
HTTP ,超文本传输协议,传输超文本。
GET, 只存在一种请求方式。
2 HTTP 1.0
- 请求与响应支持头域
- 响应对象以一个响应状态行开始
- 响应对象不只限于超文本
- 开始支持POST、HEAD、GET方法
- TCP连接依然是短连接
3.HTTP1.1
- 首先,1.1是目前使用的主流版本之一。
- KeepAlive长连接,在请求头中使用
Connection:Keep-Alive
来开启长连接,默认使用长连接。- chunked编码传输,将传输实体分块传送并表明长度,直至长度为0表示结束。
- 字节范围请求,支持范围请求内容,为了节省带宽,可以只向服务器请求部分范围的数据,在请求头中通过
Range
字段来实现。在响应消息中通过Content-Range
来声明返回对象的长度和偏移值。对应响应码为206.- 请求流水线 Pipelining
- 请求方法,增加了
OPTIONS,PUT,DELETE,TRACE,CONNECT
等连接方式。- 缓存处理
- 响应状态码,新增了24个错误状态响应码。
- Host头处理,在请求消息头中增加Host头域,服务器下的主机唯一性标志。
4.HTTP2.0
- 二进制格式传输数据,将1.x中的txt文本传输改为二进制传输。
- HAPCK消息头压缩传输,节省消息头占用的大量网络资源,节省带宽资源。
- 多路复用,通过一个TCP连接并发完成,多个请求之间的响应不会被阻塞。
- 服务端推送,服务端能够更快的把资源推送给客户端,例如常用的JS和CSS文件。
3.2关于HTTPS协议
**前情提要:**HTTP本身不具备加密功能,报文以明文的方式进行传输。
3.2.1目前常用的加密方式
- 通信加密:将HTTP与SSL和TLS组合使用,统称为HTTPS。
- 内容加密:通信双方都具有加密和解密的机制。
过一个TCP连接并发完成,多个请求之间的响应不会被阻塞。
- 服务端推送,服务端能够更快的把资源推送给客户端,例如常用的JS和CSS文件。
3.2关于HTTPS协议
**前情提要:**HTTP本身不具备加密功能,报文以明文的方式进行传输。
3.2.1目前常用的加密方式
- 通信加密:将HTTP与SSL和TLS组合使用,统称为HTTPS。
- 内容加密:通信双方都具有加密和解密的机制。
内容加密
- 对称加密
- 发送方和接收方使用相同的密匙对明文进行加密和解密操作。
- 非对称加密
- 包含公开密匙和私有密匙两种。加密和解密使用的是不同的密匙。
- 例如:当客户端发起连接请求,服务端将公钥传输过去,客户端利用公钥加密好信息,再将密文发送给服务端,服务端里有私钥可以解密。
通信加密
- SSL(Secure Socket Layer)安全套接层和TLS(Transport Layer Security)传输层安全协议。
HTTPS加解密流程
- 用户在浏览器发起HTTPS请求(如 https://www.mogu.com/),默认使用服务端的443端口进行连接;
- HTTPS需要使用一套CA数字证书,证书内会附带一个公钥Pub,而与之对应的私钥Private保留在服务端不公开;
- 服务端收到请求,返回配置好的包含公钥Pub的证书给客户端;
- 客户端收到证书,校验合法性,主要包括是否在有效期内、证书的域名与请求的域名是否匹配,上一级证书是否有效(递归判断,直到判断到系统内置或浏览器配置好的根证书),如果不通过,则显示HTTPS警告信息,如果通过则继续;
- 客户端生成一个用于对称加密的随机Key,并用证书内的