返回 登录
0

浅谈TCP/IP协议栈(七)网络层常见协议汇总

附上博客链接,欢迎大家前来交流和学习。

不知不觉这个系列已经写了6章,虽然都是写比较基础和简单的知识,但是整理起来还是用了不少时间,相信能够坚持看完前面几节的同学,已经对TCP/IP协议有了大致的了解,至少几个关键的知识点,比如说协议栈、IP地址、路由和转发的关系等等,这些知识业也许不足以让你全面了解网络知识,但作为入门知识却也是绰绰有余了。
大家还节的第一节讲的网络分层协议栈么?我们来回顾一下:
物理层——链路层——网络层——传输层——应用层
我们之前着重介绍的还是网络层这方面的知识,包括IP协议、IP地址、路由和转发等等,都是网络层的基础知识,这一届我们来介绍一些常用的网络层协议。网络层的协议有很多,在这里我们就挑一些常见,常用的协议来介绍:

PING:
大家对于ping肯定都不陌生,尤其是喜欢玩游戏的同学,ping值过高的话,就会严重影响游戏体验,ping从严格意义上讲不算一种协议,但是在这里也一并将其介绍一下,因为它太有名了。
我们先来介绍一下ping的流程:windows用户可以用cmd进入用户终端,输入ping+ip地址,便可以进行一次ping,如下图所示:
如果你输入的IP地址有效且可达,则会收到相应对端发来的回复报文,如下图所示:
图片描述
这里的对端是指IP地址所在的服务器,而所谓的ping指,就可以简单理解为从某个数据包发送到服务器开始,到收到服务器应答包为止的时间就是ping。一般以毫秒计算,如果你输入的IP地址有误,或者IP地址不可达,则会受到以下信息:
图片描述

ICMP:
大家可能对于ICMP协议有些陌生,事实上上面介绍得ping,其回复报文实际上就是ICMP差错报文,ICMP报文一般分为两种类型,一种是ICMP查询报文,它的作用很明显,就是用来在主机或者路由器之间传递控制信息的协议,所谓的传递信息就是指目的地址是否可达,路由是否可达等等状态信息,ICMP协议并不传输数据,但是它却能够很好地传递状态信息,而刚才介绍的ping程序,结合ICMP协议之后的完整过程就是:
1、首先查本地arp cache信息,看是否有对方的mac地址和IP地址映射条目记录;
2、如果没有,则发起一个arp请求广播报文,等待对方告知具体的mac地址;
3、收到arp响应包之后,获得某个IP对应的具体mac地址,有了物理地址之后才可以开始通信,同事对ip-mac地址做一个本地cache;
4、发出icmp echo request包,收到icmp echo reply包
前面3条还是一个查arp表获取对端mac的三层IP转发基本流程,而第4条规则就是用ICMP报文来完成回显信息的输出。
既然提到了ping和icmp,那么就顺便介绍一种常见的IP攻击方式“Ping of Death”(死亡之ping)
Ping of Death可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起死亡之ping攻击,如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。

ARP
在大多数的TCP/IP视线中,ARP是一个基础协议,但是它的运行对于应用程序或系统管理员来说一般都是透明的。ARP告诉缓存在它的运行过程中非常关键。我们可以用arp命令对高速缓存进行检查和操作。高速缓存中的每一项内容都有一个定时器,根据它来删除不完整和完整的表项。arp命令可以显示和修改ARP高速缓存中的内容,我们介绍了ARP的一般操作,同时也介绍了一些特殊的功能,委托ARP和免费ARP.。
简单总结起来就是,在IP转发时,仅仅知道对端IP地址是无法完成转发的,我们需要知道对短的MAC地址才能够进行转发,这个时候加入本地的ARP缓存表中查不到对端的MAC,那么则会发送ARP学习报文,去下游学习MAC,只有学到了MAC才能进一步的转发,而ARP在其中就起到了存储IP地址与MAC地址映射关系的作用,因此ARP协议是网络转发中非常重要的一个协议!

最后我们来回顾一下,这一节介绍了ping程序,ICMP协议和ARP协议,事实上网络层的协议还有很多很多,但是以上接种协议都是比较常用的协议,大家有兴趣可以深入了解一下。网络层的介绍也暂时告一段落,接下来,我们开始学习传输层的知识,敬请期待!

评论