计算机网络基础
网络组成部分
- 主机:客户端和服务端
- 路由器
- 网络协议
1、按照工作方式分类
边缘部分、核心部分
边缘部分用户可以直接使用
边缘部分分为两种模式:C/S模式(客户/服务器模式)、P2P模式(对等模式)
核心部分为边缘部分服务
2、按照功能组成分为
通信子网、资源子网
通信子网用于实现数据通信(下三层)
资源子网实现资源共享/数据通信(上三层)
网络结构:网络中的网络
以海绵宝宝中蟹堡王及其分店为例
- 比奇堡和小区网络:本地网络
- 北京和上海分店+比奇堡:三个本地网络节点的网络
- 全国通信网络:本地网络的网络
- 区域网络、城域网和广域网
计算机网络分类
小结
- 网络组成部分:由主机、路由器、交换机等组成
- 网络结构:网络中的网络
- 信息交换方式:电路交换和分组交换
- 网路分层:分清职责,物理层、链路层、网络层、运输层和应用层
- 网络协议:标头和载荷
Web中的网络
HTTP协议介绍
HTTP(Hyper Text Transfer Protocol):全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
HTTP 是一种应用层协议,是基于 TCP/IP 通信协议来传递数据的,其中 HTTP1.0、HTTP1.1、HTTP2.0 均为 TCP 实现,HTTP3.0 基于 UDP 实现。现主流使用 HTTP1.0 和 HTTP3.0
协议:为了使数据在网络上从源头到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议,它最终体现为在网络上传输的数据包的格式。
通俗点讲,协议就是要保证网络通信的双方,能够互相对接上号。就像是两个人传递纸条通过互相指定的暗号,如果发送天亮了,表示可以打游戏了等等
HTTP协议的工作过程
当我们在浏览器输入一个网址,此时浏览器就会给对应的服务器发送一个 HTTP 请求,对应的服务器收到这个请求之后,经过计算处理,就会返回一个 HTTP 响应。并且当我们访问一个网站时,可能涉及不止一次的 HTTP 请求和响应的交互过程。
基础术语:
- 客户端:主动发起网络请求的一端
- 服务器:被动接收网络请求的一端
- 请求:客户端给服务器发送的数据
- 响应:服务器给客户端返回的数据
HTTP协议的重要特点: 一发一收,一问一答。
CDN:DNS劫持
- 域名解析一般由网站自己处理
- 要加速的域名则重定向到CDN厂商的域名解析服务处理
- CDN厂商根据来源确定最近的CDN服务器的IP
- 用户直接访问最近的CDN服务器
WebSocket
- 有状态的持久连接
- 服务端可以主动推送消息
- 用WebSocket发送消息延迟比HTTP低
WebSocket:实例
客户端代码
const WebSocket = require('ws');
const ws = new WebSocket('ws://localhost:8080');
ws.on('open',function open(){
//当连接建立时,向服务端发送一条消息
ws.send('something');
});
ws.on('message',function message(data){
//当收到来自服务端的邀请时,打印出来
console.log('receiver: %s',data)
});
小结
- HTTP 1 2 3 的演进历史
- CDN解决了HTTP协议之外的问题
- WebSocket从HTTP协议升级而来
网络安全
三要素
- 机密性:攻击者无法获知通信内容
- 完整性:攻击者对内容进行篡改时能被发现
- 身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信
对称加密和非对称加密
- 对称加密:加密、解密用同样的密钥
- 非对称加密:加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密
密码散列函数(哈希函数)
- 输入:任意长度的内容
- 输出:固定长度的哈希值
- 性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的
机密性
- 加密需要加密算法和密钥等信息(通称为秘密信息)
- 网络是明文的,不安全
完整性和身份验证
完整性和身份验证相互关联
小结
- 网络安全三要素:机密性、完整性和身份验证
- 在没有提前交换秘密信息的前提下,无法在不安全的信道交换秘密信息
- PKI保证了普通用户不需要“面对面”和根证书机构交换根证书
- HTTPS使用PKI完成了除客户端身份验证以外的特性,客户端身份验证靠HTTP协议实现。