首页 理论教育 深入了解TCP/IP协议体系

深入了解TCP/IP协议体系

时间:2023-07-01 理论教育 版权反馈
【摘要】:TCP/IP协议三网融合的技术基础之一。TCP/IP最初是为提供非实时数据业务而设计的。TCP/IP叫做传输控制/网际协议。TCP/IP是网络中使用的基本的通信协议。虽然从名字上看TCP/IP包括两个协议,传输控制协议和网际协议,但TCP/IP实际上是一组协议,通常称它为TCP/IP协议簇。不管是OSI模型和协议,还是TCP/IP模型和协议,都不是十全十美的。面向连接的协议是TCP,无连接的是UDP。

深入了解TCP/IP协议体系

TCP/IP协议三网融合的技术基础之一。IP技术的发展,提供了三网都能接受的统一的通信协议——TCP/IP,为三网在业务层面的融合奠定了基础,也为没有统一严格设计的传输网之间实现互通提供了有利条件。TCP/IP的普遍采用使得各种以IP为基础的业务都能在不同的网上实现互通。

1.IP技术

IP技术是一种非面向连接的分组交换网络技术,基于IP的组网对通信资源的利用率高于传统的基于电路交换的组网,通信成本也低得多,其最成功的应用是Internet。

从目前的情况来看,由于Internet是交互式网络体系、开放式网络结构,利用“网络就是交换机”的概念,采用分组交换技术和路由技术,能够实现各种网络的无缝连接,并有效地降低业务成本,因此IP技术是实现语音、图像、数据等业务综合的最佳方案。

TCP/IP最初是为提供非实时数据业务而设计的。IP负责主机之间的数据传输,不进行检错和纠错,因此,经常发生数据丢失或失序现象。为保证数据的可靠传输,人们制定出TCP用于IP数据的传输,以提高接收端的检错、纠错能力。当TCP检测到数据包丢失或误码时,要求发送端重新发送,但这样不可避免地导致传输时延和占用网络带宽。因此传统的IP网传输实时音、视频能力较差。为了使IP网络不仅能传输非实时的数据信息,而且还能传输实时的多媒体数据信息,国际标准化组织,如ITU、IETF等,已制定并发布了一些用于IP实时通信的标准。这些标准能够确保IP网上业务的QoS要求,如实时传输协议/实时传输控制协议(RTP/RTCP)、资源预留协议(RSVP)、IP多播技术以及H.323标准等。

2.Internet网络参考模型

Internet(TCP/IP)参考模型如图4-28所示。

TCP/IP叫做传输控制/网际协议。TCP/IP是网络中使用的基本的通信协议。虽然从名字上看TCP/IP包括两个协议,传输控制协议(TCP)和网际协议(IP),但TCP/IP实际上是一组协议,通常称它为TCP/IP协议簇。它是20世纪70年代中期美国国防部为其ARPA-NET广域网开发的网络体系结构和协议标准,以它为基础组建的Internet是目前国际上规模最大的计算机网,正因为Internet的广泛使用,TCP/IP成了事实上的网络通信标准。

978-7-111-33721-8-Chapter04-32.jpg

图4-28 Internet(TCP/IP)参考模型

之所以说TCP/IP是一个协议簇,是因为TCP/IP协议包括TCP、IP、UDP、ICMP、RIP、TELNE、TFTP、SMTP、ARP、TFTP等许多协议,这些协议一起称为TCP/IP协议簇,对它们的解释如下:

TCP(Transfer Control Protocol)传输控制协议

IP(Internetworking Protocol)网际协议

UDP(User Datagram Protocol)用户数据报协议

ICMP(Internet Control Message Protocol)Internet控制报文协议

SMTP(Simple Mail Transfer Protocol)简单邮件传输协议

SNMP(Simple Network Manage Protocol)简单网络管理协议

FTP(File Transfer Protocol)文件传输协议

ARP(Address Resolution Protocol)地址解析协议

TCP/IP协议簇所体现的Internet通信模型与OSI参考模型有相似之处,但又有些不同。Internet通常将OSI参考模型中的高3层合并成一个应用层

Internet的网际协议(IP)和有可靠性保证的传输控制协议(TCP)一起构成了Internet协议簇的名称——TCP/IP。TCP/IP参考模型和OSI参考模型的比较如图4-29所示。

