计算机网络 自顶向下 笔记
目录
第一章 计算机网络和因特网
全书答案评论留言即可 我私发,这里上传不了文本
第一章 计算机网络和因特网
什么是因特网?
因特网的具体构成:构成因特网的基本硬件和软件组件
分布式应用的互联网基础设施来描述
----------------------------
物理构成:
联网的设备称为 主机(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连接,需要有三次握手
客户端代码
服务器代码:
第三章 运输层
运输层分组(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字节 +数据部分
计算机网络 自顶向下 笔记相关推荐
- 计算机网络-自顶向下笔记-应用层-P2P应用
计算机网络所有笔记 P2P文件分发 P2P(peer to peer)应用的特性: 没有服务器 任意端系统之间直接进行通信 节点阶段性接入Internet 节点可能更换IP地址 P2P的明显的缺点:复 ...
- 计算机网络(自顶向下)笔记
本书是自顶向下进行的, 在第一章概述计算机网络的层次结构,从第二章开始从上到下一章介绍一层(大致), 最后是移动互联网/网络安全的内容 计算机网络中的每一层都具有一定的功能, 通过层间接口向上层提供服 ...
- 无线网络和移动网络--计算机网络自顶向下笔记(七)
简介 无线链路 无线网络特征 物理层特征 CDMA 两种无线网络 WiFi 体系结构 MAC协议 帧格式 帧地址的变化 其他性质 蜂窝网 移动管理 原理 寻址 间接路由选择 直接路由选择 移动IP 对 ...
- 计算机网络-自顶向下方法-笔记【第3章-传输层】
计算机网络-自顶向下方法-笔记[第3章-传输层] 学习的课程及图片来源:中科大郑烇.杨坚全套<计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)>课 ...
- 计算机网络-自顶向下方法-笔记【第2章-应用层】
计算机网络-自顶向下方法-笔记[第2章-应用层] 学习的课程及图片来源:中科大郑烇.杨坚全套<计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)>课 ...
- 计算机网络自顶向下方法笔记01
<计算机网络自顶向下方法>学习笔记.之前学习过计算机网络微课,已经对计网中的很多概念都有了印象和一定的了解了,这时候再读自顶向下感觉比较轻松了.这本书没有涉及太多物理层的内容,第一章为概述 ...
- 计算机网络自顶向下方法笔记02
<计算机网络自顶向下方法>学习笔记02:运输层. 运输层介于应用层与网络层之间,为应用层提供了直接的通信服务.在应用层时已经介绍了两种运输层协议UDP和TCP,本章主要介绍这两个协议和运输 ...
- 【计算机网络---自顶向下方法笔记1】计算机网络和因特网概述
今年大年初四,首先祝大家新年快乐哦~停更了好久,虽然有些忙过节了,但还是要对知识进行巩固啊! 本次的学习教材是黑皮书<计算机网络-自顶向下方法>,作者:James F.Kurose与Kei ...
- 计算机网络自顶向下学习笔记
计算机网络自顶向下学习笔记 第一章.计算机网络和因特网 1.1什么是因特网 1.1.1具体构成描述 1.1.2服务描述 1.1.3协议 1.2网络边缘 1.2.1接入网 1.2.2 物理媒体 1.3 ...
最新文章
- C#:String.Format数字格式化输出
- 极客Web前端开发资源大荟萃#007
- python 实现分治法的几个例子
- linux通过rinetd工具进行端口映射/转发/重定向
- python入门之控制结构顺序与选择结构_Python 入门之控制结构 - 顺序与选择结构——第1关:顺序结构...
- DL:深度学习算法(神经网络模型集合)概览之《THE NEURAL NETWORK ZOO》的中文解释和感悟(二)
- 生成UUID作为主键
- linux下Intellij Idea 14的安装
- java方法的传递方式_JAVA基础--方法传参
- phpcms文件所需权限
- define特殊用法
- java查询数据库数据放到Excel下载
- 梭织布印染后整理瑕疵最全解读
- 联想服务器怎么使用无线网卡,Lenovo无线装置设置界面无法调节无线网卡
- 【矢量图】PyEcharts导出图片并矢量化
- python 图片分别保存至文件夹(深度学习图片数据集处理)
- 《响应式Web设计性能优化》一2.3 Web运行时性能
- 《内网安全攻防:渗透测试实战指南》读书笔记(八):权限维持分析及防御
- 时序分析 44 -- 时序数据转为空间数据 (三) 格拉姆角场 python 实践 (上)
- 电脑能上qq,不能上网,打不开网页---问题分析