自上而下而下的网路
什么是因特网?
接入因特网
DSL(电话公司) 电缆(有线电视)接入(一条线路共享广播,容易阻塞,空闲时很好)
- 具体的硬件构成
- 分布式应用和联网的基础设施
isp
协议
因特网描述为应用程序的平台
套接字接口:进程间交付数据的方式定义
邮政服务的比喻
接入互联网的几种方式
分组丢包造成的后果
电路交换和分组交换
电路交换网络中的复用
网络中的网络
分组交换中的时间延迟 的种类
- 节点处理时延
- 排队时延
- 传输时延
- 传播时延
时延 丢包 吞吐量 都是测试网络的性能
区分传输时延和传播时延
对于比率在链路上传输 还是不太形象
分层体系结构的思想
设计一个复杂的系统的时候,我们应该从何设计起来呢?
面像对象|飞机 运输系统|网络分层协议| 切片系统|切片解析系统
某些内容提供商构建了自己的网络。描述谷歌的网络。内容提供商构建这些网络的动机是什么?
研究分组嗅探器 Wireshark
研究跟着路由信息
协议层次及其服务模型
蠕虫(不需要用户明显交互)与病毒的区别
第一章总结
因特网到底是一个什么呢?简单的理解,就是 n 多个具备联网的设备(如电脑,手机,智能手表。。。) 与媒介(光纤,双绞线,无线电) 和 分组交换机(转发,选择线路) 互相连接的一个网络。它是全球范围性的。接入互联网的几种方式, 数字用户线,电缆,光纤,因特网,Wi-Fi,局域网。提供因特网接入服务的,叫做 isp,isp 的体系构建也是层树状的。大致全球有十几个一级的 isp 互联,各自旗下有更低层级的 isp,isp 的宿迁,是指让 isp 有容错机制,不会导致单点故障。 端系统(主机)是如何通信的呢?是通过一种“协议”的东西。协议 规定了,要方法约定成俗的 “规则“(怎么发送数据,怎么响应),体系分层大致五层。有应用层,运输层,网络层,链路层,物理层。对分层体系的思考(其实质就是面向对象原则)。在应用层最常接触的协议,http 协议,ftp, smtp 邮件协议。其次到了运输层协议,tcp|udp 协议.这里先要明白一个概念.进程套接字接口,是指进程间交互交付数据的一种约定。tcp|udp 这协议的分解和多路复用 还是限制在端系统之中。tcp 把来自应用层的报文切割成一小块一小块,这叫做分组,然后附上 tcp 规定的信息,通过网络链路 和分组交互机到达目标应用的进程。传输比特,又有两种方式,分组交换|电路交换。电路交换,就是保证有一条预留的信道,供传输。分组交换,会有排队时延。时延又大致有四类 排队时延,处理试验,传播时延,传输时延。要区分传输时延和传输时延。最重要的区别就是: 传输(发送比特出去这个耗时),传播(链路长度/传播速率)。丢包是指排队的缓存满了,要丢弃一些分组。了解了病毒和蠕虫的区别。一个是有明显的用户交互行为,蠕虫是找程序的漏洞。
第二章 应用层
应用程序体系结构
网络核心设备并不在应用层上起作用,而仅在 较低层起作用,特别是在网络层及下面层次起作用。这种基本设计,即将应用软件限制在端系统(如图 2・1 所示)的方法,促进了大量的网络应用程序的迅速研发和部署。
上面这句话,分层体系的思想淋淋尽致,也就是“解藕”
主流程序 体系结构 cs|P2P
应用程序之间的通信 实质是进程间的通信
进程与网络计算机之间的接口
把套接字 比作门,也比较形象
开发者对运输层的控制
可靠数据传输、吞吐量、定时和安全性
tcp|udp 的区别
应用层协议定义了什么呢?
- 交换报文的类型
- 各中报文类型的语法
- 字段的语义
- 确定进程何时怎么发送报文
三次握手,第三次的请求发送是带(确认信息和请求体)?
http 持续链接 与非持续链接
简要分析一下一个 http 请求的报文响应格式
web 缓存
缓存命名原理分析
因特网中的电子邮件
smtp 限制报文体
主要是因为不通过 Alice 的邮件服务器进行中继,Alice 的用户代 理将没有任何办法到达一个不可达的目的地接收服务器。
dns 提供的服务
- 一个分层的 dns 服务器实现的分布式数据库
- 一个使主机能够查询分布式数据库的应用层协议
- dns 协议运行在 udp 之上,使用 53 端口号
提供其他服务:主机别名,负载分配
nslookup
BitTorren
因特网视频
经 HTTP 的动态适应性流(Dynamic Adaptive
Streaming over HTTP, DASH)
DASH 允许客户使用不同的以太网接入速率流式播放具有不同编码速率的视频
如果端到端带宽在会话过程中改变的话,DASH 允许客户适应可用
带宽
内容分发网络 解决什么问题而存在的
研究下“种子下载的原理”
运输层
IP 地址 :https://zhuanlan.zhihu.com/p/26030614
什么叫做单播,什么叫做组播
检验和,差错检测机制
报文段十六比特相加,然后反码运算,传输过程中如果有差错,目的地求和预算 不为 111111.。。。,
自动重传请求
(Automatic Repeat reQuest, ARQ)协议。
- 差错检测
- 接收方反馈
- 重传
停等协议,必要要从接收方接受正确的“回复(ok|no)”
反馈分组 -》也需要纠错。
可靠数据传输协议原理 简述
即将网络层的在两个端系统之间的交付服务扩展到运行在两个不同端系统上的应用 层进程之间的交付服务
为什么需要分组交换机来做转发呢,直接通信不好嘛?
- 很多条条链路,需要分组交换机去选择最优路径
套接字 接口:交付数据的方式
什么是协议
报文实体和实体
时刻要要在自己的脑子问自己,究竟是有什么作用
ISP 层计算机网络架构
分组交换中的时间延迟
处理 ->排队->传输->传播
端到端的吞吐量
带宽? 链路
应用层
web 缓存器(网络监管)
dns 提供的服务
集中式设计 单点故障 通信容量 远距离的集中数据库 维护
分布式设计
分布式,层次数据库
p2p 原理
cdn
udp 与 tcp 的不同,都是为了解决什么而存在的呢?
问题
如何用自己的话去描述因特网呢?
分组交换与电路交换的区别
都是为了信道到传输不同的信号源
时分复用和频繁复用
https://www.zhihu.com/question/64179468
分组交换的性能大于电路交换?为什么?
传输时延 与传播时延的区别?
- 传输时延是路由器推出分组所需要的时间,它是分组长度和链路传输速率的函 数,而与两台路由器之间的距离无关
- 传播时延是一个比特从一台路由器传播 到另一台路由器所需要的时间,它是两台路由器之间距离的函数,而与分组长度或链路传 输速率无关。
今天,对因特网的吞吐量的因素通常是接入网
分层体系结构,你是怎么理解的呢?
计算机网络设计 者能够采取什么防御措施,以使与因特网连接的设备免受恶意软件的攻击?
增加一层接受安全层?但怎么检测病毒呢?
计算机历史
https://www.secrss.com/articles/11938
2000 年互联网泡沫的
https://zhuanlan.zhihu.com/p/158912253
经过->发展->关键节点->后果
互联网诞生之初(只在高校研究所和国家军用中使用)
互联网产生巨变(万维网 ,dns)
当时的个人计算机并没有互联,(单机,独立运作软件)
潮起-》贝佐斯(卖书)ebay(二手交易平台) ,
互联网的便利,
用户的快速增长。
政府的 降息和减税 刺激民众拿钱投资
互联网公司在纳斯达克涨的这么好
吸引了大量的投资者和创业者
高潮
马克思在《资本论》里面曾经说过,如果有 50%的利润,它就铤而走险;如果有 100%的利润,它就敢践踏一切人间法律;如果有 300%的利润,它就敢犯任何罪行,甚至绞首的危险。
正如巴菲特的那句话,当大潮退去,才知道是谁在裸泳,至暗时刻即将来临
潮落
美联储感觉形式不对(加息打击),
3 月 13 日日本经济再次进入衰退期的新闻引起国际市场上针对科技股的抛售,投资者担忧的情绪开始升温。
《烧光》揭露互联网营收状况
泡沫给我带来的反思是什么呢?
新生事物的出现,对世界是有利的,就会促使很多人逐利,现在很多互联网公司“炒概念”,
要辩证看待 需要实现的资源(时间,金钱,投入)。国内产品大多都是从国外抄过来的,
自己的创新性不足。下一个时候,人与人之间的连接将又是一个怎么样的形式呢?
TCP
实现可靠传输的方式之一,是通过序列号与确认应答。
重传机制
- 超时重传
「超时重传时间 RTO 的值」应该是一个动态变化的值。
估计往返时间,通常需要采样以下两个:
需要 TCP 通过采样 RTT 的时间,然后进行加权平均,算出一个平滑 RTT 的值,而且这个值还是要不断变化的,因为网络状况不断地变化。
除了采样 RTT,还要采样 RTT 的波动范围,这样就避免如果 RTT 有一个大的波动的话,很难被发现的情况。
超时触发重传存在的问题是,超时周期可能相对较长。那是不是可以有更快的方式呢?
于是就可以用「快速重传」机制来解决超时重发的时间等待。
- 快速重传
它不以时间为驱动,而是以数据驱动重传。
快速重传的工作方式是当收到三个相同的 ACK 报文时,会在定时器过期之前,重传丢失的报文段。
重传的时候,是重传之前的一个,还是重传所有的问题。
为了解决不知道该重传哪些 TCP 报文,于是就有 SACK 方法。
- SACK (Selective Acknowledgment 选择性确认)
这种方式需要在 TCP 头部「选项」字段里加一个 SACK 的东西,它可以将缓存的地图发送给发送方,这样发送方就可以知道哪些数据收到了,哪些数据没收到,知道了这些信息,就可以只重传丢失的数据。
D-SACK
滑动窗口
使用了 SACK 来告诉「发送方」有哪些数据被重复接收了。
那么有了窗口,就可以指定窗口大小,窗口大小就是指无需等待确认应答,而可以继续发送数据的最大值。
只要发送方收到了 ACK 700 确认应答,就意味着 700 之前的所有数据「接收方」都收到了。这个模式就叫累计确认或者累计应答。
TCP 头里有一个字段叫 Window,也就是窗口大小。
这个字段是接收端告诉发送端自己还有多少缓冲区可以接收数据。于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。
所以,通常窗口的大小是由接收方的决定的。
流量控制
TCP 提供一种机制可以让「发送方」根据「接收方」的实际接收能力控制发送的数据量,这就是所谓的流量控制。
流量控制是避免「发送方」的数据填满「接收方」的缓存,
当服务端系统资源非常紧张的时候,操心系统可能会直接减少了接收缓冲区大小,这时应用程序又无法及时读取缓存数据,那么这时候就有严重的事情发生了,会出现数据包丢失的现象。
拥塞控制
在网络出现拥堵时,如果继续发送大量数据包,可能会导致数据包时延、丢失等,这时 TCP 就会重传数据,但是一重传就会导致网络的负担更重,于是会导致更大的延迟以及更多的丢包,这个情况就会进入恶性循环被不断地放大….
拥塞控制主要是四个算法:
慢启动
可以看出慢启动算法,发包的个数是指数性的增长。
拥塞避免
当拥塞窗口 cwnd 「超过」慢启动门限 ssthresh 就会进入拥塞避免算法。
那么进入拥塞避免算法后,它的规则是:每当收到一个 ACK 时,cwnd 增加 1/cwnd。
线性增长
拥塞发生
当触发了重传机制,也就进入了「拥塞发生算法」。
快速恢复