|
TCP/IP的核心协议主要有TCP、UDP、IP、ICMP、IGMP和ARP,这些核心协议主要工作在网络层和传输层,网络接口层和应用层的主要协议的总结如下表所示。
|
|
|
|
|
|
IP层接收由网络接口层发送来的数据包,并把该数据包发送到更高层——TCP或UDP层;相反,IP层也把从TCP或UDP层发送来的数据包传送到更低层——网络接口层。IP数据包是不可靠的,因为IP并没有做任何事情确认数据包是否按顺序发送或者被破坏,IP数据包中含有发送它的主机地址(源地址)和接收它的主机地址(目的地址)。
|
|
|
高层的TCP和UDP服务在接收数据包时通常假设包中的源地址是有效的,即IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送过来的。IP确认包含一个选项,称为IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明它可以被用来欺骗系统以进行通常被禁止的连接,因此,许多依靠IP源地址进行确认的服务将产生问题,甚至会被非法入侵。
|
|
|
|
ICMP与IP位于同一层,它被用来传送IP的控制信息,它主要用来提供有关通向目的地址的路径信息。ICMP的Redirect信息通知主机通向其他系统的更准确的路径,而Unreachable信息则指出路径有问题。另外,如果路径不可用了,则ICMP可以使TCP连接终止。PING是最常用的基于ICMP的服务。
|
|
|
|
IGMP(Internet Group Management Protocol, Internet组管理协议)是因特网协议家族中的一个组播协议,该协议运行在主机和组播路由器之间。IGMP共有三个版本,即IGMPv1、IGMPv2和IGMPv3。
|
|
|
|
ARP(Address Resolution Protocol,地址解析协议)是根据IP地址获取物理地址的一个TCP/IP。主机发送信息时会将包含目标IP地址的ARP请求广播到网络中的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。ARP是建立在网络中各个主机互相信任的基础上的,网络中的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性,会直接将其记入本机ARP缓存;因此,攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替ARP。
|
|
|
|
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传送有关单个主机的信息。
|
|
|
|
UDP是面向无连接的通信协议,UDP数据包括目的端口号和源端口号的信息,由于通信不需要连接,所以可以实现广播发送。
|
|
|
UDP通信时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,在实际应用中要求程序员编程验证。
|
|
|
UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询、应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。
|
|
|
欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也称握手)(因为在两个系统之间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。
|
|
|