计算机网络 自顶向下 笔记

article/2025/10/10 5:00:24

目录

第一章 计算机网络和因特网


全书答案评论留言即可  我私发,这里上传不了文本

第一章 计算机网络和因特网

什么是因特网?

因特网的具体构成:构成因特网的基本硬件和软件组件

分布式应用的互联网基础设施来描述

----------------------------

物理构成:

联网的设备称为 主机(host) 或 端系统(end syste)

端系统通过 通信链路分组交换机 连接到一起

分组:发送端系统将数据分段 ,并为每段加上首部字节,由此形成的信息包称为分组

通信链路: 由不同的物理媒介组成,传输速率为 bit/s

分组交换机:从一条入通信链路接受到达的分组,出通信链路转发该分组 。主要类型为:路由器和 链路层交换机

    链路交换机通常用于 接入网 中/  路由器通常用于网络核心中

路径:一个分组所经历的一系列通信链路和分组交换机称为通过该网络的路径

ISP:(internet service provider)因特网服务供应商,端系统通过isp接入因特网,各isp为端系统提供了各种类型不同的网络接入

ISP是互联的,不管是高层还是底层的isp,都是独立管理的,遵循着协议和规则

较为重要的两个协议

TCP:transmission control protocol 传输控制协议

IP:interner protocol 网络协议

---------------------------------------

服务描述:

应用程序涉及多个相互交换数据的端系统,故称作分布式应用程序。终端之间通过套接字口(socket interfice)传输数据:

套接字:一套发送程序必须遵循的规则集合

协议:

 定义了在两个或多个通信实体之间交换的报文的格式和顺序,以及报文发送和接受 或其他事件所   采取的行动

接入网(网络边缘)

  主机==端系统  : 划分为 客户(pc等) 和 服务器(存储大的数据)

接入网:是将端系统物理连接到其边缘路由器的网络

主要方式:

   1):数字用户线(digital subscriber line DSL):通常使用本地电话公司的DSL因特网接入,同时也是其因特网服务供应商(ISP)

    分配器把数据信号和电话信号隔开 

2)电缆因特网接入

      特点:共享广播媒体(带宽总量不变?),需要多路访问协议来避免碰撞和协调传输

3) 光纤到户(FFTTH)

       分为: 有源光纤网络(AON)

                  无源光纤网络(PON):

         家庭路由->光纤网络端接器(ONT)->光纤分配器(集结为一条光纤)->中心局的光纤路端接器(OLT)->因特网相连

  4) 使用局域网(LAN)来连接 

               以太网: 通过双绞铜线与一台以太网交换机连接(台式机的网线?)

               wifi:   需要与接入点一定范围内

 5) 广域网: 基站 3g、4g LTE ,范围可以很广 

附:Mbps

    million bits por second:Mbit/s (注意不是byte)

     Mbit/s == 0.125 MByte/s== 0.125 MB/s 

物理媒介

  源系统发射比特,第一台路由器接受这个比特 ,通过一种物理媒介传播电磁波或光脉冲来发送该比特。 

  分为 

      导引型媒介:光缆,双绞铜线,光纤等,沿着一定路线传播

      非-             :电波在空气或外层空间中传播,如无线局域网或卫星频道

网络核心

  当我们通过接入网将终端接入到因特网后,我们来研究网络核心 

分组交换:

  端系统互相交换报文(message):包含了可以执行的控制功能,或数据 

  将长报文划分为较小的数据块:称之为分组---通过通信链路和分组交换机传送

  时间:假如分组大小为L比特,链路传送速率为R比特/秒 ,则传送时间为L/R

  一条路径被n-1个分组交换机分为n条链路

1)方式:

 多数分解交换机在链路输入端使用存储转发传输(推出,发射整个分组)

     一个分组的所有比特都传输完成后,才能继续向下一个目标传输(分组交换机必须接收到整个分组后才能进行下一个操作--储存一个完整分组

  (此图中有一个分组交换机,两条链路)

2)延迟

1  存储转发(传输延迟)延迟普遍情况:

   通过由N条速率均为R的链路组成的路径(有n-1台路由器),从源目的地发送P个分组

      所需时间-即延迟为

T=(N+P-1)L/R

   

2排队延迟

     每台分组交换机可有多条链路与之相联,该分组交换机有一个输出缓存(输出队列),用于存储准备发送的分组。

    若目标链路正忙,则会等待,当缓存空间已满时,又有新到的分组。

    那么会发生分组丢失,丢包:新到的分组或在排队的分组之一将被丢弃

   ----随着流量强度的增长,丢包率也会上升,也是衡量节点性能的指标

    不同于其它延迟,排队时延可能对不同的分组来说是不同的,因为根据分组到来的时间不同而不同,所以用统计量来描述(如平均排队延迟)-{

 令 a 表示分组到达的平均速率 单位是: 分组/秒

  假定所有分组大小都是L bit ----> 则速率为 L*a  单位为 bps(bit/s)

  前文传输速率R:单位也是bps

  流量强度La/R  结果是个比值

}

    当流量强度接近于1或大于1时,排队延迟将无限增长,所以流量工程中 La/R决不能大于1

  虽并不足以全面的表征延迟的统计量,但能直观的理解排队延迟的范围

3处理延迟: 

  检查分组的导向/差错所需的时间等

