计算机网络知识总结
网络分层知识
- osi分层,这里的osi分层分为七层协议,每层都有它最为重要的功能,分层也是为了解耦和可替换性高的目地。
从底向上分为七层分别为:
- 物理层 (主要保证数据能够在物理硬件层稳定地传输的作用)
- 数据链路层 (主要功能是物理地址寻址,讲数据包装成帧,控制传输速率,错误重传等)
网络层 (主要功能就是寻址,建立连接或断开连接,路由或逻辑寻址),涉及主要的协议有一些:
IP协议,然后IP协议还依靠其他一些协议组合使用才能正常发挥它的作用,例如ARP(address resolve protocal,地址解析协议),RARP(reverse address resolve protocal ,逆向地址解析协议)
ICMP协议(Internet Control Message Protocol,因特网控制报文协议)传输层,简明扼要地说这里主要是处理端到端的数据传输,提供一些可靠的或不可靠的端到端的数据传输,自然还能监测是否数据正确,流量控制,重传等功能,涉及的协议主要有
TCP协议,UDP协议会话层
会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。
表示层
表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。
应用层,这里就是各个应用层协议的地方了,主要用于各类互联网服务,比如http协议,ftp协议等。
还有一些如smtp(用来邮件传送协议),pop3,telnet,dns等,具体细查
- 还有一些说法把网络协议分为四层或者五层的,分为五层的是把会话层,表示层和应用层统一规划为应用层了,四层的就是把数据链路层,物理层也合为网络接口层了
一图胜前言
- 分层图
- 报文细节
- 分层图
几个重要设备以及他们的所属层
物理层记住两个重要的设备名称,中继器(Repeater,也叫放大器)和集线器。
数据链路层 两个重要设备名称:网桥和交换机。
网络层: 路由器
传输层: 网关
IP地址总结
- 这里有一篇文章已经讲的很详细 IP地址
网络ip地址由 网络号+主机号组成
两级的 IP 地址可以记为:IP 地址 ::= { <网络号>, <主机号>}
一些细节地方
由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。
用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号。路由器只根据目的站的IP 地址的网络号进行路由选择。网络ip地址图解:
- 从A类地址开始讲起,A类地址网络号为8位,也就是说,网络号从0-127,但是由于某些原因,全0的网络号不能使用,127的网络号只用于内部回路测试,所以A类网络号有128-2个,而主机号就比较多有2^24个,但是不能主机号全为0,主机号全为1时候表示这个网络内的所有主机,所以真正能用的主机号有2^24-2个
- B类网络和C类网络同样的分析,有多少个网络号,多少个主机号也不难分析出来。
- 同样的B类网络也有一些限制,因为B类网络开头是10,但是以1个字节分拆分开来,就是第一个字节后面10后不能全为0,也就是128.0.0.0这个网络ip也不能用,所以B类网络的网络号有2^14-1个,主机号也同样为2^16-2个
C类网络同理,110后第一个字节后面不能全为0,也就是192.0.0.0这个网络ip不能被当做正常地址使用,所以网络号有2^21-1,主机号有2^8-2个,主机号不能全0或全1
划分子网
划分子网的方法是从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。于是两级IP地址在本单位内部就变为三级IP地址:网络号、子网号和主机好。
IP地址 ::= {<网络号>, <子网号>, <主机号>}
凡是从其他网络发送给本单位某个主机的 IP数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。最后就将 IP 数据报直接交付目的主机。- 子网掩码的内容不细说,细查
- 子网掩码的内容不细说,细查
在划分子网的情况下路由器转发分组的算法:
(1) 从收到的分组的首部提取目的IP 地址 D。
(2) 先用各网络的子网掩码和 D逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行(3)。
(3) 若路由表中有目的地址为 D的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行(4)。
(4) 对路由表中的每一行的子网掩码和 D 逐位相“与”,若其结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行(5)。
(5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行(6)。
(6) 报告转发分组出错
子网掩码的计算
具体可详看子网掩码
- 计算子网掩码,首先确定这是哪类网络,A,B,C类网络,然后确定每个子网里面有多少台主机,每个子网里面需要n台主机,然后计算2^x>=n,这个x就是占用主机号里面的多少位。
- 然后这个子网掩码就是 网络号(全部置1)+(x位1)+(剩余位为0),然后用8位分割的十进制表示即可。这个就是子网掩码。
- 计算出子网掩码后,用网络Ip与子网掩码一与就是子网的网络号,内部路由就是通过这个来进行查找是那个内网的。
- 还有依据子网里面主机的数量进行子网的规划的和子网掩码的计算的,这时候特别需要注意的是
比如一个子网有10台主机,那么对于这个子网需要的IP地址是:
10+1+1+1=13
注意:加的第一个1是指这个网络连接时所需的网关地址,接着的两个1分别是指网络地址和广播地址。
因为13小于16(16等于2的4次方),所以主机位为4位。而256-16=240,所以该子网掩码为255.255.255.240。
如果一个子网有14台主机,不少人常犯的错误是:依然分配具有16个地址空间的子网
而忘记了给网关分配地址。这样就错误了,因为14+1+1+1=17,17大于16
所以我们只能分配具有32个地址(32等于2的5次方)空间的子网。这时子网掩码为:255.255.255.224。
1)网络地址
IP地址由网络号(包括子网号)和主机号组成,网络地址的主机号为全0,网络地址代表着整个网络。
2)广播地址
广播地址通常称为直接广播地址,是为了区分受限广播地址。
广播地址与网络地址的主机号正好相反,广播地址中,主机号为全1。当向某个网络的广播地址发送消息时,该网络内的所有主机都能收到该广播消息。
3)网关地址
就是两个不同子网之间要进行通信时候需要的一个网址,这个网址可以手动设置也可以自动分配。具体解释可见网关含义
ARP协议和RARP协议
- ARP这个协议的主要作用是用于我知道了ip地址,我想查询本地的mac地址。
- 这个过程为 我本地有一个ARP的缓存,比如我需要知道ipB的真实地址,我需要查询这个缓存,如果这个缓存没有存有B的真实地址,我就会往我所在的这个内网发送一个ARP信息,只有内网中符合这个ip的会回应我它的本地mac地址和ip地址,同时也把我这个地址存进它的ARP缓存中。其他机器不匹配不会回应信息。(但是如果有恶意的人也可以伪造我是这个ip的地址从而进行欺骗的消息回应,这就是ARP欺骗了),不在一个内网的通过路由转接直到找到匹配的内网和目地主机的ip和硬件地址进行回应。我收到了目地ip主机回应后,会把这个存进本地ARP缓存中,并不会校验真实性(所以有被欺骗的风险),这个本地ARP缓存有一定的生命周期,过期后重发ARP消息进行查询。
- RARP逆向查询,就是说我知道了某一个的mac地址,我想知道这个的ip地址是什么,这个协议的工作流程:
(1)给主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;
(2)本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;
(3)如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用;
(4)如果不存在,RARP服务器对此不做任何的响应;
(5)源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。
下面就是较为底层的路由算法了
常见的路由选择协议有:RIP协议、OSPF协议。
RIP协议 :底层是贝尔曼福特算法,它选择路由的度量标准(metric)是跳数,最大跳数是15跳,如果大于15跳,它就会丢弃数据包。
OSPF协议 :Open Shortest Path First开放式最短路径优先,底层是迪杰斯特拉算法,是链路状态路由选择协议,它选择路由的度量标准是带宽,延迟。