首页 > 编程笔记 > TCP/IP笔记 阅读:55

TCP/IP参考模型详解(新手必看)

OSI 参考模型的提出在计算机网络发展史上具有里程碑的意义,以至于提到计算机网络就不能不提 OSI 参考模型。但是 OSI 参考模型具有定义过于繁杂、实现困难等缺点,面对市场,OSI 参考模型失败了。

与此同时,TCP/IP 参考模型被提出和广泛使用,特别是 Internet 用户迅速的增长,使 TCP/IP 参考模型的网络体系结构日益显示出其重要性。

TCP/IP 是目前流行的商业化网络协议,尽管它不是某一标准化组织提出的正式标准,但它已经被公认为目前的工业标准或“事实标准”。Internet 之所以能迅速发展,是因为 TCP/IP 参考模型能够适应和满足世界范围内数据通信的需求。

TCP/IP参考模型的特点

TCP/IP 参考模型有以下特点:

TCP/IP参考模型的缺点

TCP/IP 参考模型有以下缺点:

TCP/IP参考模型的层次

与 OSI 参考模型不同,TCP/IP 参考模型将网络划分为 4 层,分别是应用层、传输层、网际层(Internet Layer)和网络接口层(Network Interface Layer)。

实际上,TCP/IP 参考模型与 OSI 参考模型有一定的对应关系,如下图所示:


图 1 OSI参考模型与TCP/IP参考模型的对应关系

TCP/IP参考模型各层的功能

TCP/IP 参考模型各层的功能如下:

1) 网络接口层

TCP/IP 中没有详细定义网络接口层的功能,只是指出通信主机必须采用某种协议连接到网络上,并且能够传输网络数据分组。

网络接口层没有定义任何实际协议,只定义了网络接口,各种已有的数据链路层协议和物理层协议都可以用来支持 TCP/IP。

2) 网际层

网际层又称互联层,是 TCP/IP 参考模型的第 2 层,它实现的功能相当于 OSI 参考模型网络层的无连接网络服务,主要解决主机到主机的通信问题。它所包含的协议设计数据报在整个网络中进行逻辑传输。其注重重新赋予主机一个 IP 地址来完成对主机的寻址,它还负责数据报在多种网络中的路由。

网际层有 4 个主要协议:互联网协议(IP)、地址解析协议(Address Resolution Protocol,ARP)、互联网组管理协议(Internet Group Management Protocol,IGMP)和互联网控制报文协议(Internet Control Message Protocol,ICMP)。IP 是网际层最重要的协议,它提供的是可靠、无连接的数据传输服务。

3) 传输层

传输层位于网际层之上,它主要负责应用进程之间的端到端通信。在 TCP/IP 参考模型中,设计传输层的主要目的是在网际层中的源主机与目的主机的对等实体之间建立用于会话的端到端连接。传输层定义了两个主要的协议:TCP 和 UDP。

TCP 提供的是一种可靠的、通过“三次握手”来连接的数据传输服务;UDP提供的是不保证可靠的、无连接的数据传输服务。

4) 应用层

应用层是最高层。它与 OSI 参考模型中的高 3 层的任务相同,为用户提供所需要的各种网络服务,如文件传输、远程登录、域名服务和简单网络管理等。

OSI参考模型与TCP/IP参考模型比较

TCP/IP 参考模型与 OSI 参考模型在设计上都采用了层次结构的思想,不过层次划分及使用的协议有很大的区别。无论是 OSI 参考模型还是 TCP/IP 参考模型都不是完美的,都存在某些缺陷。

1) OSI参考模型的优缺点

OSI 参考模型的主要问题是定义复杂、实现困难,有些同样的功能在多层重复出现,效率低。人们普遍希望网络标准化,但 OSI 参考模型迟迟没有成熟的网络产品。因此,OSI 参考模型与协议没有像专家们所预想的那样风靡世界。

2) TCP/IP参考模型的优缺点

TCP/IP 参考模型与协议在 Internet 中经受了几十年的考验,得到了 IBM、Microsoft、Novell 及 Oracle 等大型网络公司的支持,成为计算机网络中的标准体系之一。

TCP/IP 网际层协议

在计算机网络的众多协议中,TCP/IP 是应用最广泛的,在 TCP/IP 参考模型包含的 4 个层次中,只有 3 个层次包含实际的协议。

网际层的协议主要包括 IP、ARP、ICMP 和 IGMP。

1) IP

Internet 是由许多网络相互连接之后构成的集合,将整个 Internet 互联在一起的正是 IP。

设计 IP 的目的是提高网络的可扩展性,具体表现为:
根据端到端的设计原则,IP 只为主机提供一种无连接、不可靠、尽力而为的数据包传输服务。IP 是整个 TCP/IP 协议族的核心,也是构成互联网的基础。IP 对上可以向传输层提供各种协议的信息,如 TCP、UDP 等协议的信息;对下可将 IP 信息包放到网络接口层,通过以太网、令牌环网等各种技术来传输。

