Networking && Internet 计网学习笔记一

参考书籍:

  • James F. Kurose, Keith W. Ross. 计算机网络—自顶向下方法 (7th). 机械工业出版社,2018.
  • William Stallings. 数据与计算机 通信 (8th). 电子工业出版社

课程网站地址:https://cs.nju.edu.cn/lwz/networks/index.htm

1.What is the Internet made of ?

Component View 具体构成角度

  1. 这个角度根据 Internet 的硬件和软件组件来描述。

  2. 所有连接到网络的设备被称为主机host) 或端系统end systems)。

  3. host / end-systems 通过 通信链路communication links) 和分组交换机packet switch) 连接到一起。

    • 通信链路包括不同类型的物理媒介:如同轴电缆、铜线、光纤还有无线电频谱等,它们以不同的传输速率传输数据(单位 比特/秒),构建物理上的网络。

    • 当一台端系统要向另一台发送数据时,发送端将数据分段,并为每段加上首部字节——这样形成的信息包叫分组packet

      这篇博文解释了 分组 和 包 的概念区别: https://www.cnblogs.com/sddai/p/5649939.html

    • 分组交换机目前有两种最有名的类型:路由器router)和链路层交换机link-layer switch),分别完成的工作是 使packet在各个 physical network 中传输(用于网络核心中,网络核心的概念下文阐述)接收入链路层帧并将它们转发出链路。

  4. 连接好后,端系统要真正的接入 Internet 还需要通过因特网服务提供商ISP)。

    • 每个 ISP 是一个由多个分组交换机和多段通链路组成的网络;低层的 ISP 通过国家的、国际的高层ISP(如 AT&T)互联起来,而高层ISP是由通过高速光纤链路互联的高速路由器组成的。无论是高层还是低层ISP 每个都是独立管理的。

      国内十大ISP服务商: https://www.cnblogs.com/onepixel/p/10238221.html

    • 各ISP为端系统提供了各种不同类型的网络接入,包括如住宅宽带接入、高速局域网接入、无线接入等。

    • ISP 也为内容提供者提供因特网接入服务,将 Web 站点直接接入因特网。

  5. 所有的 Internet 部件都要运行一系列协议(protocol),协议控制着 Internet 中信息的接收和发送。(见下文)

Service View 提供服务角度

  1. 这个角度根据基础设施向分布式应用程序提供的服务来描述。
  2. 可以把Internet看成是一种通信基础设施communication infrastructure)。它支持着 分布式应用程序distributed application)运行。分布式应用程序包括:Web, VoIP, email, online games, e-commerce, file sharing
  3. Internet为分布式应用程序提供通信服务communication service)。

Protocols 协议的定义

一个协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及报文发送和/或接收一条报文或其他事件所采取的动作。

2.How to connect to the Internet ?

Network Edge 网络边缘

通常把与Internet相连的计算机和其他设备称为端系统end-system),因为它们位于inernet的边缘。它包括了桌面计算机、服务器和移动计算机以及其它非传统设备。端系统也称为主机host),因为它们容纳(即运行)应用程序,如 Web 浏览器程序、Web服务器程序等。有两种model:

  • Client/server model 客户机/服务器模型:客户机发出请求,从始终在线的服务器接受服务。例如:web浏览器/服务器,email客户端/服务器。
  • Peert-to-peer model 点对点模式:最小限度或者不使用专用服务器,例如:Skype, BitTorrent。

Access Networks 接入网

接入网是指将端系统连接到其边缘路由器edge router)的物理链路。边缘路由器是指端系统到任何其它远程端系统的路径上的第一台路由器。接入方式有以下三种:

  • 家庭接入 Residential (home) access networks

    • DSL 数字用户线: 由本地电话公司(即当前用户的ISP)部署,它将信号编码分成三个信道,使电话呼叫和网络连接能同时共享DSL线路。
    • HFC 混合光纤同轴电缆:由有线电视公司部署,一个重要特征为共享广播媒体,多个家庭共享对ISP路由器的访问(信道共享)
    • FTTH 光纤到户:由本地中心局部署,类似HFC,并且划分为两种体系结构:AON 和 PON
  • 机构接入 Institutional access networks

    广泛被企业、学校、家庭使用。

  • 无线接入 Mobile access networks

    通过基站或者无线接入点接入,由运营商提供,方式主要有无线局域网和广域无线接入。(即wifi和数据)

