day1 计算机网络
网络结构
- 网络组成部分:主机、路由器、交换机等
- 网络结构:网络的网络
- 信息交换方式:电路交换和分组交换
- 电路交换是以电路连接为目的的交换方式,通信之前要在通信双方之间建立一条被双方独占的物理通道。
- 分组交换是以分组为单位进行传输和交换的,它是一种存储——转发交换方式,即将到达交换机的分组先送到存储器暂时存储和处理,等到相应的输出电路有空闲时再送出。
- 计算机网络中使用的是分组交换。
- 网络分层:从下而上分别为物理层、链路层、网络层、运输层和应用层
- 网络协议:标头和载荷
每一层都会将上一层的标头和载荷视为自己的载荷,并添加自己的标头
web中的网络
http协议
- http请求的第一行为起始行,响应的第一行为状态行
- 请求和响应的第二行开始到第一空行为止,为头部
- 第一空行的之后内容为正文
HTTP/1.0 —— 无状态无连接的应用层协议
- 无状态:服务器不跟踪不记录请求过的状态
- 无连接:浏览器每次请求都需要建立tcp连接
HTTP/1.0规定浏览器和服务器保持短暂的连接。浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)
无状态导致的性能缺陷:
-
无法复用连接。每次发送请求的时候,都需要进行一次TCP连接,而TCP的连接释放过程又是比较费事的。这种无连接的特性会导致网络的利用率非常低。
-
队头堵塞(head of line blocking)。由于HTTP/1.0规定下一个请求必须在前一个请求响应到达之前才能发送。假设一个请求响应一直不到达,那么下一个请求就不发送,就到导致阻塞后面的请求。
HTTP/1.1
- 长连接。HTTP/1.1增加了一个Connection字段,通过设置Keep-alive(默认已设置)可以保持连接不断开,避免了每次客户端与服务器请求都要重复建立释放TCP连接,提高了网络的利用率。如果客户端想关闭HTTP连接,可以在请求头中携带
Connection:false来告知服务器关闭请求 - 支持请求管道化(pipelining)。基于HTTP/1.1的长连接,使得请求管线化成为可能。管线化使得请求能够“并行”传输。举个例子来说,假如响应的主体是一个html页面,页面中包含了很多img,这个时候keep-alive就起了很大的作用,能够进行“并行”发送多个请求。
HTTP/2.0
HTTP/2 采用二进制格式传输数据,而非 HTTP/1.x 的文本格式,二进制协议解析起来更高效。 HTTP / 1 的请求和响应报文,都是由起始行,首部和实体正文(可选)组成,各部分之间以文本换行符分隔。HTTP/2 将请求和响应数据分割为更小的帧,并且它们采用二进制编码。
HTTP/2.0实现了真正的并行传输,它能够在一个TCP上进行任意数量HTTP请求。而这个强大的功能则是基于“二进制分帧”的特性。
但不能解决在TCP上的队头堵塞
HTTP/3.0
QUIC协议,真正解决队头堵塞
CDN
解决了HTTP协议之外的问题
WebSocket
从HTTP协议升级而来
网络安全
网络安全三要素
- 机密性:攻击者无法获知通信内容
- 完整性:攻击者对内容进行篡改时能够发现
- 身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信
在没有提前交换秘密信息的前提下,无法在不安全的信道交换秘密信息
PKI保证了普通用户不需要‘面对面’和根证书机构交换根证书
HTTPS使用PKI完成了除客户端身份验证以外的特性,客户端身份验证靠HTTP协议实现