4传播延迟:

   一个比特从a到b所需的时间:与距离有关 ---- 两端距离/传播速率

5 总:

 理想情况下:认为无堵塞的,无排队延迟 p29

  

6 特殊

   可能还根据协议或其他媒介有额外的延迟 : 如媒体分组化延迟

区别:

  传输时延是路由器推出分组所需要的时间(发射),它是分组长度和链路传输速率的函数,与两台路由器之间的距离无关(传输速率就是路由器或者主机,把要进行传送的比特流,放到输出链路上的速度)


   传播时延是一个比特从一台路由器传播到另一台路由器所需要的时间,它是两台路由器之间距离的函数,而与分组长度或者链路传输速率无关。


    可将比特流类比成一列(好几个)汽车,他们通过收费站所需要的时间,类似于传输时延(决定于收费员收一个汽车费用的时间--弹射出整个分组,而与这条公路有多长无关);他们沿着公路到达目的地的时间类似传播时延,与公路长度有关

3)转发表:

 路由器该如何决定朝着哪条链路进行转发呢?实际上是以不同的方式完成分组转发。

 每个端系统都有一个IP地址,分组的首部包含了目的地址:

   该地址具有一种等级结构:路由器具有的转发表,将目的地址(或地址的一部分)映射为输出链路,新接受到的路由器  又将该地址搜索其转发表:以此循环到达最终目的地---类似于问路(每次指引到新路,又问人,一步步离终点近)

 因特网具有一些特殊的选择协议,用于自动设置这些转发表。(比如计算最短路径来设置转发表)

电路交换

   预留了端系统间 沿路径通信所需要的资源

            缓存资源

            链路传输速率(带宽),预留了恒定的传输速率-总传输容量的一部分

1)方式 

    一条链路可以有很多条电路

   频分复用(FDM):链路的频谱 由跨链路创建的 所有连接者共享--每条连接专用一个频段(带宽)

   时分复用(TDM):时间被划分为固定的帧,每个帧又被划分为固定数量的时隙。为连接者在每个帧中指定一个特定的时隙供其单独使用

分组交换与电路交换的区别

  静默期电路交换由于预留了资源,每条电路速率是固定的,是总速率的一部分,这使得已分配而且并不需要的链路时间/频段未被使用。不能像分组交换时一样,只有一个活跃用户时 能用整条链路的全部速率(带宽)

 延迟:端到端电路交换   没有分组交换的存储转发延迟

 基本来讲分组交换是一种趋势,能提供更好的带宽共享- 比电路交换更简单高效,成本低、

吞吐量与其主要因素

   瞬间吞吐量:在任何一个瞬间主机b接收到改文件的速率(b/s)

   平均吞吐量:接收到的总bit---F 总时间T ---> F/T 

 由于每条链路的速率R可能不同,总是以最小的链路速率Rmin作为吞吐量

吞吐量= min{R1,R2,...,Rn}

  限制的因素

    1 实际情况中 主要影响因素是两端的接入网 链路 ,因为网络核心中的所有链路速率通常远远大于接入网的速率R

  如a)中 就是两条接入网链路

   2 由于可能有共享链路在网络核心中,平分流量,使其为R中的最小,根据公式  共享链路能成为限制的因素

网络的网络(isp结构)

终端连入isp,目的是使全部的端系统或内容提供服务商互相能通信,所以isp之间也必须相互连接

通过低级的isp 连接高级的isp ,高级的isp之间互相连接来实现

  低级的isp:称为接入isp(客户),通常为区域isp,要向高级的isp支付费用,

  高级的isp:相对低级isp的上层就是高级(提供商),顶级的为第一层isp

  存在点:(point of presence PoP)提供商网络中的服务器群组,也是客户接入点

  多宿:除了第一层isp(顶层isp,没有上级isp),都可以选择多个供应商与其连接

  对等:同级isp之间流量费用不进行结算

  因特网交换点(IXP):多个isp能够在这这里一起进行对等

  内容供应提供商:如谷歌,进过专门的网络互联,能够直接与各级ISP或IXP互联

  减少了向上层的isp支付的费用,而且对其服务有更多的控制权

协议层

如同其他学习一样,我们组织网络协议结构模型(分层) 并对 服务模型做出解释

1)利用分层结构+模块化结构:每层对其上面的层提供相同服务,并且使用来自下层的相同服务

2)改变服务具体实现方法(具体实现,结果目的还是一样),和改变服务本身是不同的;

     改变具体的实现方法不影响系统中其他分层

3)每层直接使用或间接使用来自下层的服务---第n层协议的不同部分尝尝位于这些网络组件的各部分中

4)优点:分层+模块-->大大简化结构定义,便于维护

      缺点:高层可能存在很多地层功能冗(rong)余/ 当层的某些功能可能需要其他层的数据,违反了层次分离的目标

5层因特网协议模型

我们分为五大基本层,各层的所有协议被称为协议栈(protocol stack)

总结:重点

应用层(进程间)-->运输层(应用程序)-->网络层(端系统间)--->链路层(链路节点间)-->物理层(比特流)

报文-->报文段-->数据报-->帧-->bit

1)应用层

应用层协议分布在多个端系统中,应用程序利用协议与另一个端系统中的应用进行信息分组交换

这种位于应用层的信息分组交换称为---报文(message)