这些接入技术也相应地使用了物理媒介physical medium)。分为两类,导引型媒介有双绞铜线、同轴电缆和光纤等,非导引型媒介有陆地无线电信道和卫星无线电信道。

The Network Core 网络核心

网络核心即由互联因特网端系统的分组交换机和链路构成的网状网络。

通过网络链路和交换机移动数据有两种基本方法:电路交换和分组(packet)交换。两种方法的一个类比是:

考虑两家餐馆,一家需要顾客预订(电路交换),而另一家不需要预订但不保证能安排顾客(分组交换)。对于需要预订的那家餐馆,我们在离开家之前必须承受先打电话预订的麻烦。但当我们到达该餐馆时,原则上我们能够立即人座并点菜。对于不需要预订的那家餐馆,我们不必麻烦预订餐桌,但也许不得不先等待一张餐桌空闲后才能入座。

Circuit switching 电路交换

在电路交换网络中,在端系统间通信会话期间,预留了端系统间通信沿路径所需要的资源(缓存,链路传输速率)。如图,发出预留请求后就像在交换机内建立了一条“电路”,每次建立连接都要进行准入判断。


电路交换有着性能稳定,并且一旦电路建立起来后交换非常的简单迅速。但它的缺点在于电路的建立和拆解比较复杂,并且在用户拥挤时的效率并不高(线路专用的原因),建立电路的延迟也比较长。

Packet switching 分组交换

分组交换使用存储转发运输机制,每个分组都包含了它的目的地信息,每个分组都是独立处理的;对于每条相连的链路,分组交换机有一个输出缓存(buffer),用于存储路由器准备发往链路的分组。这种方式要承受存储转发时延、排队时延还有丢包的风险。

分组交换对网络资源的使用非常有效率,鲁棒性较高,交换易于建立。但它的性能有着不可预测性,并且需要对buffer进行管理和对拥堵进行控制。

Virtual Circuit 虚电路分组交换

相当于电路交换和分组交换结合。

三种交换对比

Network of networks 网络的网络

当今的Internet由接入ISP、区域ISP、第一层ISP、PoP、多宿、peer、IXP和内容提供商网络组成。

3.Protocol Layers and Service Model

Standard Protocol Architectures 标准协议体系结构

有两个标准:OSI模型TCP/IP协议簇

由ISO定义的OSI模型和TCP/IP网络协议栈的关系:https://zhuanlan.zhihu.com/p/362525505

TCP/IP各层先不详细介绍,我们只需要知道:

TCP/IP现在广泛用于全球互联网应用。应用层支持网络应用,协议有FTP、SMTP、HTTP;传输层负责进程-进程的数据传输,协议有TCP, UDP;网络层负责跨网络的数据报路由,协议有IP(唯一协议,因为ip协议处于协议栈的腰部,关系着全世界网络的是否能互相连接);链路层负责在相邻路由器/主机之间传输数据,协议有PPP、以太网等。物理层负责“线上”的比特传播。

Encapsulation 封装

自顶向下:在发送主机端,一个应用层报文(application-layer message) 被传送给运输层。在最简单的情况下,运输层收取到报文并附上附加信息(所谓运输层首部信息),该首部将被接收端的运输层使用。应用层报文和运输层首部信息一道构成了运输层报文段(tuansport-layer segment)。运输层报文段因此封装了应用层报文。附加的信息也许包括了下列信息:允许接收端运输层向上向适当的应用程序交付报文的信息;差错检测位信息,该信息让接收方能够判断报文中的比特是否在途中已被改变。运输层则向网络层传递该报文段,网络层增加了如源和目的端系统地址等网络层首部信息,生成了网络层数据报(network-layer datagram)。该数据报接下来被传递给链路层,链路层(自然而然地)增加它自己的链路层首部信息并生成链路层帧(link-layer frame)。所以我们看到,在每一层,一个分组具有两种类型的字段:首部字段和有效载荷字段(payload feld)。有效载荷通常是来自上一层的分组。

