简介
OSI 是理论上的模型,也就是一个统一的国际标准,现在的很多网络设备或者是网络协议都不同程度的精简了自己的所谓的模型,那么他们为了自己的通讯兼容都会参考这个OSI模型
TCP/IP 包括:
TCP/IP 模型就是现在的很多厂商同意参考的一个很工业化的模型!多数厂在不做特殊设备的情况下都会按照这个模型来做,这样做最大的好处就是保证了不同设备可以使用相同的网络。也就是所谓的兼容性!
TCP/IP 协议簇规定了TCP、UDP、ICMP、IGMP、IP、ARP、RARP(废弃)这些协议。
TCP/IP 支持多种不同的链路层(网络接口层)协议,具体使用哪种协议取决于所使用的硬件,包括以太网、IEEE802.11、FDDI等。
注:Ethernet(以太网)协议是有线网络;IEEE 802.11协议是无线网络,IEEE 802.11提供了一个标准,wi-fi是其具体的实现。
协议说明:
ARP 和 RARP:
有些地方把ARP协议划到网络层,是因为ARP协议属于TCP/IP协议簇。在TCP/IP模型中,它所有定义的协议是在网络层上的。按照OSI的标准,数据在传递时每层会加上自己的信息。当网络层的IP包进入链路层时,链路层通过ARP协议添加链路信息,而这不是网络层的功能,所以认为ARP是链路层的。可以这样做,在OSI模型中ARP协议属于链路层;而在TCP/IP模型中,ARP协议属于网络层。
当IP报文传到链路层,如果链路层是以太网协议,要求链路层包头要有主机的MAC地址,所以会先通过ARP协议(ARP请求和应答)获得主机MAC地址,然后把它添加到链路层包头,最后整个数据包再通过网线把数据传输出去。
ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
RARP协议允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用。注意,RARP协议曾经作为逆向的地址解析协议和ARP配合使用,但是现在RARP协议已经被淘汰,在DHCP(动态主机配置协议)协议中已经包含了RARP的功能
ARP应用实例:
主机A要发数据给主机B,主机A在封装Frame(OSI的第二层用的数据格式),要封装对方的MAC,查找ARP表发现不知道B的MAC,只知道IP,它就发送一个ARP包,源IP是自己的,目的IP是B的,源MAC是自己的,目的MAC是广播的。然后这个ARP请求在A所在的内网被广播,当其他机器接到这个包时,用目的IP和自己的IP比较,不是的话就丢弃;是的话,B接收时,发现IP和自己的一样,就应答这个请求,把自己的MAC送给A。如果B是其他子网的主机,那么路由器根据子网掩码会判断出B是其他子网,然后路由器把自己的MAC返回给A,A以后再给B发包时,目的MAC封装的就是路由器的。总之,A和B如果是同一子网,A发送的目的MAC就是B的,否则A发送的目的MAC就是路由器的。
ICMP:
ICMP封装在 IP 数据报内部,如下:
IP 首部 | ICMP报文 |
ICMP报文类型可以分为两类,一类是错误信息,这一类信息可用来诊断网络故障。我们知道IP协议的工作方式是”best effort”。如果IP包没有被传输到目的地,或者IP包发生错误,IP协议本身不会做进一步的努力。但是上游发送IP包的主机和接力的路由器并不知道下游发生了错误和故障,它们可能继续发送IP包。通过ICMP包,下游的的路由器和主机可以将错误信息汇报给上游,从而让上游的路由器和主机进行调整,需要主要的是,ICMP只提供特定类型的错误汇报,它不能帮助IP协议成为”可靠(reliable)”的协议。另一类信息是咨询性质的,比如某台计算机询问路径上的每个路由器都是谁,然后各个路由器同样用ICMP包回答。
备注:ICMP基于IP协议,也就是说,一个ICMP包需要封装在IP包中,然后在互联网传送。ICMP是IP套装的必须部分,也就是说,任何一个支持IP协议的计算机,都要实现ICMP。
常见的ICMP报文类型:
1、回显请求和应答,ping就是用了这类型ICMP包
2、源站被抑制
3、目的不可达
4、超时,traceroute就是用了这类型ICMP包
5、重新定向
6、参数问题
作用:
ICMP的全称是 Internet Control Message Protocol 。ICMP就是一个“错误侦测与回报机制”,其目的就是用来检测网络通信故障和实现链路追踪,最典型的应用就是PING和tracerooute。
PING:
通过发送回送请求报文和回送回答报文来检测源主机到目的主机的链路是否有问题,目的地是否可达,以及通信的延迟情况。
traceroute:
通过发送探测报文来获取链路地址信息。第一个探测报文TTL为1,到达第一个路由器时,TTL减1为0所以丢掉这个探测包,同时向源主机发回ICMP时间超过报文,这时源主机就获得了第一个路由器的IP地址;接着源主机发送第二个探测报文,TTL增1为2,到达第一个路由器TTL减1为1并转发探测包到第二个路由器,这时TTL减1为0,丢掉这个探测包并向源主机发回ICMP时间超过报文,源主机就获得了第二个路由器的IP地址;以此类推,直到探测报文到达traceroute的目的地,这时源主机就获得了到目的地的每一跳路由的IP地址。
总结:
总结
ICMP协议是IP协议的排错助手,它可以帮助人们及时发现IP通信中出现的故障。基于ICMP的ping和traceroute也构成了重要的网络诊断工具。然而需要注意的是,尽管ICMP的设计是出于好的意图,但ICMP却经常被黑客借用进行网络攻击,比如利用伪造的IP包引发大量的ICMP回复,并将这些ICMP包导向受害主机,从而形成DoS攻击。而redirect类型的ICMP包可以引起某个主机更改自己的routing table,所以也被用做攻击工具。许多站点选择忽视某些类型的ICMP包来提供自身的安全性.
IGMP:
IGMP 是Internet Group Management Protocol(互联网组管理协议)的简称。它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
IP:
所有的TCP、UDP、ICMP 和 IGMP 数据都以 IP 数据报格式传输
IP 层既可以配置成路由器的功能,也可以配置成主机的功能。IP 层在内存中有一个路由表。当 IP 层收到数据报,IP 层首先检查目的 IP 地址是否为本机的 IP 地址之一或 广播地址,如果是,数据报就被送到有 IP 首部协议字段所指定的协议模块进行处理;如果不是这些地址,如果 IP 层被设置为路由器的功能,那么对数据报进行转发,否则数据报被丢弃。
DNS:
把域名转换为唯一的 IP 地址,DNS同时占用UDP和TCP端口53
FTP:
FTP 客户端和 FTP 服务器之前可以进行文件传输
Telnet:
提供远程登录功能,使得用户在本地主机上运行Telnet客户端,就可登录到远端的Telnet服务器. 在本地输入的命令可以在服务器上运行,服务器把结果返回到本地,如同直接在服务器控制台上操作. 这样就可以在本地远程操作和控制服务器。