Computer-Networking
体系机构
法律上的国际标准有7层(OSI/RM),事实上的国际标准有4层(TCP/IP体系结构),教学上综合上述两种结构采用一种五层结构。
一台主机要访问一台服务器,也就是浏览器进程和服务器进程间的基于网络的通信,双方都要经过五层协议的处理。数据经过应用层到物理层,层层封包然后发送出去。接收方通过相反的过程(物理层到应用层)层层解封数据。
要注意的是,中间的路由器只有三层协议。
TCP报文段:含有源端口和目的端口,这些端口号是用来表示应用进程的。还含有序号和确认号,用于重传机制的,以确保可靠传输。
IP数据报:含有源IP地址和目的IP地址,这决定了数据包将被路由到哪个网络上的哪个主机。
以太网帧:帧首部含有源mac地址和目的mac地址,这决定了帧将被传输给哪个网络接口。帧尾部,FCS称为帧检验序列,检查帧在传输过程中是否出现了误码。
比特流:物理层需要在前面添加7字节的前同步码(1010101......)和1字节的帧开始定界符(10101011),前同步码的作用是使接收端的适配器,也就是网卡在接受以太网帧前能够迅速调整自己的时针速率,使其和发送端同步。帧开始定界符前六位和前同步码一样,后面的两个11是告诉接收方适配器,后面来的就是以太网帧了。
术语
-
实体:任何可发送或接受信息的硬件或软件进程。比如网卡,http应用进程等。
-
对等实体:收发双方相同层次中的实体。比如发送方应用层的实体和接收方应用层的实体。
-
协议:控制两个对等实体进行逻辑通信的规则的集合。比如应用层在http,smtp协议下进行通信,运输层在tcp,udp下进行通信,等等。之所以称之为逻辑通信,是因为这个通信本身并不存在,他只是假设出来的一种通信,目的在于单独研究体系结构某一层时不用考虑其他层。
协议三要素
-
语法:定义所交换信息的格式。
拿数据链路层帧来说:语法定义了一个帧有那些字段以及用什么顺序构成
-
语义:定义收发双方要完成的操作。比如http中的get请求。
-
同步:定义收发双方的时序关系。比如tcp连接的建立,采用三次握手。
-
-
服务:在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务。比如应用层享受运输层提供的服务,使用应用层协议进行通信。
要实现本层协议,还需要使用下面一层所提供的服务。下层的协议对上层的实体是透明的。
-
服务访问点:在同一系统中相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型。
比如,数据链路层的服务访问点为帧的“类型”字段。网络层的服务访问点为IP数据报首部中的“协议字段”。运输层的服务访问点为“端口号”
-
服务原语:上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令称为服务原语。
-
协议数据单元PDU:对等层次之间传送的数据包称为该层的协议数据单元PDU。比如:
物理层:比特流(bit stream)
链路层:帧(frame)
网络层:IP数据报或分组(packet)
运输层:TCP报文段(segment)或UDP用户数据报(datagram)
应用层:报文(message)
-
服务数据单元SDU:同一系统内,层与层之间交换的数据包
多个SDU可以合成为一个PDU,一个SDU也可以划分为几个PDU。
MAC地址IP地址ARP协议
ip地址是互联网上各主机使用的地址,标识两部分信息:
- 网络编号:标识互联网上数以百万的网络
- 主机编号:标识同一网络上不同的主机
如果一个单独的网络不接入互联网是否可以只使用mac地址呢?是可以的,只是很少有人这么做,即使不接入互联网,但是只要使用tcp/ip体系结构,就一定会涉及ip地址。
数据包转发过程
-
H1---->R1
- 主机H1判断目的ip地址IP2与源ip地址IP1不在同一个网络,H1决定将数据包发送给H1所在网络的默认路由R1,并找到其IP地址为IP3。默认路由器,也常称为默认网关。
- H1找出IP3对应的mac地址MAC3
- H1网络层封包,填写源ip地址和目的ip地址
- 数据链路层封包,填写源mac地址和目的mac地址
-
R1---->R2
- R1在自己的转发表中查找数据包目的地址IP2的网络号部分,决定下一跳ip地址为IP5,通过自己的mac4接口进行转发
- R1找出IP5对应的mac地址mac5
- R1网络层封包,填写双方ip地址
- R1数据链路层封包,填写双方mac地址
-
R2---->H2
- R2发现目的ip地址与自己在同一网络,可以直接交付
- 以下同上
IP地址与MAC地址的关系
上述H1到H2的通信过程中的第二步都要通过ip地址找到对应的mac地址,这是怎么做到的呢?
要通过地址解析协议,也就是ARP协议。
当c要给a发数据时,他知道a的ip地址,如果不知道对方的mac地址,那么在数据链路层封包的时候就无法填写。c的ARP进程将在自身的ARP高速缓存中查找是否存在a的ip地址对应mac地址的数据条目。如果找不到,ARP进程将构建并发送广播一个ARP请求,请求内容为自身的ip地址和mac地址,以及要查找的ip地址。
abd都会收到该请求,各自的ARP进程解析请求,如果不是发送给自己的就不会理会。
a确认是发给自己的,然后将c的ip地址和mac地址添加到自己的ARP高速缓存中,然后构建一个单播响应给c,告知自己的mac地址。
bcd都会收到该单播响应,但是db发现目的mac地址不是自己就直接丢弃。c收到后添加到ARP高速缓存中。
ARP高速缓存中的数据条目分为动态和静态两种类型。动态类型为自动获取,生命周期默认为两分钟,该时间内如果该条目被使用,则重新计时。超过时间则直接删除。这有点像浏览器cookie的过期时间。静态类型为手动设置。
ARP不能跨网络使用,只能在一个网络内部使用。
集线器和交换机的区别
使用集线器的以太网在逻辑上是共享总线的,主机1要给主机2发送单播帧,会通过共享总线传播到总线上的各个主机,收到帧的主机会根据目的mac地址来判断是否接受该帧。
交换机连接的以太网,从屋里拓扑上看,他与使用集线器的网络并没有什么不同,但是在逻辑上不是共享总线。主机1给主机2发送单播帧时,帧进入交换机后,会将该帧转发给目的主机,而不是所有主机,显然交换机具有明显的优势。
交换机通常有多个接口,每个接口都与一台主机或者另一个以太网的交换机相连。一般都工作在全双工方式,也就是收发帧可以同时进行。但是集线器的,逻辑上共享总线,使用CSMA/CD协议,只能工作在半双工方式。
以太网交换机工作在数据链路层(也包括物理层),收到帧后在帧交换表中查找帧的目的mac地址所对应的端口号,然后进行转发。帧交换表是通过自学习算法逐渐建立起来的。
但如果是发送广播帧,从效果上看,两者是一样的。
如果来拓展网络的话,采用集线器的网络每拓展一次网络其实就相当于扩大一次碰撞域,而交换机则没有这个缺点。
帧交换表的自学习算法
最开始的时候表为空,有帧发来时,找不到对应的mac地址,就给其余所有接口都发,同时会记录发送来的帧的mac地址和接口号进交换表里,这样以后找到对应mac地址就只要往对应的接口转发就可以了。
IPv4
先后经历了分类地址,划分子网,构造超网这三个过程。
分类地址
分类地址abc都有网络号和主机号组成。分类地址有如下缺点:
-
ip地址的空间利用率有时很低
某单位本来申请一个c类网络就可以了,但是他考虑到以后公司的发展就申请了一个b类网络,b类可以分配的地址就多多了,别的公司又不能用,这就造成大量地址的浪费。
-
给每个物理网络分配一个网络号会使路由表变得很大
-
网络号和主机号组成的地址不够灵活
某单位有一个b类网络,该网络上还有大量剩余的地址,该单位后来又新建了另一个网络,为了将新建的网络连接到互联网,必须重新申请另一个网络号,不能使用已有的那个b类网络号。这既耽误时间又浪费地址。
然后就有了划分子网
划分子网
基本思路
某单位有一个大型局域网,并且有一个b类网络号(145.13.0.0)。该网络内所有主机的网络号都为145.13。那么所有145.13开头的ip数据包都会被送到该网络默认路由器。
这个时候如果需求改变,要划分成三个较小的局域网,也就是划分为三个子网,这时候,就需要将原来的两段(网络号+主机号)变成三段(网络号+子网号+主机号)ip地址,由于不能改变ip的位数,所以利用一定的比特数来作为子网号,比如用第三个数作为子网号,最后第四个数作为主机号。整个网络对外仍为一个网络即145.13.0.0。
那么如何计算机如何判断该网络有划分子网以及如何找出网络号(子网号)和主机号?子网掩码
将子网掩码与ip地址相与就得到了子网地址。
那c类网来说,当最后为0时,相当于没有划分子网。如果最后为128,也就是10000000,那么就有2个子网(0,1),对于每个子网,总共有7位可分配,所以总共有2的7次方个号码,然后去掉全0和全1,剩下就是2的7次方-2个可分配的主机数。因为全0为子网地址,全1为广播地址。
为什么255.255.255.254(254= 11111110 )不能作为子网地址呢?因为这样的话可分配的就剩最后一位,要不是0要不是1,0为子网地址,1为广播地址,那就没有可分配的地址了。
由于B类地址很快分配了一半,以及主干路由表急剧增长,所以有了构造超网。
构造超网
正式的名字是无分类域间路由选择( Classless Inter-Domain Routing )简称CIDR。CIDR消除了传统的abc类地址,以及子网划分的概念。还能将连续的ip地址组合成CIDR地址块,因此又称之为路由聚合,或者叫构造超网。
CIDR使用斜线记法,在斜线后面写上网络前缀所占的比特数量。比如128.21.22.3/20表示网络前缀占20比特,主机编号占用32-20=12位。