2)运输层

在应用程序端点之间传送信息分组---报文段(segment)

运输层协议向他的应用程序 提供了面向程序连接的服务:比如传递,流量控制(速率匹配)

TCP协议:有可靠性,有阻塞功能,划分功能等

UDP协议:只提供必要功能,无流量控制,无可靠性等

3)网络层(IP层)

--数据报(datagram)

负责将一台主机的数据报移交到另一台主机,通过运输层协议(TCP等)向网络层递交报文段的目的地址。

IP网络协议:定义了数据报中各个字段以及端系统和路由器 如何作用于这些字段。IP仅有一个

路由选择协议:根据该路由将数据报传送到目的地

4)链路层

---帧(frame)

为了将分组从一个节点(主机/路由器)移动到下一个节点,网络层必须依靠该链路层的服务

网络层将数据报下传给链路层。网络层-->下发链路层--->传送-->上传至网络层

特定链路层协议决定着当前链路的功能,一个数据报可能经由不同链路层协议处理--被不同链路层协议服务

5)物理层

是将帧中的一个比特移动到下一个节点。

物理层的协议与链路层相关,可以看成与实际传输媒介有关的协议

OSI模型

国际标准模型,但逐渐被五层模式取代;

多加了两层模型,在应用层与运输层之间

1)表示层

作用:使通信的应用程序能够解释交换数据的含义,如数据的压缩加密(自解释的)以及数据描述(如语系等?)

2)会话层

提供了数据交换的界定和同步功能,包括了建立检查点和恢复方案的功能

-----------------------------

对于缺少了两个层次模型的问题 统一的回答是:交给程序开发者处理---决定一个服务是否重要->在应用程序中构建该功能

封装特性

数据沿着各层上上下下 ---.> 分发 ----组装过程

封装(上一层)传来的数据 + 自身的首字段 ===当前分组(两种类型字段)

网络攻击相关

本书的特色之一就是将网络安全放在中心位置 

相互信任的网络环境只是一种列外!

有害程序

病毒:是一种需要某种形式交互来感染用户设备的用户软件

蠕虫:无需任何明显用户交互就能进入设备的恶意软件 、

攻击方式

拒绝服务攻击 Denial of Service (DOS)attack :使合法用户不能使用

a 弱点攻击:发送精细的报文

b 带宽洪泛: 向目标主机中发送大量分组

->分布式Dos--DDos:控制多个源并让每个源向目标猛烈发送流量

c 连接洪泛:在目标主机中创建大量半开或全开TCP连接

嗅探分组

在无线传输当中或广播分组中,能够被动的记录 每个流经的分组 的 接收机

防御方法:第八章密码学有关

IP哄骗

伪装成接收方需要的分组

防御方法:端点鉴别-一种确定接受的分组 是我们指定源地点发来的分组 方法

通用公式

1)传输速率为R的N段链路发送长度为L个数为P个分组的传输延迟一般公式

[(N+P-1)*L]/R

2)对于固定速率R的链路,用户a速率传送,共M个用户 每个用户使用概率为p:

        电路交换最大使用用户个数:R/a个

        分组交换:

                共M个用户 同时大于n个用户使用概率符合二项分布:

   

3)假定N个分组同时到达一个 空分组传输队列,平均排队延迟为:

        等比数列求和/N:

        

(N-1)L/2R

4)流量强度I=La/R 前提下

      排队延迟形式

IL/[R*(1-I)]

    排队+传输延迟:

5)总延迟一般公式:

6)带宽时延积:R*t(传送延迟 )

其结果是以比特(或字节)为单位的一个数据总量,等同在任何特定时间该网络线路上的最大数据量——已发送但尚未确认的数据。

第二章 应用层

··网络应用是计算机网络存在的理由

应用层协议原理

        网络核心设备(路由器?)并不在应用层起作用,仅在较低层起作用;

网络应用程序体系结构:

        不同于网络的体系结构(如五层因特网体系结构),应用程序体系结构由开发者规定了在各种端系统上如何组织该程序;

分为两大主流体系结构

     1)   客户-服务器体系结构

        在这种体系结构中,总是有一个打开的主机称为服务器,处理来自其他主机(客户)的请求;

        配备大量主机的数据中心组成了强大的虚拟服务器,提供服务-如各种搜索引擎;

        

特点:客户相互之间不进行通信,必须通过服务器;

           服务器具有固定的IP地址;

       2)P2P体系结构

        对数据中心的服务器依赖性小;

特点

        应用程序间断连接的主机之间可以直接通信,不必通过专门的服务器---对等方到对等方;

        具有自扩展性:每个对等方通过向其他方分发文件,为系统增加了服务能力;

        成本效率高,但安全性,性能和可靠性是个问题;

进程通信

        我们关注在不同的端系统上的进程间的通信;通过网络交换报文而达成;

客户和服务器进程

        对每队通信进程,我们可以将一方标识为客户,另一个进程标识为服务器;

        判断标准: 

                        发起通信的进程被标识为客户,等待联系的进程被称为服务器

进程与网络之间的接口

        报文的发送与接受必须通过下面的网络而实现;

套接字:

        进程通过一个称为套接字的软件接口向网络发送、接受报文;(类似于房子的大门)

        也称为用程序编程接口,开发者可以控制套接字在应用层的一切;

        但对运输层的权限仅为: 1 选择运输层协议 2 也许能设定运输层参数(如最大缓存或最大报文长度)

