avatar

计算机网络

概论

路由交换

电路交换

要求双方建立连接后才能够交换数据

分组交换

将数据包划分为一个个小的数据段,在每个数据段首部加上信息,通过这些信息将数据包进行转发,最后在目的地再把数据重组回来。

分组交换的本质是存储转发,即可以实现队列缓存。

丢包、延迟、吞吐

当缓冲队列满时,无法将数据包加入队列就会产生丢包

延迟可以分为四个部分:处理、队列、传输、传播

从知乎copy下

nodal processing delay:

  • 检查错误位
  • 选择输出链路
  • 高速路由器处理延迟-微妙级

queueing delay:

  • 等待被发送到输出链路上的时间
  • 取决于路由器的拥塞程度

Transmission delay:

  • R=链路带宽 (bps)
  • L=分组长度 (bits)
  • 发送分组比特流的时间 = L/R

Propagation delay:

  • d = 物理链路的长度
  • s = 介质的信号传播速度 (~2x108 m/sec)
  • 传播延迟 = d/s
    注意: s和R是两个完全不同的速度参量!
    s 是介质的信号传播速率,取决于介质等因素
    R是链路的带宽

吞吐量

a: average packet arrival rate

L: packet length (bits)

R: link bandwidth (bit transmission rate)

吞吐量就是$\frac{L·a}{R}$

单链路中的吞吐量决定于最小的(木桶效应)

而在多链路的网络场景中,往往是取决于干扰流量

协议分层

协议以分层的方式分为多层结构,每一层向它的上一层提供服务。

各层的所有协议被称为协议栈,因特网的协议栈由5个层次组成:物理层、链路层、网络层、传输层和应用层。

应用层

应用层是网络应用程序及它们的应用层协议存留的地方,有HTTP、SMTP和FTP协议,位于应用层的信息分组称为报文

传输层

有TCP和UDP协议,TCP将长报文划分为短报文,并提供拥塞控制机制,因此当网络拥塞时,源会抑制其的传输速率。UDP向应用程序提供无连接服务。

网络层

网络层负责将被称为数据报的网络层分组从一台主机移动到另一台主机,通常被称为IP层。

链路层

链路层则负责网络层主机间移动的在节点之间移动的服务,或者说将一个帧从一个网络元素移动到附近的网络元素

物理层

物理层则是负责帧中的一个个比特的移动。

应用层

应用层协议原理

网络应用程序体系结构

可以分为CS(client-server)或者P2P体系结构,CS可以是各大门户网站,P2P可以理解为端到端传输的流量密集型应用,比如QQ、迅雷。

进程通信

网络应用程序由成对的进程组成,每有一对客户端和服务器,即可以认为这是他们各自的一个进程,进程间的通信通过socket(套接字)完成。又由于socket是建立网络应用程序的可编程接口,因此socket也被称为应用程序和网络之间的API(应用程序编程接口)

进程寻址则有IP地址和端口号标识。

因特网传输服务

当创建一个新的网络应用时,需要决定使用UDP还是TCP。

TCP

TCP可以提供面向连接的服务可靠的数据传送服务,对面向连接的服务,通过三次握手能够建立一个双向发送数据的TCP连接。此外TCP也可以将字节完好无整地在socket之间传播。

SSL是TCP的升级版,具有加密功能,HTTPS的基础便是SSL。

UDP

之前讲过,UDP向应用程序提供无连接服务,其意思为不保证数据传播的可靠性,也不保证到达时间的准确性。

Web和HTTP

HTTP使用TCP作为支撑传输协议,首先需要建立一个TCP连接,之后便可以通过套接字接口请求和接收响应报文。同时,HTTP是一种无状态协议,不保存客户的任何信息。

持续连接和非持续连接

根据使用的不同情况,可以建立长连接或者在传输完报文后就立即关闭TCP连接,RTT定义为短分组从客户端到服务器再返回客户端的时间。

HTTP报文格式

请求报文由请求行、Header和Body组成,响应报文由状态行、Header和Body组成

Cookie可以用来识别客户,其存储于Header中。

Web缓存

跟计算机中的缓存一样,通过缓存可以大大减少浏览重复网页所需要的时间。

通过CDN(内容分发网络),可以使大量流量本地化,可以使用CDN来缓存css和图片文件来减少静态网站的访问时间。

电子邮件

邮件是异步的,主要有3个部分组成:用户代理、邮件服务器和SMTP。

当A端到A服务器到B服务器到B端的邮件收发过程里,前两段都是SMTP,最后的邮件接收使用IMTP。

SMTP的报文由Header和Body组成。

DNS

DNS(Domain Name System)是一个将主机名转换为IP地址的系统

主机

主机的标识方法有主机名和IP地址两种方式,主机名易于记忆而IP地址命名规范,DNS则提供了一种从主机名到IP地址转换的目录服务,DNS是建立在UDP服务上的。

分布式、层次数据库

DNS具有层次,分别是根DNS服务器(根域)、TLD(顶级域)服务器(顶级域)和权威DNS服务器(主域)。例如tju.edu.cn中edu.cn是TLD服务器的,又称为二级域名,tju.edu.cn就是权威DNS。

同时DNS查询有递归查询和迭代查询两种,递归就是逐层步进的查询,迭代就是在某层之间进行查询。

DNS缓存

通过DNS缓存能够减少查询次数,但是缓存也有保存时间,被称为TTL,过期后会被丢弃。

DNS记录和报文

每份DNS回答报文包含了一条或者多条资源记录

资源记录是包含了下列字段的的4元组

(Name, Value, Type, TTL)

Type分为几种类型,如下

image-20210319161207018

DNS报文没有讲,大概不是很重要。

P2P文件分发

在这里研究一种从单一服务器向大量主机(对等方)分发文件的一个Sample。

令$u_s$为服务器接入链路的上传速率,$u_i$和$d_i$为第i对等方接入链路的上传和下载速率

分发时间为所有N个对等方得到该文件副本所需要的时间。

对于CS和P2P模式分别有两种结果
$$
D_{cs} = max{\frac{NF}{u_s}, \frac{F}{d_{min}}}
$$

$$
D_{p2p} = max{\frac{F}{u_s}, \frac{F}{d_{min}}, \frac{NF}{u_s +\sum_{i=1}^{N}{u_i}}}
$$

视频流和内容分发网

因特网视频

内容分发网

即CDN,CDN管理可以将每个用户的请求定向到一个体验最好的CDN位置。

文章作者: X Mεl0n
文章链接: http://www.zrzz.site/posts/e255a10a/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 X Mεl0n | 随手记

评论