一层层的封装形成了一个个PDU(协议数据单元)

Pros and cons of layering 分层的优缺点

优点:将复杂的网络系统结构化地清晰划分开来;可以把每层向上层提供的服务作为接口抽象出来,改变接口的实现并不会影响上层的使用,增加灵活性。

缺点: 有时候不能利用到跨层的信息;过多的分层会使得费用变高,以及产生冗余。

4.Network Performance

我们可以从时延、丢包、吞吐量三个角度来衡量一个network的性能。

Delay 时延

packet 从一台主机(源)出发,通过一系列路由器传输,在另一台主机(目的地)中结束它的历程。当packet从一个结点(主机或路由器)沿着这条路径到后继结点(主机或路由器),该packet在沿途的每个结点经受了几种不同类型的时延。这些时延最为重要的是结点处理时延(nodal processing delay)、排队时延(queuing delay)、传输时延(transmission delay)和传播时延(propagation delay),这些时延总体累加起来是结点总时延(total nodal delay)。

时延 产生原因 地点 时间数量级
processing delay 处理时延 路由器检查packet首部和决定packet所向链路,检查比特级别错误等行为 路由器 微秒
queuing delay 排队时延 在队列中packet等待传输 (前面还有packet) 路由器 微秒
transmission delay 传输时延 将packet的比特一个一个推出网口,完整推到链路上所用时间 路由器 毫秒-微秒
propagation delay 传播时延 packet在链路上物理传播的时间 链路 毫秒

关于传输时延和传播时延的比较:由于中文翻译的原因,很多人会误以为两种时延差别不大(还是得看英文原文)。传输时延是路由器将分组推出所需要的时间,而与两台路由器之间的距离无关,用packet长度除以带宽bandwidth就得出这个transmission delay。另一方面,传播时延是一个比特从一台路由器向另一台路由器传播所需要的时间,而与packet长度或带宽无关,主要看链路长度和物理媒介传播速度。

端对端时延:end-to-end delay 可以说是packet走过的总时延。将经过的所有路由器上的时延以及链路上传播的时延加起来可得到值。

Loss 丢包

丢包loss的过程发生在packet进入路由器后发现队列已满的情况下。由于没有地方存储packet,路由器将会丢弃drop这个packet,这个丢失的概率随着流量强度的增加而增加。丢失的packet可能基于端对端的方式进行重传。

Throughput 吞吐量

吞吐量的定义是:At what rate is the destination receiving data from the source.也就是说,假如主机收到了一个大小为 F 的大文件,主机接收到这个文件的所有比特用时 T 秒,则文件传送的平均吞吐量为 F/T bps

下图很好的描述了 transmission rate 和 throughput、 transfer time 和 transmission delay的关系:

而对于端对端的多链路网络,吞吐量是这多个链路速率中最小的传输速率——也就是瓶颈链路bottleneck-link)的传输速率。

