备注:本文是读《计算机网络》的笔记
什么是因特网,下面从两个方面来描述,分别是构成和提供的服务。
因特网是一个世界范围的计算机网络,互联了遍及全世界的计算设备的网络。
当前时代,与因特网相连的不仅仅只是计算机了,还包括手机、智能家电等等。所有的这些设备都称为主机(host)或者端系统(end system)
端系统通过通信链路
和分组交换机
连接到一起。下面简单介绍几个概念
当一个端系统向另一个端系统发送数据时,发送端将数据分段
,并为每段添加首部
字节.由此形成的信息包用于计算机网络的术语称为分组(packet)。这些分组将在接收端被装配成初始数据。
后面会提到。由物理媒体组成,如同轴电缆、铜线等等。
最著名的两种类型就是路由器和链路层交换机。这两种的作用都是向着最终目的地转发分组。但链路层交换机一般用于接入网络,而路由器用于网络核心中
。
分组传输过程中经历的一系列分组交换机称为通过该网络的路径(route或者path)
端系统通过ISP接入因特网。每个ISP自身就是一个由多台分组交换机和多段通信链路组成的网络。
所有的因特网部件都要运行一系列协议来完成工作,这些协议控制因特网中信息的接收和发送。TCP和IP是因特网中国最为重要的协议。
协议是很重要的,这样不同的组件才能协同工作。
像在线社交、视频会议、来自云的电影流等涉及多个相互交换数据的端系统
的应用程序,我们称之为分布式应用程序。
这时因特网就是一个应用程序(我们用java、c等语言开发的程序)的平台
.应用程序之间通过**套接字接口(socket interface)**来交换数据。socket interface是一套发送程序必须遵循的规则集合。就比如我们寄信时,需要按邮局的规定写邮编、地址、收件人等等。
在我的理解中,协议就是所有参与者之间交互的规则
再后面我们会提到网络是分层的,每一层其实都有一套或多套协议。
书上的定义
协议定义了再两个或多个通信实体之间交换的报文的格式和顺序,以及报文发送和/或接收一条报文或其他事件所采取的动作。
本节我们介绍一些网络的边缘,即我们比较熟悉的一些网络部件。
端系统也就是主机,有时可以细分为客户端和服务端
将端系统物理连接到边缘路由器的网络。
边缘路由器:端系统到任何其他远程端系统的路径上的第一台路由器
因为物理层,我觉得不是重点,并且图较多。这里不做过多记录,详情可以看书。
我小学时是用宽带上网(也需要输入账号、密码),不要和拨号上网弄混(拨号时很老的年到,20世纪90年代差不多
)
在公司和大学或者其他环境下,使用局域网(LAN)将端系统连接到边缘路由器。wifi也是差不多道理
前面一小节主要时介绍接入技术,不过也提到了一些用到的物理媒体。
主要分成两种类型:引导型媒体和非引导型媒体。对于引导型媒体,电波沿着固体媒体前行,如:光缆、双绞铜线、同轴电缆。对于非引导型媒体,电波在空气或外层空间中传播,例如无线局域网或者数字卫星频道。
边缘之后就是核心了。网络核心就是分组交换机和链路组成的网状网络
在园和目的地之间,每个分组都通过通信链路和分组交换机传送。
多数分组交换机在链路的输入端使用存储转发传输机制。该机制是指在交换机能够开始向输出链路传输该分组的第一个比特之前,必须接收到整个分组。
每台分组交换机有多条链路与之相连
.对每条相连的链路,交互机都有一个输出缓存
(也称为输出队列),它用来存储准备发往
那条链路的分组(注意是发往
)
如果到达的分组需要传输到某条链路,而此时这条链路正忙于传输其他分组,该分组就需要到输出缓存中等待。因此除了存储转发时延外,分组还需要承受输出缓存的排队时延。因为缓存空间的大小是有限的,如果分组到达时,该缓存已经充满了。则需要丢弃该分组。也是就我们经常听到的丢包。
整理一下
可能是数据量大,或者发送速度慢
),则可能会丢包路由器从它相连的一条链路得到分组,然后向他相连的另一条通信链路转发该分组
.路由器是怎样决定应当向哪条链路进行转发呢?不同的网络中实现方式不一样
在因特网中,每台路由器都有一个转发表,用于将目的地地址(或目的地的一部分)映射成输出链路。
转发表是如何设置的?
因特网具有一些特殊的路由选择协议,用于自动地设置这些转发表。
通过网络链路和交换机移动数据有两种基本方法:电路交换和分组交换。
在电路交换网络中,在端系统通信会话期间,预留
了端系统间沿路径所需要的资源(缓存,链路传输速率)。因为已经预留了资源,所以发送方能以确保的恒定速率向接收方传送数据。
有频分复用(FDM)或时分复用(TDM)。FDM就是类似我们听电台,不同的频道对应不同的电台。
缺点:分配的资源额度是固定的,在静默期空闲而不够经济
分组交换的优势
趋势是朝着分组交换发展。
前面提到端系统连接到ISP之后,就可以与其他连接到该ISP的端系统通信。那全世界是存在许多ISP,如何跨ISP通信呢?很明显,ISP之间也必须互联。互联的方案有许多种,下面会介绍。
网络的网络是一个非常复杂的结构。这种演化很大部分是由经济和国家策略驱动的,而不是由性能考虑驱动的。
分组在传输过程中存在多种类型的时延。最为重要的有:节点处理时延、排队时延、传输时延、和传播时延
处理时延
检查分组首部和决定将该分组导向何处所需要的时间是处理时延的一部分,还包括其他因素:bit级别的差错校验等等
排队时延
在队列中,当分组在链路上等待传输时,它经受排队时延。
传输时延
将所有的分组的比特推向链路(即传输,或者说发射)所需要的时间。一般通过L(L比特表示该分组的长度)/R(R bps,即b/s。表示路由器A到路由器B的链路传输速率)
计算
传播时延
一旦一个比特被推向链路,该比特从链路的起点到路由器B(目的地)所需要的时间。该值和物理媒体
有关.
排队时延是不确定的,对不同的分组,该值也是不同的。人们对于该时延最感兴趣,也做了很多研究
比率La/R称为流量强度。当该值
>1时
。表示到达的太快了,队列趋于无限增加。因此流量工程的金科玉律:设计系统时,流量强度不能大于1<=1
时。达到流量的性质影响排队时延。比如周期性到达、突发形式到达等。现实中国,一条链路的输出缓存时有限的,随着流量强度接近1,排队时延并不会趋向于无穷大。因为,有些到达的分组会被路由器丢弃
前面一直都是在讨论节点时延,即在单台路由上的时延。现在考虑从源到目的地地时延。
*号是超时,没有返回任何时间信息,所以用*号来代替。也有可能是因为路由器设置了拒绝ping攻击,所以路由器不理会收到的所有icmp报文,所以收不到返回信息。于是电脑因一直没等到返回信息,便认为是返容回超时,于是显示了*号
。
这里的时间是往返时间,即包括了传输时延、传播时延、路由器处理时延和排队时延。因为排队时延随时间变化
,所以分组n发送到路由器n的往返时延实际上可能比分组n+1发送的路由n+1的往返时延更长。
计算机网络中一个至关重要的的性能测度是端到端的吞吐量。分为瞬时和平均两种。
瓶颈链路
的传输速率影响。现在因特网中的瓶颈链路一般是接入网干扰流量
利用分层的体系结构,我们可以讨论一个大而复杂系统的定义良好的特定部分。这种简化本身由于提供模块化而具有很高价值,这使某层所提供的服务实现
易于改变(很像编程中的面写接口编程
).只要该层对其上面的层提供相同的服务
一个个比特从一个节点移动到下一个节点
OSI有七层,下面4层一样。附加了两层。
在发送机4主机端,一个应用层报文被传送到传输层。在最简单的情况下,传输层收取到报文并附上附加信息
(就是传输层首部信息
,下图中的Ht),该首部信息被接收端的传输层使用。然后传输层继续往下层传送,一层层处理(加上各自层的附加信息)
后面的面对攻击的网络和历史这两节不作记录。