进程寻址

        为了标识该接受进程(具体来说是套接字),需要两种信息

        1 主机的IP地址

        2 在目的主机中指定接受进程的标识符---通过端口号(port number),不同的应用有其特定的端口号;如web服务端口号就是80;

应用程序下的运输层服务

        主要要素有:可靠数据传输,吞吐量(带宽敏感),定时(延迟),安全性

运输层协议 TCP

        在握手阶段后,在发送与接受方套接字之间建立了TCP连接,应用程序报文发送完毕后,必须拆除该链接;

        可靠的数据传输服务+拥塞控制机制(可以抑制发送进程)

UDP

        提供最小服务,不可靠传输服务(不保证完整的,顺序的发送到接受进程)

总结

         今天的网络通常能为时间敏感应用提供满意服务,但不能提供定时或带宽保证(因特网运输协议并没有提供);

应用层协议 

        定义了:

        1 交换报文的类型

        2 交换报文类型的语法(字段)

        3 字段如何解释

        4 确定一个进程何时,如何发送报文,以及响应规则

非持续连接和持续连接

        持续连接:所有请求及其响应都通过同一个TCP连接

        非持续连接:每个都是经过一个单独的TCP连接发送--每次都要结束连接然后重新握手

                               缺点:必须为每一个对象连接并维护一个全新的连接,必须要忍受两倍的RTT交付延迟

HTTP协议

        web万维网的应用层超文本传输协议HTTP定义了客户端和服务器,使用TCP作为支撑运输层协议;通过交换HTTP报文进行会话;

        HTTP定义了web客户向web服务器请求(或反过来)web页面的方式;

web页面组成

        基本含有一个HTML基本文件(用于描述页面的结构)和 几个引用对象(如图片,脚本,视频),HTML通过URL地址引用页面中的其他对象

        URL地址:包含存放对象的服务器主机名和对象的路径名;

协议要点:

        web采用了客户-服务器结构

        是一个无状态协议,不保存关于客户的任何消息

        是一个“拉”协议(总是从服务器获取服务)

        默认使用持续连接

三次握手流程

        

定义一个来回的时间为往返时间RTT

前一个RTT用于建立TCP连接(前两次握手),第三次发送HTTP请求报文;

总时间:2个RTT +传输 HTML文件的时间