Networking && Internet 计网学习笔记一的更多相关文章

  1. React官网学习笔记

    欢迎指导与讨论 : ) 前言 本文主要是笔者在React英文官网学习时整理的笔记.由于笔者水平有限,如有错误恳请指出 O(∩_∩)O 一 .Tutoial 篇 1 . React的组件类名的首字母必须 ...

  2. JavaScript进阶--慕课网学习笔记

                         JAVASCRIPT—进阶篇 给变量取个名字(变量命名) 变量名字可以任意取,只不过取名字要遵循一些规则: 1.必须以字母.下划线或美元符号开头,后面可以跟字 ...

  3. 如鹏网学习笔记(十五)ASP.NET MVC核心基础笔记

    一.ASP.Net MVC简介 1,什么是ASP.NET MVC? HttpHandler是ASP.net的底层机制,如果直接使用HttpHandler进行开发难度比较大.工作量大.因此提供了ASP. ...

  4. 如鹏网学习笔记(七)HTML基础

    HTML笔记 一.HTML简介 1,HTML (Hyper Text Mark-up Language) 超文本标记语言,是一种编程语言,也可以说是一种标准.规范. 2,HTML提供了一系列标记(标签 ...

  5. JavaScript入门--慕课网学习笔记

     JAVASCRIPT—(慕课网)入门篇 我们来看看如何写入JS代码?你只需一步操作,使用<script>标签在HTML网页中插入JavaScript代码.注意, <script&g ...

  6. 如鹏网学习笔记(十)DOM

    DOM笔记一.DOM简介 Document Object Model 文档对象模型 DOM的节点树模型:整个文档按照从大到小的节点划分,每一个内容都算作一个节点 DOM API 编程接口 可以用来操作 ...

  7. 如鹏网学习笔记(九)JavaScript

    JavaScript笔记 一.JavaScript简介 1,JavaScript是一种计算机编程语言,可以像等其他编程语言那样定义变量,执行循环等. 2,JavaScript代码主要执行在浏览器上,为 ...

  8. HTML基本语法(慕课网学习笔记)

    标题 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...

  9. 如鹏网学习笔记(四).Net常用类库

    .Net常用类库 一.String成员方法(常用) 1,bool Contains(string str) 判断字符串对象是否包含给定的内容 2,bool StartsWith(String str) ...

  10. 如鹏网学习笔记(十四)ASP.NET

    Asp.net笔记 一.Socket类 进行网络编程的类,可以在两台计算机之间进行网络通讯 过程: 向服务器发送指令: GET /index.html HTTP/1.1 Host:127.0.0.1: ...

随机推荐

  1. windows server2016/2019在vmware上安装失败

    问题:无法进入装机界面 现象一:打开虚拟机后进入虚拟bios界面,无法引导iso镜像 解决方法1:从虚拟机设置里,修改引导选项,如果需要修改启动盘则设置强制执行BIOS设置 下图为vsphere的截图 ...

  2. GO开发工具litelDE的安装与使用

    1.MinGW的下载与安装 地址:http://sourceforge.net/projects/mingw/ 下载安装 D:\Program Files\MinGW 然后打开D:\Program F ...

  3. 24V转5V,24V转3.3V稳压芯片的电路图,,PCB和BOM

    1,PW6206与PW6513系列是一款高精度,40V高输入电压,低静态电流,低压降线性稳压器具有高纹波抑制.在VOUT=5V&VIN=7V时,负载电流高达300mA,(输入与输出电压的压差越 ...

  4. Redis如何模糊匹配Key值

    Redis模糊匹配Key值 使用Redis的scan代替Keys指令: public Set<String> scan(String matchKey) { Set<String&g ...

  5. 学习ASP.NET Core Blazor编程系列十六——排序

    学习ASP.NET Core Blazor编程系列文章之目录 学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应 ...

  6. DPDK编译与演示

    环境 安装dpdk 安装依赖 环境配置 编译 遇到过的问题 dpdk使用 设置hugepage helloworld演示 遇到问题 timer演示 环境 虚拟机系统:ubuntu:1404 安装dpd ...

  7. 【环境搭建】RocketMQ集群搭建

    前置条件及效果图 条件: 两台服务器,个人是两台腾讯云服务器(其中嫖的朋友一个): 版本: rocketmq-version:4.4.0 rocketmq-console(mq控制台) Java:1. ...

  8. [python] 基于chardet识别字符编码

    对于人类能够识别的字符,计算机会根据某一对应关系将其转换为二进制形式进行保存.这个对应关系就是字符编码表,即什么样的字符对应什么样的二进制编码.这种字符编码表往往是多种多样的,因此,如果我们想要将一个 ...

  9. C++指针【cherno课程学习】

    定义: 指针是一个整数,一种存储内存地址的数字 内存就像一条线性的线,在这条街上的每一个房子都有一个号码和地址 类似比喻成电脑,这条街上每一个房子的地址 是一个字节 我们需要能够准确找到这些地址的方法 ...

  10. Input源码解读——从"Show tabs"开始

    Input源码解读--从"Show tabs"开始 本文基于Android T版本源码,梳理当用户在开发者选项中开启Show tabs功能后显示第点按操作的视觉反馈的原理,来进一步 ...