不管是OSI模型和协议,还是TCP/IP模型和协议,都不是十全十美的。简单来说,OSI模型和协议太复杂了,对于讨论计算机网络特别有用,但是,OSI协议并未流行,而TCP/IP模型和协议正好相反,首先出现的是协议,模型实际上是对已有协议的描述,但该模型不适合于其他协议栈。另一个较重要的差别,是面向连接和无连接的通信。OSI模型在网络层支持无连接和面向连接的通信,但在传输层仅有面向连接的通信。然而TCP/IP模型在网络层仅有一种通信模式(无连接),但在传输层支持两种模式。

978-7-111-33721-8-Chapter04-33.jpg

图4-29 OSI和TCP/IP参考模型比较

3.网际协议(IP)

IP是TCP/IP协议簇中最为核心的协议之一,属于TCP/IP参考模型的网络层,它所涉及的主要是将源端发出的分组经各种途径传输到目的端,从源端到目的端可能得经过许多中间节点。这与数据链路层形成鲜明的对比,数据链路层仅将数据帧从导线的一端发送到另一端。

IP提供不可靠、无连接的数据分组传输服务。不可靠是指它不能保证IP数据分组能成功地到达目的地。IP仅提供尽力而为的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据分组,然后发送ICMP消息报又给信源端。任何要求的可靠性必须由上层(如TCP)来提供。无连接是指IP并不维护任何关于后续数据分组的状态信息。每个数据分组的处理是相互独立的。这也说明,IP数据分组可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据分组(先是A,然后是B),每个数据分组都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。

IP是比较简单,易于在各种广域网、局域网实现,使得整个网络具有灵活的拓扑结构,便于网络互联和扩展。由于网络不保证IP分组传输的正确性和完整性,用户之间就要有相应的差错监测和重发措施,这就是传输控制协议(TCP)的作用。

4.传输控制协议(TCP)

TCP是Internet中可靠的传输层协议。Internet在传输层上有两种主要的协议:一种是面向连接的协议,一种是无连接的协议。面向连接的协议是TCP,无连接的是UDP。UDP基本上是在IP的基础上增加一个短的报头而得到。TCP是专门设计用于在不可靠的Internet上提供可靠的、端到端的字节流通信的协议。

(1)数据流传输对TCP的需求。在通信协议的高层,应用程序常需要从一台计算机向另一台传输大量数据。如果使用不可靠、无连接传输系统来进行大量数据的传输,需要程序员在每个应用程序中编制纠错和恢复的程序,这会增加他们的程序设计负担。因为进行设计、理解及修改能正确提供可靠性的软件是一个困难的事,很少的应用程序员拥有必备的专业背景。因此,就需要一个能提供可靠数据流传输的,并且,所有应用程序都可使用的数据流协议软件,这样的协议有助于把应用程序与网络的细节隔离开,并使得为数据流传输服务定义一个统一的接口成为可能。

在网络层,由于Internet不同于一个单独的网络,不同部分可能具有不同的拓扑结构、带宽、时延、分组大小以及其他特征,这就需要一个被设计成能满足Internet的动态要求,健壮性好足以能面对多种出错的传输层协议——TCP。TCP是在RFC793中正式定义的,随着时间的推移,检测出了各种各样的错误和不一致,并且一些领域对TCP的要求也有所变化,TCP也在不断地发展和改进。

(2)TCP分组格式。TCP分组被封装在一个IP分组中,如图4-30所示。(www.xing528.com)

TCP数据分组的格式如图4-31所示。

TCP数据分组中各字段含义如下所述。

1)源端口号、目的端口号:每个TCP数据分组都包含源端和目的端的端口号,这两个字段的长度都为2B,分别表示发送和接收此TCP数据分组的进程占用的TCP端口号,用于寻找发送端和接收端应用进程。这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接。

978-7-111-33721-8-Chapter04-34.jpg

图4-30 TCP数据分组在IP数据分组中的封装

978-7-111-33721-8-Chapter04-35.jpg

图4-31 TCP数据分组格式

2)发送序号:此字段长度为4B,为无符号数,序号到达232-1后又从0开始,用于表示此TCP数据分组中所携带的数据在本次连接中发送方所发送的所有数据中的顺序编号。

3)确认序号:此字段长度为4B,用于表示要求对方下次发送的数据在本次连接中的编号,同时也表示对此编号之前的数据的确认。确认序号包含发送确认的一端所期望收到的下一个序号。只有ACK标志为1时确认序号字段才有效,一旦一个连接建立起来,这个字段总是被设置,ACK标志也总是被设置为1。

4)数据偏移:此字段的长度为4bit,表示以4B为单位的TCP分组头的长度,实际上也是数据字段在整个TCP数据分组中的偏移地址。

5)保留位:此字段长度为6bit,被保留用于将来的扩展,目前它的每个比特的值必须为0。

