计算机网络 自顶向下的方法笔记

网课

自顶向下的方法

进度: 课后题: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)是实现此技术的两种方法。

[!NOTE] Internet Structure: a network of networks 互联网由边缘的接入网络、核心的一级网络以及互连的区域和内容提供商网络组成。

asymmetirc非对称 向下游传递更快 家用网络 消费数据而非生产数据

1.4 性能

  1. 包延迟的四个原因:
    1. 处理延迟:与转发表查找等相关的延迟
    2. 排队延迟
    3. 传输延迟
    4. 传播延迟
  2. traceroute 计算传输速度
  3. 包丢失
  4. 吞吐量

1.5 分层,封装(encapsulation)

采用分层的思想:

  • 系统中的元素易于定义和关系说明
  • 易于维护,单一层的改变不会影响其他层

以机场服务为例,出发端和到达端依赖于较低层的服务,共同完成乘客出发到到达的过程。

1
2
3
4
5
6
7
flowchart TD
A(应用层-application)
B(传输层-transport)
C(网络层-network)
D(链路层-link)
E(物理层-physical)
A-->B-->C-->D-->E

发送端和接收端的过程: 交换机和路由的工作只是转发帧和数据报,不需要在更高层级进行处理

1.6 网络安全先览

  1. 网络是如何受到攻击的
    1. 复制所有packets ,如wireshark
    2. 伪IP
  2. 如何防御
    1. auth、加密、完整性检查(数字签名)、限制访问、防火墙
  3. 如何进行防御的架构设计

1.7 历史概述

2005-至今

  • 家庭宽带
  • 2008:Software-defined networking (SDN)
  • 4G,5G,wifi普及
  • 大型公司提供他们自己的网络(google,fb,microsoft)提供即时通讯、搜索、视频服务
  • 云服务(Amazon web services,Microsoft Azure)

应用层

学习内容

  1. 概念和应用层协议的应用 ✔️
  2. 传输层服务模型
  3. client-server
  4. peer-to-peer
  5. 学习常见的应用层协议
  6. HTTP ✔️
  7. SAMTP,IMAP
  8. DNS
  9. video streaming systems, CDNs(content distribution networks)
  10. 编程网络应用
  11. socket api

当我们写应用程序的时候需要思考:

  1. 传输层应该提供怎样的服务
  2. 应用层的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)

传输层为应用层提供的服务

  1. 数据完整性
    1. 一些应用要求可靠的数据传输 如文件传输
    2. 另一些应用如视频可以容忍一些丢失
  2. 时间:一些应用如网络电话、交互游戏需要低延迟
  3. 吞吐量:
    1. 一些应用如多媒体需要最小吞吐量
    2. 而一些弹性应用(elastic apps)对吞吐量无要求
  4. 安全性:对传输的数据进行加密 🆚不同应用的传输需求对比:

传输层提供的协议: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

常用缩写:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
OCTET          = 任意八字节的序列
CHAR           = 任意US-ASCII中的字符 0-127
UPALPHA        = 任意US-ASCII中的大写字母
LOALPHA        = 任意US-ASCII中的小写字母
ALPHA          = 任意US-ASCII中的大小写字母
DIGIT          = 任意US-ASCII中的数字
CTL            = 任意US-ASCII中的控制符
                 (八字节 0 - 31) 和 DEL (ASCII 127)>
HT             = Tab键, horizontal-tab (ASCII 9)
<">            = 双引号 (ASCII 34)
CR             = 回车 (ASCII 13)
LF             = 换行 (ASCII 10)
SP             = 空格 (ASCII 32)
响应消息 response message
  • status line HTTP/1.1 200 OK
  • response header
  • body

3. HTTP cookies

保存用户的状态信息: 拥有四个组成:

  1. HTTP响应的cookie header
  2. cookie header line in next resquest
  3. cookie file保存在用户的浏览器
  4. 保存在后端服务器

4.Web caches

提高用户体验,减轻原始服务器和机构资源的压力 目标:满足用户请求需求的同时不需要服务器的介入

大象装进冰箱需要两步:

  1. 服务提供方安装web cache
  2. 用户将浏览器配置为指向本地网络缓存
  • 第一个客户端发起请求,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将对象分为多个帧

blablabla
Built with Hugo
主题 StackJimmy 设计