为了适应异构网络,IP 强调适应性、简洁性和可操作性,并在可靠性方面做了一定的牺牲。IP 不保证分组的交付时限性和可靠性,所传输分组有可能出现丢失、重复、时延或乱序等问题。

2) ARP

IP 数据报常通过以太网发送。以太网设备并不能识别 32 位 IP 地址,它们是以 48 位的以太网地址(MAC 地址或硬件地址)传输以太网数据的。因此,必须把 IP 目标地址转换成以太网目标地址。

地址解析协议(Address Resolution Protocol,ARP)就是用来确定 IP 地址与物理地址之间的映射关系的。反向地址解析协议(Revers Address Resolution Protocol,RARP)负责完成物理地址向 IP 地址的转换。

3) ICMP

ICMP 是 TCP/IP 协议族的一个子协议,用于在 IP 主机、路由器之间传输控制消息。控制消息是指网络是否可通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传输起着重要的作用。

IP 是一种不可靠的协议,无法进行差错控制,但可以借助其他协议来实现这一功能,ICMP 允许主机或路由器报告差错情况,提供有关异常情况的报告。

4) IGMP

IGMP 是 Internet 协议族中的一个组播协议,该协议运行在主机和组播路由器之间。

IGMP 共有 3 个版本,即 IGMPv1、IGMPv2 和 IGMPv3。组播协议包括组成员管理协议和组播路由协议。组成员管理协议用于管理组播组成员的加入和离开,组播路由协议负责在路由器之间交互信息来建立组播树。

IGMP 属于组成员管理协议,是组播路由器用来维护组播组成员信息的协议。IGMP 信息封装在 IP 报文中,其 IP 的协议号为 2。

IGMPv1 定义主机只可以加入组播组,但没有定义离开组播组的信息,路由器可基于组播组的超时机制发现离线的组成员。IGMPv1 主要基于查询和响应机制来实现对组播组成员的管理。当一个网段内有多台组播路由器时,由于它们都能从主机那里收到 IGMP 成员的关系报告报文,因此只需要根据查询器选举机制来确定由哪台路由器作为 IGMP 查询器,并利用 IGMP 查询器发送 IGMP 查询报文。

IGMPv2 在 IGMPv1 的基础上增加了对主机离开成员组的信息的定义,允许迅速向路由协议报告组成员的离开情况,这对高带宽组播组或易变型组播组成员而言是非常重要的。另外,若一个子网内有多个 IGMP 查询器,那么这些 IGMP 查询器同时发送 IGMP 查询报文不仅浪费资源,还会引起网络的堵塞。

为了解决这个问题,IGMPv2 使用了不同的查询器选举机制,能在一个子网内查询多个路由器。

IGMPv3 在兼容和继承 IGMPv1 和 IGMPv2 的基础上,进一步增强了主机的控制能力,以及查询和报告报文的能力。

TCP/IP传输层协议

传输层协议主要包括 TCP 和 UDP。

1) TCP

TCP 是传输层的一种面向连接的通信协议,它提供可靠的、按序传输数据的服务。对于大量数据,通常都要求有可靠的数据传输,TCP 提供的连接是双向的,即全双工的。

TCP 旨在适应支持多网络应用的分层协议层次结构。其连接可在不同但互联的计算机通信网络的主计算机中的成对进程之间提供可靠的通信服务。TCP 假设可以从较低级别的协议获得简单的、可能不可靠的数据报服务。原则上,TCP 应该能够在从硬件连接到分组交换或电路交换网络的各种通信系统之上操作。

TCP 是为了在不可靠的互联网中提供可靠的端到端字节流而专门设计的一个传输协议。互联网与单个网络有很大的不同,因为互联网的不同部分可能有截然不同的拓扑结构、带宽、时延、数据报和其他参数。TCP 的设计目标是能够动态地适应互联网的特性,而且具备面对各种故障的健壮性。

TCP 在传输之前会进行 3 次沟通,一般称为“三次握手”,“三次握手”建立 TCP 连接的过程如下图所示;数据传输完成后,断开的时候要进行 4 次沟通,一般称为“四次挥手”。


图 2 “三次握手”建立TCP连接的过程

其中,关于序号和标志位的介绍如下:
关于 TCP 连接的过程,需要注意如下情况:
在第一次消息发送中,主机 A 随机选取一个序列号作为自己的初始序号发送给主机 B。

在第二次消息发送中,主机 B 使用 ack 对主机 A 的数据报进行确认。

因为已经收到了序列号为 x 的数据报,准备接收序列号为(x+1)的数据报,所以 ack=x+1,同时主机 B 告诉主机 A 自己的初始序列号为 y,即 seq=y。