6)控制位:此字段长度为6bit,从左到右每个比特的名称如图4-31所示。

①URG(紧急指针位):它和紧急指针配合使用,发送紧急数据,为0表示紧急指针无效,为1表示紧急指针有效。

②ACK(确认位):表示确认号是否有效,为0表示无效,为1表示有效。

③PSH(推送位):若推送位为1,则表示需要接收方的操作系统把此TCP包所携带的数据立刻交给相应的应用程序处理,而不是先缓存至一定数量字节后一并交给应用程序处理。

④RST(复位位):由于不可恢复的错误重置连接,为1表示发送方要求此次连接复位。

⑤SYN(同步位):用于连接建立指示。双方进程建立连接时,一方向另一方发送的第一个TCP包的同步位设置为1,表示此TCP包用于初始化序列号字段。

⑥FIN(结束位):用于连接释放指示,为1表示发送者要求结束本次连接。

7)窗口大小:此字段的长度为2B,这个字段的值用于通知对方,在两次确认之间最多连续发送数据的字节数。

8)校验和:用于TCP数据包的差错控制

9)紧急指针:当URG为1时,紧急指针用于指向TCP包中包含的紧急数据。

10)选项和填充字段:选项字段是由0个或多个选项构成的。

(3)TCP的连接建立和数据传输过程。TCP提供一种面向连接的、可靠的字节服务。它在IP的基础上,提供端到端的面向连接的可靠传输。TCP传输实体之间使用段(seg-ment,即数据分组)交换数据,每个数据分组包含一个20B的分组头(选项部分另加)和0个或多个数据字节。数据分组的大小必须先要满足IP数据分组净荷长度最大为65535B的限制,还要满足底层网络传输介质的最大传输单元(MTU)的限制,比如以太网的MTU为1500B。使用TCP通信的两个应用在彼此交换数据之前必须先建立一个TCP连接,在建立一次标准的TCP连接时,会有一个3次握手过程,3次握手过程解决了由于网络会丢失、存储和重发数据分组带来的问题,其过程简单概括如下(如图4-32所示)。

1)请求主机通过一个同步标志置位的数据段发出会话请求,即产生一个SYN为1和ACK为0的TCP数据分组。

2)接收主机的传输实体接收到这个会话请求TCP数据分组后,首先检查是否有服务进程在所请求的端口上监听,若没有,发出RST置位的TCP分组后;若有服务进程在所请求的端口上监听,进程可以决定是否接受该请求。在接受后,发出一个SYN置1和ACK置1的TCP数据分组表示连接确认,并请求与对方的连接。

3)请求主机收到连接确认后再回送一个TCP数据分组,即发出一个SYN置0和ACK置1的TCP数据分组表示给对方的连接确认。

978-7-111-33721-8-Chapter04-36.jpg

图4-32 建立TCP连接的3次握手过程

SYN—同步比特 ACK—确认比特 SEQ—序号

在TCP连接建立完成之后,双方就可以进行TCP通信了。TCP实体从本地进程接受用户的数据流,并将它分为不超过64KB(实际应用中,通常约为1500B)的数据片段,并将每个数据片段作为单独的IP数据分组发送出去。当包含有TCP数据流的IP数据分组到达接受方后又被送到该机器内的TCP实体,然后被重新组合为原来的字节流。TCP实体在传输数据包时,为避免数据的丢失,采用“带确认的重传请求”机制。对于发送方发向接受方的数据,接受方应该利用确认号予以确认。确认号用于表示此编号之前的数据已经正确接收,同时也表示要求对方下次发送的数据的编号,若发送方收到一个确认号的值小于已经自己发出的所有字节中最后一个字节的编号,就会将其理解为对方没有收到确认号所代表的字节之后的字节,之后将等待确认或重新发送这些字节。但是这种传输机制会严重浪费带宽,为此TCP协议采用一种称为“滑动窗口”的流量控制机制来提高网络的吞吐量

TCP滑动窗口用来暂存两台主机间要传输的数据,有点类似内存(cache)。每个运行TCP/IP协议的主机都有两个滑动窗口:一个用于接收数据,另一个用于发送数据。滑动窗口协议允许发送方连续发送多块数据(具有最大块数限制,称为窗口尺寸),接收方对收到的每块数据进行差错分析,如查发现错误,立即反馈发送方,否则接收方可对多块正确的数据进行一次性的确认:发送方根据反馈的结果,既可以重发指定的数据块,也可以重发指定数据块及其之后的有效数据块,或者连续发送后继的数据块。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