网课
自顶向下的方法
进度: 课后题:Knowledge Checks (umass.edu)
计算机网络和互联网
1.1 什么是“网络”和“协议”
internet?
各种各样的终端都可以接入互联网,通过packet switches包交换器在彼此和设备之间转发数据,包交换器分为路由和交换器(routers,switched)。
protocol?
所有的数据收发都由“协议”控制。对于互联网来说:
- RFC
- IETF 协议:特定的请求对应特定的回复
[!NOTE] ”协议“的定义 定义了网络实体之间发送和接受消息的==格式==和==顺序==,以及信息的传递和接受所采取的==操作==
1.2&1.3 网络边缘
- device,hosts,clients and servers:
- 客户端clients and 服务器servers通常都被称为“主机hosts” ,但其实在网络上下文中有精确的含义 2.1
- access networks,physical media(电缆、光纤、无线电等):
- 有线、无线连接 接入网络主要由四类:
- 无线网络:10m~100m范围内
- 3g,4g,5g由运营商提供
- 企业网络:
- 数据中心网络
- 物理媒介:电缆、光纤、无线电等
- 无线电传输会遇到物体反射、干扰等情况,所以在物理层会针对性
- 包含wifi, 10~100’s Mbps megebits per second
- 4g5g, 10’s Mbps
- 蓝牙 (电缆代替技术 1~2M
- 地面微波 点对点传输 45 Mbps per channel
- 卫星 45 Mbps per channel and 270msec delay
- 无线电传输会遇到物体反射、干扰等情况,所以在物理层会针对性
- 有线、无线连接 接入网络主要由四类:
- network core网络核心: 包交换
- packet switching分组交换:会面临堵塞和丢包的情况
- 交换forwarding
- 路由routing 全局操作
- circuit switching
- 频分复用(FDM)和时分复用(TDM)是实现此技术的两种方法。
- packet switching分组交换:会面临堵塞和丢包的情况
[!NOTE] Internet Structure: a network of networks 互联网由边缘的接入网络、核心的一级网络以及互连的区域和内容提供商网络组成。
asymmetirc非对称 向下游传递更快 家用网络 消费数据而非生产数据
1.4 性能
- 包延迟的四个原因:
- 处理延迟:与转发表查找等相关的延迟
- 排队延迟
- 传输延迟
- 传播延迟
- traceroute 计算传输速度
- 包丢失
- 吞吐量
1.5 分层,封装(encapsulation)
采用分层的思想:
- 系统中的元素易于定义和关系说明
- 易于维护,单一层的改变不会影响其他层
以机场服务为例,出发端和到达端依赖于较低层的服务,共同完成乘客出发到到达的过程。
|
|
发送端和接收端的过程: 交换机和路由的工作只是转发帧和数据报,不需要在更高层级进行处理
1.6 网络安全先览
- 网络是如何受到攻击的
- 复制所有packets ,如wireshark
- 伪IP
- 如何防御
- auth、加密、完整性检查(数字签名)、限制访问、防火墙
- 如何进行防御的架构设计
1.7 历史概述
2005-至今
- 家庭宽带
- 2008:Software-defined networking (SDN)
- 4G,5G,wifi普及
- 大型公司提供他们自己的网络(google,fb,microsoft)提供即时通讯、搜索、视频服务
- 云服务(Amazon web services,Microsoft Azure)
应用层
学习内容
- 概念和应用层协议的应用 ✔️
- 传输层服务模型
- client-server
- peer-to-peer
- 学习常见的应用层协议
- HTTP ✔️
- SAMTP,IMAP
- DNS
- video streaming systems, CDNs(content distribution networks)
- 编程网络应用
- socket api
当我们写应用程序的时候需要思考:
- 传输层应该提供怎样的服务
- 应用层的api 对于传输层是什么样的
1. 概览
网络交互方式:
1. 客户端-服务器模型
server:
- 始终在线
- 固定IP
- 通常在数据中心 clients:
- 和服务端进行连接和交互
- 间断性连接,动态IP地址
- 客户端彼此之间不交互
使用改模型的协议: HTTP,IMAP,FTP
2. 点对点模型(peer-peer)
- 没有固定在线的服务端
- 彼此之间直接通信,互相提供服务
- 间断性连接,动态IP
- 比如:P2P FILE sharing
3. 进程之间通信
进程:在主机中运行的程序
- 在同一个主机中,两个进程通过“进程间通信”(IPC)来进行通信
- 不同主机中的进程需要通过信息交换进行通信
socket ❓
进程之间传输数据经过其socket socket相当于door 地址:
- IP address
- port number
应用层协议定义了:
- 消息交换的类型
- 消息语法和语义
- 进程发送和响应消息的规则 可分为开放协议(RFCs,HTTP…)和专有协议(Skype,zoom)
传输层为应用层提供的服务
- 数据完整性
- 一些应用要求可靠的数据传输 如文件传输
- 另一些应用如视频可以容忍一些丢失
- 时间:一些应用如网络电话、交互游戏需要低延迟
- 吞吐量:
- 一些应用如多媒体需要最小吞吐量
- 而一些弹性应用(elastic apps)对吞吐量无要求
- 安全性:对传输的数据进行加密 🆚不同应用的传输需求对比:
传输层提供的协议:TCP &UDP
对于UDP的弊端很多应用在应用层进行了解决
TCP | UDP |
---|---|
可靠传输、流量控制、堵塞控制(当网速超载时节流)、面向连接的、不提供时间、最小吞吐量和安全性 | 不可靠传输;不提供流量控制、堵塞控制、吞吐量保证、安全性和连接设置 |
🆚不同应用使用协议的情况:
改进TCP的安全性
TLS相当于一个中介层(shim layer)在TCP sockets之上的应用空间提供安全服务
vanilla TCO&UDP sockets | transport layer security(TLS) |
---|---|
- 无加密 - 明文传输 |
- 提供加密TCP连接 - 数据完整性 - 身份校验 |
2. HTTP
HTTP使用client-server模型 HTTP使用TCP,客户端发起TCP连接,服务端接收,完成信息交换后断开TCP连接 HTTP是无状态的(stateless)
1. HTTP连接
非持久连接 | 持久连接 |
---|---|
TCP opened ->一个对象通过TCP传输->TCP连接关闭 多个对象传输需要多个TCP连接 |
TCP opened->多个对象可通过一个TCP连接传输->TCP连接关闭 |
HTTP1.1是持久链接
2. HTTP消息
请求消息 request message
常用缩写:
|
|
响应消息 response message
- status line
HTTP/1.1 200 OK
- response header
- body
3. HTTP cookies
保存用户的状态信息: 拥有四个组成:
- HTTP响应的cookie header
- cookie header line in next resquest
- cookie file保存在用户的浏览器
- 保存在后端服务器
4.Web caches
提高用户体验,减轻原始服务器和机构资源的压力 目标:满足用户请求需求的同时不需要服务器的介入
大象装进冰箱需要两步:
- 服务提供方安装web cache
- 用户将浏览器配置为指向本地网络缓存
- 第一个客户端发起请求,web cache没有对应的对象,于是向服务器发起请求,拿到结果后返回给客户端。第二个客户端发起请求,此时web cache已有对应的对象,直接返回给第二个客户端。这个过程中web cache既是客户端也是服务端。
- 服务端在响应头中通过
Cache-Control
字段”告诉“web cache所允许的缓存 - 使用webcache能够减轻服务器的负担,缩减请求时间,提高用户的体验
4.Conditional HTTP Get
客户端如何知道缓存是否是最新的:
- 客户端通过
if-modified-since:<date>
字段以及服务端所返回的信息得出 - ETag //视频中没讲
4.HTTP/2, HTTP/3
HTTP/2将对象分为多个帧