网络day01-TCP/IP协议层

1、OSI七层协议和TCP/IP 四层协议

物理层:定义了多种与物理介质相关的协议,如电压、光强度、连接器尺寸或导线的金属成份等。
数据链路层:包含了控制物理层的协议,定义如何访问和共享介质、如何标识介质上的设备、如何在介质上发送数据之前完成数据成帧。典型的数据链路层协议有:IEEE802.3/以太网、帧中继、ATM。
Internet层(网络层):定义数据包格式和地址格式,进行路由选择。
主机到主机层(传输层):包含了控制网络层的协议(如数据链路层控制物理层),数据链路层与传输层都定义了流控和差错控制机制,区别在于数据链路层控制两台设备的物理介质上的流量,而传输层控制的是逻辑链路上的流量,这种逻辑链路可能跨越多个物理链路。
应用层:常用于向用户应用提供访问网络的接口,但也有些路由协议使用应用层,例如BGP使用TCP协议,RIP使用UDP协议。

2、 IP包头

3、ARP地址解析协议

当一台设备需要发现另一台设备的数据链路标识符(MAC地址)时,它将建立一个ARP请求数据包。这个ARP请求数据包中包含目标设备的IPv4地址以及请求设备的源IPv4地址和MAC地址,然后ARP请求数据包被封装在数据帧中,其中带有源MAC地址和目标广播地址。
当同一广播域设备收到此数据包时,其他所有设备会丢弃此数据包,只有目标设备会向源地址发送ARP响应数据包,并提供它的MAC地址。

主机A:IP地址172.16.0.1(mac地址aaaa.aaaa.aaaa),查询主机B:IP地址172.16.0.2(MAC地址bbbb.bbbb.bbbb)过程
ARP请求包,由A发出:
发送者源MAC地址    发送者源IP地址   目标MAC地址    目标IP地址
aaaa.aaaa.aaaa       172.16.0.1    0000.0000.0000    172.16.0.2

ARP响应包,由B发出:
发送者源MAC地址  发送者源IP地址   目标MAC地址   目标IP地址
bbbb.bbbb.bbbb   172.16.0.2    aaaa.aaaa.aaaa  172.16.0.1

命令

Router#show arp    //查询ARP表 Cisco路由器保存ARP表项的时间为4个小时(14400S),这个缺省值可以修改
Router(config)#int f0/0
Router(config-if)#arp timeout 1800  //ARP超时时间改为1800S

Router(config)#arp 172.16.1.1 0000.00a4.b74c snap    //静态绑定ARP,并采用SNAP封装类型
Router(config)#clear arp         //删除ARP表中的动态表项

ARP协议还有几种变形:
代理ARP
无故ARP
反向ARP

4、代理ARP

代理ARP也被叫做混杂ARP,代理ARP被路由器用来向主机表明自身可用的一种手段。
例如,主机A192.168.1.1向主机B192.168.2.1请求数据包,但是它没有配置网关信息,因此也不知道如何去往路由器,这时它会向主机B发送一个ARP请求数据包。
本地路由器收到ARP请求数据包,并且本地路由器知道如何去往主机B,于是路由器将回复以上请求,把自己的MAC地址作为ARP回复数据包中的MAC地址,事实上本地路由器欺骗了主机A,让主机A认为路由器的接口就是主机B的接口,最终所有发向主机B的数据包都被发送到路由器。

在IOS系统中,缺省情况下代理ARP功能是打开的,可以在每个接口下关闭此功能。

no ip proxy-arp

5、无故ARP

主机使用自己的IPv4地址作为目标地址发送ARP请求,这种ARP请求叫做无故ARP,主要有三个用途:
1、检查重复地址。一台设备可以向自己的IPv4地址发送ARP请求,如果收到ARP响应则证明存在重复地址。
2、通告一个新的MAC地址。当一台设备收到一个ARP请求,如果ARP缓存中已有发送者的IP地址,那么与此IP地址对应的MAC地址将会被发送者新的MAC地址所更新。
3、运行HSRP协议的路由器如果从其他路由器变成主路由器,它会发送一个无故ARP来更新该子网主机上的ARP缓存。

在IOS系统中缺省情况下是关闭的,可以通过命令ip gratuitous-arps来激活它。

6、反向ARP

反向ARP可以实现IP地址到已知硬件地址的映射。如无盘工作站在启动时可能不知道自己启动时的IPv4地址,通过RARP程序可以允许它们改善ARP请求,其中硬件地址为设备的硬件编入地址。RARP服务器将会向这些设备回复相应的IPv4地址。
RARP在很大程度上已经被DHCP和自举协议BOOTP的扩展协议所替代。而且这两种协议还可以提供IPv4地址以外的更多信息,而且还可以跨越本地数据链路。

 7、ICMP

网络控制消息协定(英文:Internet Control Message Protocol,ICMP)是网路协议族的核心协议之一。它用于TCP/IP网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些信息,令管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。

ICMP依靠IP来完成它的任务,它是IP的主要部分。它与传输协议,如TCP和UDP显著不同:它一般不用于在两点间传输数据。它通常不由网络程序直接使用,除了ping和traceroute这两个特别的例子。 IPv4中的ICMP被称作ICMPv4,IPv6中的ICMP则被称作ICMPv6。

ICMP是在RFC 792中定义的互联网协议族之一。通常用于返回错误信息或是分析路由。ICMP错误消息总是包括了源数据并返回给发送者。 ICMP错误消息的例子之一是TTL值过期。每个路由器在转发数据包的时候都会把ip包头中的TTL值减一。如果TTL值为0,“TTL在传输中过期”的消息将会回报给源地址。 每个ICMP消息都是直接封装在一个IP数据包中的,因此,和UDP一样,ICMP是不可靠的。

虽然ICMP是包含在IP数据包中的,但是对ICMP消息通常会特殊处理,会和一般IP数据包的处理不同,而不是作为IP的一个子协议来处理。在很多时候,需要去查看ICMP消息的内容,然后发送适当的错误消息到那个原来产生IP数据包的程序,即那个导致ICMP讯息被传送的IP数据包。

很多常用的工具是基于ICMP消息的。traceroute是通过发送包含有特殊的TTL的包,然后接收ICMP超时消息和目标不可达消息来实现的。ping则是用ICMP的"Echo request"(类别代码:8)和"Echo reply"(类别代码:0)消息来实现的。

8、TCP

TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。
TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。
如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。
TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。
面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。

9、UDP

UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。
UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。
UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。
欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。


原文地址:https://www.cnblogs.com/dxnui119/p/10834807.html