报文格式:

        请求报文

        第一行为请求行,后序为首部行

 请求行三个字段: 方法字段 | URL字段 | HTTP版本字段 {

        绝大部分http报文使用get方法请求一个对象,还有如post,head,put,delete等方法

首部行: 能具有很多首部行,每行开头表示不同语义{

        host:对象所在的主机

        connection:close代表使用非持续连接

        User-agent:用户代理,就是我们使用的浏览器

        accept-language:选择接受的版本

         等等

}

实体部分:请求报文一般为空

        请求响应报文

        初始状态行+首部+实体

初始状态行: http版本 | 状态码信息 

首部:如请求报文一样包含了不同的信息

实体:最重要部分,包含了请求的对象本身

Web-cookie

        HTTP服务器是无状态的;然而我们希望web站点可以识别客户(限制访问,跟踪用户,收集用户信息等);cookie允许站点对用户进行跟踪--在无状态HTTP之上建立一个用户会话层

        当客户第一次访问web站点时,将产生一个唯一的识别码--索引至后端数据库的一个表项中,发回响应报文中添加 set-cookie首部

        浏览器就会在 cokkie文件中添加 服务器主机名和 set-cookie号,以后每次请求一个web页面,浏览器(用户代理)就会在HTTP请求报文首部添加一行Cookie:... 首部

->以此就知道该唯一Cookie号的活动(用来跟踪,比如维持我们的购物车列表?)

web缓存

        代理服务器,类似于cpu和储存之间的catch;可以保存最近请求过对象的副本;可以配置某浏览器接受的http请求都先指向代理服务器,如没有才向服务器申请;

        如catch一样,可以大大减少成本和时间;

HTTP条件get方法

        跟catch一样,必须保证代理服务器内的信息是最新的(与目的服务器中的信息是一样的)

--> 增加 If-Modified-Since: 首部行 向web服务器进行询问

        ->web发回响应报文时 如无更新, 会在状态码信息处告知,不添加对象实体(会浪费带宽)

SMIP邮件协议

        simple mail transfer protocol + 用户代理(浏览器)+邮件服务器 构成了电子邮件;

SMTP协议要点

        传送时,要求将多媒体数据编码为ASCII码,传输后解码为原多媒体数据;

        下层也采用TCP连接;

        是一个推协议

        SMIP一般不使用中间服务器, 客户主机(发送方服务器)--接收方主机 之间直接传送;

流程:

        1 发送方通过用户代理发送该报文

        2 用户代理将报文发送到发送方服务器---报文队列中

        3 创建一个到接受方服务器的TCP连接 ,握手后发送报文;(如果接收方服务器没开机,将尝试数次)

        握手协议的一部分

        4 接收方服务器维护者每个接受方的邮箱 ----将该报文放入接收方邮箱中;

SMIP邮件报文格式

        报文实体必须是ASCII格式;

POP3/IMAP 

        接收方如何拉取位于己方服务器上的邮件呢?SMIP是一个推协议,不适用;

POP3-第三版邮局协议

        当用户代理连接到邮件服务器上的110端口上的TCP连接后,pop3就开始工作;

流程:{

1 特许阶段: 用户代理发送用户名和口令 , 服务器鉴别用户

2 事务处理:用户代理取回报文,同时能对报文做 标记/取消 删除标记,以及邮件统计信息

3 发出quit命令后,结束pop3对话 ----标记了删除的报文会被删除;

}

IMAP

        internet mail access protocol 因特网访问协议

        POP3并没有为用户在 远程服务器层次上 创建关系文件夹;

        IMAP服务器 维护了IMAP会话的用户信息状态,就可以知道文件夹名字和哪些报文相关联(以此进行查看,删除邮件等操作--类似于现在QQ邮箱?)

        可以只取回报文的部分,如只取报文首部或某部分(如只看邮件标题,而不接受具体的大容量视频)

基于web的电子邮件 

        如今大多数的发送,取回邮件报文用的都是HTTP协议,但两个服务器之间还是使用SMIP协议;

DNS

        domain name system 域名系统 --提供主机名(人类容易识别的)到ip地址(机器识别)的转换 

- 是一个由dns服务器实现的 分布式数据库

- 是一个使得主机能够 查询数据库的 应用层协议 

-所有DNS请求和回答报文都是使用UDP +53号端口发送;

提供功能

1 主机别名: 一个主机能有多个域名,其中有规范主机名,通过dns可以获取规范主机名和其ip地址

2 邮件服务器别名 : 同理邮件主机也可以拥有别名 --  邮件服务器和web服务器可以拥有相同的别名

3 负载分配: 一个规范主机名 同  IP地址集合相关联---->一个主机名可以对应多个ip地址(有很多台web服务器),在dns回答中以此用地址集合中的不同ip地址回答 --达到 负载分配效果

DNS服务器分层结构

(不可能在一台dns服务器上具有所有主机的主机名-ip地址映射)

        根服务器->顶级域服务器->权威DNS服务器->本地服务器

        根服务器 :提供TLD(top-level domain)服务器ip地址

        顶级域TLD服务器:对于每个顶级域(如com,org,net,edu等)和 国家顶级域 ,都有TLD服务器/集群

        权威服务器:所有在因特网上公共可访问的主机,都必须提供可访问的DNS记录;保存在自己的dns权威服务器上或 第三方服务商的服务器上;

        本地服务器:通常每个isp都有一台或多台本地dns服务器;用户通过网络状态窗口,可以容易知道本地dns服务器ip地址;本地dns服务器通常与本地主机地理上比较临近;(起着重要的代理作用

流程

        可以递归/迭代查询 

客户主机->本地->根->TLD->权威->本地->客户主机

DNS缓存

        广泛采用缓存技术---能将 主机名--ip地址映射 / TLDip地址映射 缓存在本地服务器中==>大部分根服务器查询都被绕过了;

DNS记录和报文

          资源记录 RR 提供了主机名到ip地址的映射,每个dns回答报文包含了一条或多条资源记录;

记录

        RR格式:DNS资源记录详解&权威|递归解析区别(超细致)_liuchenbei的博客-CSDN博客_dns资源记录

(name,value,type,TTL)
type ==A : 主机名到ip地址标准映射 (最基本的 主机名--IP映射)==NS:name是域名,value是知道该域名-ip地址 的 权威服务器主机名 (查询链)==CNAME: value是别名为name的规范主机名    (请求其他服务器如web服务器的规范主机名)==MX:是别名为name的 邮件服务器 的规范主机名;(请求邮件服务器规范主机名)

 权威服务器包含 A型记录

其他类型服务器包含NS记录(用于链式查询)+A型记录

报文

        dns只有查询和回答两种报文,且具有相同格式;

-可以用nslookup程序来发送dns查询报文 

        插入DNS记录

                必须向机构注册一个唯一域名,需提供你的权威DNS服务器名字和ip地址;该机构将NS和A型记录插入到TLD 服务器中;查询时,本地服务器向TLD服务器询问,返回权威服务器ip地址,实现链式查询;

        

p2p文件分发

        不再是传统的客户端-服务器体系结构;减少对核心服务器的依赖 

对比分发时间

        客户-服务器结构最小分发时间下界

        p2p结构最小分发下界

-实际上被分发的是文件块而不是比特流

---

bitTorrent协议(P2P协议)

概念要点:

-参与的对等方集合被称为 洪流torrent,彼此下载等长的文件块

-能随时的离开和加入该洪流,即使获得了整个文件

--每个torrent都有一个追踪器(tracker),当一个对等方加入某洪流时,向追踪器注册自己;

流程:

     邻近对等方      当一个新的a对等方加入torrent时,追踪器选择一个子集并将这些子集的ip地址发给a;a试图与这些子集主机建立TCP连接----成功的称为邻近对等方;随着时间的流式,某些对等方可能退出,某些对等方可能尝试与a进行tcp连接-->形成新的邻近对等方集合

     响应请求原则   由于不同的对等方具有不同的文件块集合;a定时的向邻近对等方询问文件块列表,请求那些自己没有文件块;{

        应该优先请求最稀缺的文件块(邻近对等方中副本最少的)

        应该回应速率最高的请求{

                每过10秒; 持续的测量接受到的比特率,确定速率最高的4个邻居(称为疏通);

                每过30秒还要随机的向一个邻居b发送块(也可能成为b的四个最高速率对象之一);

       --》 除了这4+1 =5个邻居,其他邻居都是阻塞状态-不能从a接收到任何块

        }

}

        

CDN技术

        HTTP流和DASH

HTTP流:视频作为一个普通的文件,通过特定的URL+ get请求获取;---但所有客户接受相同的编码视频;

DASH:动态HTTP流--视频编码分为几个版本,具有不同的比特率;客户动态的请求来来自不同版本长度为几秒的视频段数据块;---》允许客户以不同的以太网接入速率流式播放不同编码速率的视频;

CDN概念

        content distribution network-CDN 管理分布在多个地理位置上的服务器;

        可以是专用CDN,可以是第三方CDN;cnd服务器上储存着视频的副本;

服务器安置策略

        用单一的服务器储存所有视频不现实

深入策略:在接入ISP中部署集群,其目的是靠近用户,减少延迟,维护和管理称为挑战

邀请做客:在关键位置(如IXP)建造大集群服务器;

-->每一个CDN集群显然不可能有所有视频的副本;类似简单的缓存策略:当用户请求的视频不存在时,便向其他集群请求该视频,并在自己的服务器中储存一份副本;

CDN操作

通过DNS重定向服务

集群选择策略(CDN发给客户的集群):当CDN知道了客户的ip地址,需要选择一个适当的集群;{

1 地理上最近:但并不一定是网络上最近(跳数,延迟,带宽等因素忽略)

2 实时测量:基于当前流量条件为客户决定最好的集群

}

套接字编程(PY实现)

套接字编程-TCP网络编程_小跟班biu~的博客-CSDN博客_套接字编程

UDP套接字

        用一个二元组(地址,端口号)来标识目的地

TCP套接字

        用一个四元组来连接唯一一条tcp连接,需要有三次握手

客户端代码

服务器代码

命令

dig 查询DNS服务器等级架构

 

nslookup 查询服务器的多个ip

 

第三章 运输层

        运输层分组(TCP/UDP)称为报文段;网络层分组称为数据报;

基础概念

        运输层协议 作用于 端系统中而不是路由器中;

        为运行在不同主机上的应用进程提供了逻辑通信;    - 网络层提供了主机之间的逻辑通信;

        运输层协议提供的服务受限于下层网络层协议的服务模型;

        IP的服务模型是尽力交付(不做保证);UDP也是一种不可靠服务,但TCP是可靠的,并且提供很多额外服务;

多路复用与多路分解

        UDP/TCP套接字

端口号

        每一个进程都具有一个端口号(可能有线程-一个进程对应多个套接字)      

        是一个16bit的数,0-1023是周知端口号(留给周知应用层协议来使用 如HTTP 使用80号端口);

        通常应用程序自动的分配端口 ,而服务器则是一个特点的端口;

套接字

   UDP套接字

        由二元组【目的ip地址,目的端口号】来唯一标识;

        源端口号作为返回通信的一种信息;

        --如果udp具有相同的目的ip地址和目的端口号,将被定向到相同的目的进程

    TCP套接字

        由于是连接的,由唯一四元组【源ip/端口,目的ip/端口】来标识;

        --如果四个元素都相同,才能被分配到同一个目的套接字;

        

复用分解流程

        将运输层报文段中的数据交付到指定的进程;通过检查报文段中的目的端口号,将每个报文段定向分解到相应的套接字-----向上交付分解

        为数据块封装上首部信息生成报文段,向下传递到网络层;---向下交付复用

可靠数据传输原理

        基本都采用了等待重传模式协议

        

端到端原则:

检验和

        1 对所有报文段中的比特字进行相加(循环加-溢出补到低位),再求反-->检验和

        2 接收方:源数据+检验和结果必然是全1 ,否则出现了差错

最终模型:rdt3.0

        定时器-重传:为每个分组设定一个定时器,超时后(无论是发送丢失|ack丢失|延时)都将重传

        ACK分组-确认:对于每一个到达的分组,接收方不发送否定分组NAK,只发送 表示已完好接受的分组ACK 来告知发送方;

        序号-冗余分组:按顺序希望接收到的编号;若不对可能是丢失或者重传(单条线只用1bit 0/1来表示就行,流水线传输下就可以用多位表示)

        窗口-流水线式传输:用一个滑动窗口N来规定 发送方,接收方中未确定分组数不能超过N(本rdt3.0中未使用流水线)

FSM状态机

 

信道中的超时分组 

        对于x分组,有可能由于传输过程中时间过长+序号是循环使用的+分组可能会重新排序--->导致接收到时以为是新的分组;信道相当于缓存了此已经失效分组,在未来的任意时刻到达接收方

       解决方法:规定一个分组在网络中存活的最大时间

流水线可靠传输协议

        rdt3.0问题在于同一时刻只能发送一个分组,必须等待上一个ack确认后才能发送下一个,极大的浪费了利用率;

        解决方法:确定一个窗口大小N,最多允许N个分组一起发送,并用不同的确认方法来恢复差错;

        缺点

                1 必须增加序号范围

                2 必须缓存多个分组

                3 解决差错恢复问题

回退N步GBN

超时情况下全部重传

        1 发送方使用滑动窗口--接收方不使用窗口

        2 只有一个定时器--最早已发送但未收到ack的分组 

        3  发送方:收到一个ackN表示 序号N以前的分组全部正确传输,并更新记录N--累计确认

           超时情况下:重新发送所有 已发送但未收到确认的分组--回退N步(序号N以后的分组全部重发),若无未确认分组-停止计时器表示传输完毕        

        4 接收方:只接受想接受的序号n并回复ackN,其他情况一律丢弃 并发送最近的ACK序号分组(就会停留在N号分组--n以前全部重新接收到-与累积确认对应);

                

   

选择重传SR

选择重传超时的

        GBN中重传全部未确认分组着实有点浪费

     1   SR中重传那些需要重传的分组(正确接受分组而不管是否有序--缓存至序号低分组全部到齐为止)

     2 每一个分组都有一个定时器--

     3 发送方:接受到ackN表示ackN正确交付

     4 接收方:如果N以前全部接受完毕,窗口就往前推进;

                      收到N以前的分组x 也必须产生一个ackX(用于推进发送方窗口-避免卡死);

     5 但会导致双方滑动窗口不一致--序号有限时循环使用会导致灾祸

        --->无法判断是重传还是下一轮的新分组

--->窗口长度必须小于或等于序号长度的一半

 

        

UDP

        速度快,无需握手,没有流量控制限制,无需维护连接状态;-只提供了最基本的差错检验功能(检验和)

        应用程序可以依靠自身的可靠性机制来建立可靠连接并满足需求-而无需受到TCP连接的诸多限制;

        

报文结构:

        首部2*4=8字节 +数据部分

TCP

        采用了上文的可靠传输服务;连接前需要进行三次握手,点对点的;

连接示意图

        TCP连接组成包括:两台主机上的缓存,变量,和进程连接套接字;

        主机之间的网络元素(如路由器)没有分配任何缓存和变量

最大链路层帧长度MTU(1500字节)= MSS(应用层最大数据长度-通常1460)+ TCP首部长度(20)+IP首部长度(20

 TCP报文段结构

        TCP首部一般20字节(4*5排)

 TCP把数据看成字节流,用序号标示

序号:sequence  用于标记己方发送的字节流序号

确认号:acknowl-edgment 用于标示 想要接受 对方字节流中的序号

接受窗口:用于堵塞和流量控制(可靠传输的窗口大小)

6比特flag字段:

确认号与序号

即使没有数据(下一个字节流),也规定序号必须填充; 

往返时间估计

EstimatedRTT=(1-x)*EstimatedRTT+x* SampleRTT
//SampleRTT为一次估计的样本时间 , EstimatedRTT为平均往返时间,x通常取0.875DevRTT=(1-x)* DevRTT +x* |SampleTRR-EstimatedRTT|
//偏离程度  x通常取 0.25TimeoutInterval= EstimatedRTT + 4* DevTRR// 最终重传超时间隔 ,推荐初始值为1秒

        对于SampleRTT 这种平均被称为指数加权移动平均(呈指数衰减)

通用公式

1 避免阻塞阶段平均吞吐量,L为丢包率

 

2 估计延迟

 


http://chatgpt.dhexx.cn/article/YUYTG9nW.shtml

相关文章

《计算机网络-自顶向下》04. 网络层-数据平面

文章目录 网络层数据平面和控制平面两者的概述数据平面控制平面 控制平面:传统方法控制平面:SDN 方法网络服务模型 路由器工作原理通用路由器体系结构输入端口的功能基于目标的转发 交换结构内存交换方式总线交换方式纵横式交换方式 输出端口的功能何时何…

计算机网络自顶向下方法 习题参考答案 第一章

复习题: R1. 没有什么不同。PC、服务器、手机等。Web服务器是端系统。 R2. Protocol is commonly described as a set of international courtesy rules. These well-established and time-honored rules have made it easier for nations and people to live a…

计算机网络自顶向下方法(第六版) 课后题答案 | 第三章

复习题 R1. a. 将此协议称为简单传输协议(STP)。在发送方端,STP 从发送过程中接收不超过 1196 字节的数据块、目标主机地址和目标端口号。STP 向每个块添加一个 4 字节的报头,并将目标进程的端口号放在这个报头中。然后 STP 将目标主机地址和报文段提供…

计算机网络—自顶向下 计算机网络和因特网

目录 1. 什么是计算机网络 1.1 概念 1.2 因特网的具体构成 2. 计算机网络的结构 2.1 网络边缘(The Network Edge) 2.1.1 接入网 2.1.2 物理媒体 2. 2 网络核心(The network core) 2.2.1 电路交换 2.2.2 多路复用 2.2.3 报文交换 2.2.4 分组交换 2.2.5 网络之…

计算机网络自顶向下方法(一)——计算机网络和因特网

不要成为理想的巨人,行动的矮子 文章目录 写在前面什么是Internet?具体构成及描述什么是Internet: 从服务角度 网络边缘网络边缘:采用网络设施的面向连接服务网络边缘:采用基础设施的无连接服务 网络核心网络核心:电路交换电路交…

【计算机网络:自顶向下方法】(二)应用层

tm 【计算机网络:自顶向下方法】(二)应用层 文章目录 应用层如何创建一个新的网络应用? 2.1 应用层原理网络应用的体系结构对等模式(P2P:Peer To Peer)混合体:客户-服务器和对等体系结构 进程通信分布式进程通信需要解决的问题问题1:…

计算机网络自顶向下-第 8 版

Computer Networking A Top Down Approach 8th Edition Computer Networking A Top Down Approach 8th Edition 概述本书资源计算机网络自顶向下方法第八版英文pdf图片预览 更新特点精彩试读作者介绍 概述 概述 Computer Networking A Top Down Approach第8版也就是计算机网…

自顶向下计算机网络 传输层

自顶向下计算机网络学习 传输层 一、概述和传输层服务1.1 传输层提供的服务1.2传输层和网络层的关系1.3 传输层协议可靠的、保序的传输:TCP不可靠、不保序的传输:UDP 二、多路复用与解复用2.1 什么是复用与解复用2.2 面向连接(TCP)的多路复用与分解2.3 无…

自顶向下计算机网络学习 应用层

自顶向下计算机网络学习 应用层 一、应用层协议原理1. 网络应用的体系结构1.1 客户-服务器(C/S)体系结构1.2 对等体(P2P)体系结构1.3 混合体:客户 - 服务器和对等体系结构 2.应用进程间的通信2.1 分布式进程需要解决的问题2.1.1 进程标识和寻…

计算机网络自顶向下方法 【第一章 计算机网络及因特网】

目录 1.1 什么是因特网1.1.1 具体构成描述1.1.2 服务描述1.1.3 网络协议 1.2 网络边缘1.2.1 接入网 1.3 网络核心1.3.1分组交换1.3.2 电路交换1.3.3 报文交换 1.4 交换网中的时延,丢包和吞吐量1.5 协议层次及其服务模型 1.1 什么是因特网 我们可以用两种方式描述因…

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

《计算机网络自顶向下方法》学习笔记。之前学习过计算机网络微课,已经对计网中的很多概念都有了印象和一定的了解了,这时候再读自顶向下感觉比较轻松了。这本书没有涉及太多物理层的内容,第一章为概述。从第二章应用层开始,自顶向…

《计算机网络--自顶向下方法》第一章--计算机网络和英特网

1.1什么是英特网 1.1.1具体构成描述 主机(host)或端系统(end system):所有与因特网相连的计算设备 路由器(router):从一条入通信链路接收到达的分组,并通过一条出通信链…

计算机网络(自顶向下方法)-网络层

计算机网络(自顶向下方法)-网络层 4. 1 导论数据平面控制平面 4.2 路由器组成4.3 IP: Internet Protocol数据报格式分片IPv4地址子网IP 地址分类子网掩码(subnet mask)如何获得一个IP地址DHCP: Dynamic Host Configuration Protocol NAT:网络…

计算机网络(自顶向下)笔记

本书是自顶向下进行的, 在第一章概述计算机网络的层次结构,从第二章开始从上到下一章介绍一层(大致), 最后是移动互联网/网络安全的内容 计算机网络中的每一层都具有一定的功能, 通过层间接口向上层提供服务, 通过调用下层接口实现一定的功能. 每一层的学习方式 原理 功能向…

【计算机网络:自顶向下方法】(一)计算机网络和英特网

文章目录 1.1什么是Internet?概念internet 结构网络结构 1.2网络边缘1.3网络核心: 数据交换的功能电路交换分组交换分组交换: 排队延迟和丢失网络核心的关键功能电路交换和分组交换的比较电路交换分组交换 分类 1.4 接入网和物理媒体住宅接入 : modem接…

计算机网络重点知识整理(自顶向下)

前言 忙碌的学期结束了,趁自己对知识点的掌握还没有忘记,对计算机网络的知识点做一个整理,整理的侧重点在本校老师重点讲述部分,大家参考即可。 整理的资源来自教材(计算机网络自顶向下)以及PPT。 内容有误…

计算机网络(自顶向下方法)-Internet概述

计算机网络(自顶向下方法)-Internet概述 1.概论1.1 什么是Internet?从具体构成角度终端设备 什么是协议? 1.2 网络边缘1.3 网络核心电路交换分组交换数据报(datagram) 的工作原理虚电路(virtual circuit)的工作原理网络分类 1.4 接入网和物理…

计算机网络-自顶向下(学习笔记)

1. 计算机网络与互联网 1.1 什么是互联网 终端系统通过通信连接(communication links)和包交换机(packet switches)连接在一起 包交换机的两种主要类型 路由器(routers)与链路层交换机(link-layer swtiches)路由器应用于网络核心,链路层交换机用于接入层transmiss…

计算机网络自顶向下-应用层

一、简介: 网络应用是计算机网络存在的理由,没有了应用也不存在任何的网络协议。我们学习网络应用的原理和实现方面知识,从定义应用层概念开始,其中包括网络服务、客户】服务器、进程和运输层接口。 其中包括我们熟悉的web、emai…

《计算机网络 自顶向下方法》学习整理

《计算机网络 自顶向下方法》学习整理 计算机网络1、计算机网络(1)英特网(2)网络边缘(3)网络核心(4)时延、丢包、吞吐量(5)协议层次 2、应用层(1&…