1.概述
计算机体系结构
五层协议
application layer应用层:为特定应用程序通信的协议和规则,如DNS、HTTP,传输报文(message)为数据段
transport layer运输层:为两台主机进程通信提供通用的数据传输服务。应用层协议很多,定义传输协议可以不断支持新的应用层协议。有两大协议:传输控制协议TCP协议:提供面向连接的、可靠的数据传输服务,数据单位为报文段(segment);用户数据报协议:UDP 提供无连接的、尽最大努力交付的数据传输协议。TCP提供完整性服务,UDP提供及时性服务。
网络层:为主机提供数据传输服务。运输层为进程提供服务,把运输层的报文段或者用户数据报分组打包成为IP数据报(分组、数据报),目的是选择合适的路由
数据链路层:针对两台主机间的数据传输服务,为同一链路的主机提供数据传输服务,将ip数据报封装成帧,将ip数据报组装成帧frame,和差错控制信息,出错丢弃,由上层协议负责控制。
物理层:比特流传输协议,不考虑具体的媒介。屏蔽媒介和手段差异。
OSI七层协议
表示层:数据压缩、加密,不关心数据储存情况
会话层:建立和关闭回话//五层没有这些,交给开发者
TCP/IP
只有四层,网络接口层相当于五层的物理层和数据链路层
数据在各层之间的传递过程
在向下的过程中,需要添加下层协议所需要的首部或者尾部,而在向上的过程中不断拆开首部和尾部。
路由器只有下面三层协议,因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此也就不需要传输层和应用层。
2.物理层
单工
半双工
双工
带通带阻
3.数据链路层
1.封装成帧
将上一层转交下来的分组(ip数据报)封装成帧,添加首尾部标记开始和结束。SOH EOT 接受知道完整情况
规定数据部分MTU最大数据单元,尽量保证首尾占比较小
2.透明传输
使传输的分组透明,IP数据报出现帧定界符,使用字符填充,转义
3.差错检测
误码能够检验出,使用循环冗余检验CRC。
CSMA/CD
多点接入
载波监听
碰撞检测
PPP协议
互联网用户需要连接到ISP才能实现接入互联网,PPP协议是和ISP通信时使用的协议
帧格式
F帧定界符 1
A 无意义1
C 无意义1
协议 2
IP数据报 MTU1500
FCS 2,循环冗余检验
F 帧定界符
0x7d转义 7E->7d5e 7d->7d5d
MAC地址
链路层地址 6字节 48位,多少网卡就有多少mac地址
以太网
星形拓扑网,mac帧发送广播,由网卡判断mac地址决定是否接收
以太网帧:
目的地址 6
源地址 6
类型 2。0x0800即ip协议
mtu 46~1500
FCFS 4
最小64,最大1518
检测到错误就重新传,不负责重传。传输中首尾部发生变化
交换机
具有自学习能力,交换表存接口和mac地址
4.网络层
网络层是互联网的核心,灵活简洁,只提供无连接的 尽最大努力的数据报服务,传输单位,ip数据报
使用ip连接整个网络,使其统一。
与 IP 协议配套使用的还有三个协议:
- 地址解析协议 ARP(Address Resolution Protocol)
- 网际控制报文协议 ICMP(Internet Control Message Protocol)
- 网际组管理协议 IGMP(Internet Group Management Protocol)
虚拟网络
虚电路:面向连接,保存一切资源
数据报服务,出错、失序、丢失、重复都不管,由上层协议保证。
ARP协议 地址解析协议
知道ip而不知道硬件地址MAC地址,在主机的arp高速缓存中存放一个mac和ip地址映射表
A向本局域网发送ip数据报时,先查arp缓存有无Bip地址,有就直接发给其mac。
若没有B,有可能B不再本网,或者B刚加入,arp缓存没有。
1)arp向本网发送请求分组,我是192.168.1.1,硬件地址xxx,请问192.168.1.2在吗?
2)所有主机都收到
3)对应主机应答,将a写入arp缓存,并发送应答分组,我是192.168.1.1,mac地址yyy 其余的主机不理睬,单播
ip数据报格式
最低20字节,5个32位字,只有首部
版本:4位
首部长度 4位,最小5(首部固定长度),最大15,是32位子,即首部=x*4字节。可选部分不是4字节倍数填充
区分服务:8位 来获取更好服务,一般不用
总长度:16位
标识符:16位 每一个都不同,♻️循环使用
标志位 :3位 MF 更多分片 DF 禁止分片 第三位没用
片偏移 13位。 8字节为单位,分片必须是64的倍数
生存时间 8位 TTL每次转发-1
协议 8位 数据报携带的数据是哪个协议的
首部检验和 16位,只检查首部, 检验和置为0,首部分为16位字 反码运算数术相加,结果的反码和原先一致
子网划分
ip and 子网掩码 子网号
掩码 255.255.x.x
2^bit(x)-2 个子网(除去全0和全1) 不能全0和全1
单cdir规定可以了!
cdir地址块 128.14.35.7/20 属于128.14.32.0/20地址块
网际控制协议ICMP
ICMP 报文分为差错报告报文和询问报文。
1. Ping
Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。
Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。
2. Traceroute
Traceroute 是 ICMP 的另一个应用,用来跟踪一个分组从源点到终点的路径。
Traceroute 发送的 IP 数据报封装的是无法交付的 UDP 用户数据报,并由目的主机发送终点不可达差错报告报文。
- 源主机向目的主机发送一连串的 IP 数据报。第一个数据报 P1 的生存时间 TTL 设置为 1,当 P1 到达路径上的第一个路由器 R1 时,R1 收下它并把 TTL 减 1,此时 TTL 等于 0,R1 就把 P1 丢弃,并向源主机发送一个 ICMP 时间超过差错报告报文;
- 源主机接着发送第二个数据报 P2,并把 TTL 设置为 2。P2 先到达 R1,R1 收下后把 TTL 减 1 再转发给 R2,R2 收下后也把 TTL 减 1,由于此时 TTL 等于 0,R2 就丢弃 P2,并向源主机发送一个 ICMP 时间超过差错报文。
- 不断执行这样的步骤,直到最后一个数据报刚刚到达目的主机,主机不转发数据报,也不把 TTL 值减 1。但是因为数据报封装的是无法交付的 UDP,因此目的主机要向源主机发送 ICMP 终点不可达差错报告报文。
- 之后源主机知道了到达目的主机所经过的路由器 IP 地址以及到达每个路由器的往返时间。
虚拟专用网 VPN
由于 IP 地址的紧缺,一个机构能申请到的 IP 地址数往往远小于本机构所拥有的主机数。并且一个机构并不需要把所有的主机接入到外部的互联网中,机构内的计算机可以使用仅在本机构有效的 IP 地址(专用地址)。
有三个专用地址块:
10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
VPN 使用公用的互联网作为本机构各专用网之间的通信载体。专用指机构内的主机只与本机构内的其它主机通信;虚拟指好像是,而实际上并不是,它有经过公用的互联网。
网络地址转换 NAT
专用网内部的主机使用本地 IP 地址又想和互联网上的主机通信时,可以使用 NAT 来将本地 IP 转换为全球 IP。
在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机接入互联网。为了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把传输层的端口号也用上了,使得多个专用网内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT。
路由选择协议
路由选择协议都是自适应的,能随着网络通信量和拓扑结构的变化而自适应地进行调整。
互联网可以划分为许多较小的自治系统 AS,一个 AS 可以使用一种和别的 AS 不同的路由选择协议。
可以把路由选择协议划分为两大类:
- 自治系统内部的路由选择:RIP 和 OSPF
- 自治系统间的路由选择:BGP
1. 内部网关协议 RIP
RIP 是一种基于距离向量的路由选择协议。距离是指跳数,直接相连的路由器跳数为 1。跳数最多为 15,超过 15 表示不可达。
RIP 按固定的时间间隔仅和相邻路由器交换自己的路由表,经过若干次交换之后,所有路由器最终会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器地址。
距离向量算法:
- 对地址为 X 的相邻路由器发来的 RIP 报文,先修改报文中的所有项目,把下一跳字段中的地址改为 X,并把所有的距离字段加 1;
- 对修改后的 RIP 报文中的每一个项目,进行以下步骤:
- 若原来的路由表中没有目的网络 N,则把该项目添加到路由表中;
- 否则:若下一跳路由器地址是 X,则把收到的项目替换原来路由表中的项目;否则:若收到的项目中的距离 d 小于路由表中的距离,则进行更新(例如原始路由表项为 Net2, 5, P,新表项为 Net2, 4, X,则更新);否则什么也不做。
- 若 3 分钟还没有收到相邻路由器的更新路由表,则把该相邻路由器标为不可达,即把距离置为 16。
RIP 协议实现简单,开销小。但是 RIP 能使用的最大距离为 15,限制了网络的规模。并且当网络出现故障时,要经过比较长的时间才能将此消息传送到所有路由器。
2. 内部网关协议 OSPF
开放最短路径优先 OSPF,是为了克服 RIP 的缺点而开发出来的。
开放表示 OSPF 不受某一家厂商控制,而是公开发表的;最短路径优先表示使用了 Dijkstra 提出的最短路径算法 SPF。
OSPF 具有以下特点:
- 向本自治系统中的所有路由器发送信息,这种方法是洪泛法。
- 发送的信息就是与相邻路由器的链路状态,链路状态包括与哪些路由器相连以及链路的度量,度量用费用、距离、时延、带宽等来表示。
- 只有当链路状态发生变化时,路由器才会发送信息。
所有路由器都具有全网的拓扑结构图,并且是一致的。相比于 RIP,OSPF 的更新过程收敛的很快。
3. 外部网关协议 BGP
BGP(Border Gateway Protocol,边界网关协议)
AS 之间的路由选择很困难,主要是由于:
- 互联网规模很大;
- 各个 AS 内部使用不同的路由选择协议,无法准确定义路径的度量;
- AS 之间的路由选择必须考虑有关的策略,比如有些 AS 不愿意让其它 AS 经过。
BGP 只能寻找一条比较好的路由,而不是最佳路由。
每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。
参考文献
1.《计算机网络》-计算机网络, 谢希仁
2.cyc大佬的笔记https://cyc2018.github.io/CS-Notes