在第三条消息发送中,主机 A 告诉主机 B 它收到了主机 B 的确认消息并准备建立连接,主机 A 的此条消息的序列号是(x+1),所以 seq=x+1,而 ack=y+1 表示主机 A 正准备接收主机 B 的序列号为(y+1)的数据报。

2) UDP

UDP 的创立是为了向应用程序提供一条访问 IP 的无连接功能的途径。

使用 UDP,源主机有数据就发送,它不用考虑发送的数据报是否到达目的主机、数据报是否出错,收到数据报的主机也不会告诉发送端是否收到数据。因此,它是一种不可靠的数据传输方式。

UDP 不为 IP 提供可靠性、流控或差错恢复功能。一般来说,TCP 对应的是可靠性要求高的应用,而 UDP 对应的是可靠性要求低、传输经济的应用。

TCP 支持的应用协议主要有 Telnet 协议、FTP、简单邮件传输协议(Simple mail Transfer Protocol,SMTP)等;UDP 支持的应用层协议主要有网络文件系统(Network File System,NFS)、简单网络管理协议(SimpleNetwork Management Protocol,SNMP)、域名系统(Domain Name System,DNS)等。

TCP/IP应用层协议

1) HTTP

HTTP 即超文本传送协议,它是 Web 浏览器和 Web 服务器之间的应用层通信协议,它能保证正确传输超文本文档,是一种最基本的客户端/服务器(Client/Server,C/S)访问协议。

HTTP 可以使浏览器更加高效,使网络传输流量减少。通常,它通过浏览器向服务器发送请求,而服务器回应相应的网页。在 WWW 的背后有一系列的协议和标准支持它完成如此宏大的工作,这就是 Web 协议族,其中包括 HTTP。

同其他应用层协议一样,HTTP 是用于实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP 是一种协议规范,这种规范记录在文档中,为真正通过 HTTP 进行通信的程序提供服务。

2) FTP

FTP 即文件传输协议,用来实现主机之间的文件传输,它采用 C/S 模式,使用 TCP 提供可靠的传输服务,是一种面向连接的协议。FTP 的主要功能就是减少或消除在不同操作系统中处理文件的不兼容性。

FTP 允许用户以文件操作(如文件的增、删、改、查、传输等)的方式与另一主机相互通信。然而,用户并不真正登录到自己想要存取的计算机中成为完全用户,而用 FTP 程序访问远程资源,实现用户往返传输文件、目录管理以及访问电子邮件等,即使双方计算机可能配有不同的操作系统和文件存储方式。

3) Telnet协议

Telnet 即远程登录协议,它是一个简单的远程终端协议,采用 C/S 模式。用户用 Telnet 协议可通过 TCP 连接注册(登录)到远方的另一个主机上(使用主机名或 IP 地址)。

Telnet 协议是 TCP/IP 协议族中的一员,是 Internet 远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端上使用 Telnet 程序连接到服务器。终端使用者可以在 Telnet 程序中输入命令,这些命令会在服务器中运行,就像直接在服务器的控制台上输入一样,可以在本地控制服务器。要开始一个 Telnet 会话,必须输入用户名和密码来登录服务器,Telnet 是常用的远程控制 Web 服务器的方法。

4) SMTP

SMTP 是一种提供可靠且有效的电子邮件传输的协议,建立在 FTP 文件传输服务上,主要用于传输系统之间的邮件信息,并提供与来信有关的通知。

SMTP 独立于特定的传输子系统,且只需要可靠、有序的数据流信道支持。SMTP 的重要特性之一是其能跨越网络传输邮件,即“SMTP邮件中继”。使用 SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。

5) DNS协议

DNS 协议用来把便于人们记忆的主机域名和电子邮件地址映射为计算机易于识别的 IP 地址。DNS 采用 C/S 结构,客户用于查找一个名称对应的地址,而服务器通常用于为他人提供查询服务。

DNS 是互联网的一项服务,它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。

DNS 使用 TCP 和 UDP 的端口 53。当前,对于每一级域名长度的限制是 63 个字符,域名总长度不能超过 253 个字符。DNS 采用递归查询请求的方式来响应用户的查询,为互联网的运行提供了关键的基础服务。

常用的 DNS 地址如下:

6) DHCP

动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)可以实现为计算机自动配置IP地址的功能。

DHCP 服务器能够从预先设置的 IP 地址池中自动为主机分配 IP 地址,不仅能够保证 IP 地址不重复分配,还能及时回收 IP 地址以提高 IP 地址的利用率。

DHCP 使用 UDP 的 67、68 号端口进行通信,从 DHCP 客户端到达 DHCP 服务器的报文使用的目的端口号为 67,从 DHCP 服务器到达 DHCP 客户端使用的源端口号为 68。其工作过程如下:
DHCP 工作过程如下图所示

图 3 DHCP工作过程

相关文章