今年大年初四,首先祝大家新年快乐哦~停更了好久,虽然有些忙过节了,但还是要对知识进行巩固啊!
本次的学习教材是黑皮书《计算机网络—自顶向下方法》,作者:James F.Kurose与Keith W.Roses。关于本书的中文与实验答案请参考Github答案
首先解释书名为什么叫自顶向下方法,我们知道因特网网络体系分为5层,从自顶向下顺序为:应用层、运输层、网络层、链路层、物理层。本书正是以这种方法来进行讲解。
话不多说,直接开始吧。本次笔记也进行以图文并茂的形式来丰富知识。
本节知识只是对计算机做整体研究,讲得并不是很细(所以是自顶向下),在日后的学习章节再深入,同时也是进行Visual C++网络编程的过程。
你的三连就是我创作的最大动力!!!
因特网非常复杂,很难给出一句话的定义。描述的方法有这两种:1.描述因特网的具体构成,即基本硬件和软件组成。2.根据分布式应用提供服务的网络基础设施来描述。
使用因特网的机器可以成为主机或端系统。
端系统通过通信链路和分组交换机连接到一起。其中,分组交换机目前著名的类型有:路由器和链路层交换机。传输速率以bps度量。
ISP是因特网服务提供商,端系统正是通过其来进行接入网络的。这些都要运行一系列协议。其中最重要的两个协议是TCP/IP协议。IP协议定义了在路由器和端系统中发送和接收的分组格式。
因特网标准由因特网工程任务组研发(IETF 2007),标准文档称为请求评论(RFC),它们定义了诸如TCP、IP、HTTP(用于Web)、SMTP(用于电子邮件的开放标准)这样的协议。
公共因特网(全球网络的“网络”)是特定的网络,所以通常被特指为因特网。当然还有许多专用网络,例如公司和政府等,这些网络的主机不能与专用网络外部的主机交换信息(除非通过了防火墙),这些也被称为内联网。
分布式应用程序比如电子邮件、网络冲浪、P2P 文件共享,远程注册等——设计了多台相互交换数据的端系统。
与因特网相连的端系统提供了API(应用程序编程接口)。因特网是基础设施,新应用程序正在不断地发明和设置。
如何理解协议?下面给出一张图来进行解释。和人类类比就一目了然!有相同的协议才能运行下去!
那么网络协议也是同样的,只不过交换报文和采取动作的实体是设备了。凡是涉及两个或多个通信的远程实体都受协议的制约。
以一个计算机网络协议举例:当你向web服务器发送请求是,即输入url会发生什么呢?上图就给出了一种情形。首先计算机向web发送一条“连接请求”报文、并等待回答。服务器最终收到信号并返回连接响应。得知正常后,计算机则发送网址,web服务器则返回该web网页(文件)。
首先给出一张图来进行说明:
很明显,端系统处于因特网的边缘部分,包括有桌面计算机、服务器(web和电子邮件服务器)、移动计算机。当然,端系统也称为主机,所以有时候会划分两种:客户机和服务器。客户机非正式等同于桌面计算机,服务器可以看成强大的计算机,用于存储和发布web页面、电子邮件等。
客户机-服务器模式无疑是因特网最流行的结构。所以程序就是前面所讲的分布式应用程序。然而如今的越来越多程序是对等(p2p)应用程序了。例如:当向了另一个对等方请求文件是起客户机作用,当向另一个对等方发送文件时起服务器作用。所以通信会话是对称的。这就是P2P体系结构。
接入网是将端系统连接到边缘路由器的物理链路。一般分为:住宅、公司、无线接入。
住宅接入:家庭端系统与边缘路由器相连接。一种是通过**拨号调制解调器(dial-up modem)**与ISP相连。当然现在,新型宽带接入技术提供更高的比特速率,常见的有:数字用户线(DSL)和混合光纤同轴电缆(HFC)。
无线接入:就是手机上网。无线化在如今也是很普遍了,目前有两类接入方式:1.在无线局域网中,用户与几十米半径内的基站传输/接收分组。2.在广域无线接入网,分组经用于蜂窝电话的相同无线基础设施进行发送,基站由电信提供商管理。基于IEEE 802.11技术的无线局域网(无线以太网和wifi)。
指出所使用的物理媒体,分为两种:导引型媒体(光缆、双绞铜线)和非引导型媒体(空气)。
上世纪出现光纤技术时,许多人开始轻视双绞了,但其不是容易抛弃的,现代双绞(例如5类UTP线)能达到100Mbps速率,所以也最终高速LAN联网的主要方式。
网络核心:互联了因特网端系统的分组交换机和链路的网状网络。
通过网络链路和交换机移动数据有2种:电路交换(预留)和分组交换(不被预留),两者最大的区别就在于是否会被预留!使用分组的话,不得不等待(排队)来进行通信。这里可以以餐馆是否预定为例来详细理解。
电路交换:
无处不在的电话网络是电路交换网络的例子。在发送语音或信息,该网络必须建立相互的连接,预留了传输速率。
主机A为向主机B发送报文,必须要留一条电路。因为每条链路有n条电路,每条链路由端到端连接使用,可获得1/n部分。
以一个例子为例:考虑主机A到主机B经一个电路交换网络需要多长时间发送640kb文件。假定网络中所有链路使用时隙数24的TDM,并具有1.536Mbps的速率。同时假定在主机A能够开始传输该文件时需要500ms创建一条端到端的电路。那么,它需要多长时间才能发送文件?
解:每条电路速率1.536/24=64kbps,因此需要(640/64)=10s,对于这个10s,加上电路创建时间需要10.5s。注意到时间和链路数量无关:即使该端到端电路通过一条链路或100条链路,传输时间也是10s。
交换报文,例如握手例子中的“你好”。在现代中,源主机将长报文划分为较小的数据块,并称为分组。在源和目的地之间,这些分组中的每个都通过通信链路和分组交换机。
多数分组交换机在链路的输入端使用存储转发传输机制,指在交换机能够开始向输出链路传输该分组的第一个比特之前,必须接收到整个分组。因此,存储转发式分组沿着该分组的路径在每条链路的输入端引入了存储转发时延。
以一个例子为例:考虑从一台主机经分组交换网络向另一台主机发送一个L比特分组需要多长时间。假定在这两台主机有Q段链路,每段链路的速率为Rbps。假定这是该网络中的唯一分组。从主机A发出的该分组必须首先传输到第一段链路上,这需要L/R s.然后余下的Q-1段链路上传输,即它必须存储和转发Q-1次,每次都有L/R的存储转发时延,因此总时延为Q/R.
对于每条相连的链路,该分组交换机具有一个输出缓存(也称输出队列)。所以除了存储时延外,还要承受排队时延。因为缓存空间大小有限,所以可能出现充满的情况。在此情形下,将出现分组丢失和丢包——已经到达的分组可能是已经排队的分组之一将被丢弃。
分组交换因其端到端时延是变动的和不可预测的(不适合实时服务,例如电话和视频),但是比电路交换提供了更好的带宽共享,比其更简单成本低。电路交换不考虑要求而预先分配传输链路的使用,使得已分配但不需要的链路时间未被利用。另一方面,分组交换使用按需的方式分配链路。这样的按需(不是预分配)共享资源有时称为资源的统计多路复用。
在公共因特网中,坐落在因特网边缘的接入网络通过分层的ISP层次结构与因特网的其他部分相连,接入ISP位于该层次结构的底部。该层次的最顶层是数量较少的第一层ISP,其特性可以表示为:直接与其他每个第一层ISP相连;与大量的第二层ISP和其他客户网络相连;覆盖国际区域,所以它也被称为因特网主干。
第二次ISP具有区域性或国家性覆盖规模。第一层相当于是提供商,这层就是客户了。·
在一个ISP的网络中,某ISP与其他ISP的连接点被称为汇集点(POP)。
当分组从一个节点沿着路径到后继节点时,该分组在沿途经受了几种类型的时延。比较重要的有:节点处理时延、排队时延、传输时延和传播时延。这些时延总体累加起来就是节点总时延。一般有:节点处理—>排队—>传输。
处理时延:检查比特级差错所需的时间等,出现在上游节点向路由器A传输的过程中,一般也是微秒或者更低的数量级。在这种节点处理后,路由器将该分组通往路由器B链路之前的队列。
排队时延:如果队列为空那么该分组的排队时延为0。不难发现,到达组的分组数量是到达该队列的流量的强度和性质的函数。
传输时延:假定分组以先到先服务方式传输(常见的方式),仅当所有已经到达的分组被传输后才能传输我们的分组。由上存储转发时延一节可知,时间是L/R。
到达的分组将发现一个满的队列,由于没有地方存储这个分组,路由器将丢弃该分组,即该分组将会丢失。
从端系统的角度来看,上述现象看起来是一个分组已经传输到网络核心,但它绝不会出现在目的地。丢失分组的数量随着流量强度增加而增加。丢包的分组可能要基于端到端的原则重传。
考虑从主机A到主机B通过计算机网络传送一个大文件。任何瞬间的瞬时吞吐量是主机B接收到该文件的速率(以bps计)。许多文件其实在下载时显示了瞬时吞吐量,例如文件由F比特组成,主机B接收用了T秒,所以平均吞吐量为F/T bps。一般来说,因特网电话超过24kbps,实时视频程序超过256kbps。
吞吐量取决于数据流过的链路的传输速率。
为了给网络协议的设计提供一个结构,网络设计者以分层的方式组织协议以及实现这些协议的硬件与软件。每一个协议属于一层,我们再次关注某层向其上一层提供的服务,即所谓的服务模型。
各层的协议被称为协议栈,因特网的协议栈有5个层次组成(由下及上):物理层、链路层、网络层、运输层和应用层。
以下的几种体系做简略介绍,详细介绍请关注后续笔记。
应用层是网络应用及其应用层协议存留的地方。包括了HTTP(为Web文档提供了请求和传送)、SMAP(提供了电子邮件报文的传输)。我们可以看到,某些网络功能,如将像www.baidu.com转换成32比特网络地址,也是借助于应用层协议——域名系统DNS完成的。位于应用层的信息分组称为报文。
提供了在应用程序端点之间传送应用层报文的服务。在因特网中,有2个运输层协议,即TCP和UDP,利用任何一个都能传输应用层报文。TCP服务包括了应用层报文向目的地确保传递和流量控制,并提供了拥塞控制机制,因此当网络拥塞时能抑制传输速率。UDP向应用程序提供无连接服务。将运输层分组称为报文段。
因特网的网络层负责将称为数据报的网络层分组从一台主机移动到另一台主机。包括著名的IP协议。
将链路层分组称为帧。为了将分组从一个节点移动到路径上的下一个节点,网络层必须依靠链路层的服务。其中的例子包括以太网、WiFi和点对点协议(PPP)。
物理层的任务将帧中的一个一个比特从一个节点移动到下一个节点。,与链路层相关,并且进一步与链路的实际传输媒体相关。
上述的协议栈不是唯一的,国际标准化组织(ISO)提出计算机网络组织为大约7层,称为开放系统互连(OSI)。如下图整理来看:
在后面的学习中,将深入学习在计算机网络中防御攻击的方法,这里将纵观较流行的安全相关问题,以便后续章节进行充实的讨论。
一旦恶意软件感染了我们的设备它能做不正当的事情,受害主机还可能征召网络上数以千计的类似受害设备,这些统称为僵尸网络。大多数恶意软件是自我复制,一旦感染了一台主机就会感染更多。
病毒就是一种需要某种形式的用户交互来感染用户设备的恶意软件。
拒绝服务(DoS)是一种宽泛类型的安全性威胁,顾名思义,DoS攻击使得合法用户不能使用网络、主机或其他基础。有以下三种类型:
1.弱点攻击 2.带宽共泛 3.连接共泛
生成具有任意源地址、分组内容和目的地址的分组,然后将个人制作的分组传输到因特网中。用虚假的地址伪装成真实的源地址,进而执行某些嵌入在该分组中的命令,具有这种能力的被称为IP哄骗。为了解决问题,需要采用端点鉴别机制,即确保报文源自我们认为应该来自的地方。
在本次学习中,对计算机网络也有了较为宽泛的认识,例如因特网、网络边缘与核心等。重要的协议栈有哪5个层次组成吗,当然也认识了一些协议,例如DNS,TCP/IP协议等,同时也详细解释了分组交换和电路交换等的区别…总之,本次只是对其框架做一个了解,对日后学习也有帮助,但同时也是我接下来进行C++网络编程重要的步骤。
看到这里了,不妨三连一下,创作不易~