TCP/IP协议以及TCP状态机

来源:互联网 发布:宁波php招聘 编辑:程序博客网 时间:2024/05/01 04:47

TCP/IP协议以及TCP状态机

 

1 TCP/IP

1.1 概述

TCP/IP协议族(TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP。TCP/IP协议包括TCP(传输控制协议)和IP(网际协议)。由于在网络通讯协议普遍采用分层的结构,当多个层次的协议共同工作时,类似计算机科学中的堆栈,因此又被称为TCP/IP协议栈(TCP/IP Protocol Stack)。

TCP/IP提供了点对点的连结机制,将数据应该如何封装、寻址、传输、路由以及在目的地如何接收,都加以标准化。它将软件通信过程抽象化为四个抽象层,采取协议堆栈的方式,分别实作出不同通信协议。协议套组下的各种协议,依其功能不同,被分别归属到这四个阶层之中,常被视为是简化过后的七层OSI模型。

 

1.2 TCP/IP参考模型

TCP/IP参考模型是一个抽象的分层模型,这个模型中,所有的TCP/IP系列网络协议都被归类到4个抽象的"层"中。每一抽象层建立在低一层提供的服务上,并且为高一层提供服务。

完成一些特定的任务需要众多的协议协同工作,这些协议分布在参考模型的不同层中的,因此有时称它们为一个协议栈

TCP/IP参考模型为TCP/IP协议栈订身制作。其中IP协议只关心如何使得数据能够跨越本地网络边界的问题,而不关心如何利用传输媒体,数据如何传输。整个TCP/IP协议栈则负责解决数据如何通过许许多多个点对点通路(一个点对点通路,也称为一"跳", 1 hop)顺利传输,由此不同的网络成员能够在许多"跳"的基础上建立相互的数据通路。

 

1.3 Internet中的层模型

1.3.1 OSI模型

下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置:

7

应用层

例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP

6

表示层

例如XDR、ASN.1、SMB、AFP、NCP

5

会话层

例如ASAP、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets

4

传输层

例如TCP、UDP、TLS、RTP、SCTP、SPX、ATP、IL

3

网络层

例如IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、X.25

2

数据链路层

例如以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP

1

实体层

例如线路、无线电、光纤

 

1.3.2 TCP/IP协议栈层模型

4

应用层
(OSI
5到7层)

例如HTTP、FTP、DNS
(如BGPRIP这样的路由协议,尽管由于各种各样的原因它们分别运行在TCP和UDP上,仍然可以将它们看作网络层的一部分)

3

传输层
(OSI
4层)

例如TCP、UDP、RTP、SCTP
(如OSPF这样的路由协议,尽管运行在IP上也可以看作是网络层的一部分)

2

网络互连层
(OSI
3层)

对于TCP/IP来说这是因特网协议(IP)
(如ICMPIGMP这样的必须协议尽管运行在IP上,也仍然可以看作是网络互连层的一部分;ARP不运行在IP上)

1

网络接口层
(OSI
1和2层)

例如以太网、Wi-Fi、MPLS等。

 

1.3.2.1 应用层

该层包括所有和应用程序协同工作,利用基础网络交换应用程序专用的数据的协议。应用层是大多数普通与网络相关的程序为了通过网络与其他程序通信所使用的层。这个层的处理过程是应用特有的;数据从网络相关的程序以这种应用内部使用的格式进行传送,然后被编码成标准协议的格式。

一些特定的程序被认为运行在这个层上。它们提供服务直接支持用户应用。这些程序和它们对应的协议包括HTTP(万维网服务)、FTP(文件传输)、SMTP(电子邮件)、SSH(安全远程登陆)、DNS(名称<-> IP地址寻找)以及许多其他协议。

 

1.3.2.2 传输层

传输层的协议,能够解决诸如端到端可靠性(“数据是否已经到达目的地?”)和保证数据按照正确的顺序到达这样的问题。在TCP/IP协议组中,传输协议也包括所给数据应该送给哪个应用程序。

下面介绍两个比较常见的协议:

TCP(IP协议6)是一个“可靠的”、面向连结的传输机制,它提供一种可靠的字节流保证数据完整、无损并且按顺序到达。TCP尽量连续不断地测试网络的负载并且控制发送数据的速度以避免网络过载。另外,TCP试图将数据按照规定的顺序发送。这是它与UDP不同之处,这在实时数据流或者路由高网络层丢失率应用的时候可能成为一个缺陷。

UDP(IP协议号17)是一个无连结的数据报协议。它是一个“尽力传递”(best effort)或者说“不可靠”协议——不是因为它特别不可靠,而是因为它不检查数据包是否已经到达目的地,并且不保证它们按顺序到达。如果一个应用程序需要这些特性,那它必须自行检测和判断,或者使用TCP协议。

 

1.3.2.3 网络互连层

网络层解决在一个单一网络上传输数据包的问题,还有将数据从源网络传输到目的网络。

 

1.3.2.4 网络接口层

网络接口层是数据包从一个设备的网络层传输到另外一个设备的网络层的方法。

 


图1 网络数据流示意图(两个因特网主机通过两个路由器和对应的层连接,各主机上的应用通过一些数据通道相互执行读取操作)

 


图2 TCP/IP层模型的数据封装图(不同的层应用数据的封装递减)

 

1.4 浅谈传输控制协议

传输控制协议(TransmissionControl Protocol, TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。

TCP连接包括三个状态:连接创建、数据传送和连接终止。

 

1.4.1 通路的创建

TCP用三路握手(three-way handshake)过程创建一个连接

一对终端同时初始化一个它们之间的连接是可能的。但通常是由一端打开一个套接字(socket)然后监听来自另一方的连接,这就是通常所指的被动打开(passive open)。服务器端被被动打开以后,用户端就能开始创建主动打开(active open)。

1.        客户端通过向服务器端发送一个SYN来创建一个主动打开,作为三路握手的一部分。

2.        服务器端应当为一个合法的SYN回送一个SYN/ACK。

3.        最后,客户端再发送一个ACK。当服务端受到这个ACK的时候,就完成了三路握手,并进入了连接创建状态。


图3 TCP连接的正常创建(3次握手)

 

 

1.4.2 通路的终结

连接终止使用了四路握手过程(four-wayhandshake),在这个过程中每个终端的连接都能独立地被终止。因此,一个典型的拆接过程需要每个终端都提供一对FIN和ACK。


图4 TCP连接的正常终止(4次握手)

 

 

2 TCP/IP状态机

TCP建立连接、传输数据和断开连接是一个复杂的过程。为了准确地描述这一过程,可以采用有限状态机。有限状态机包含有限个状态,在某一时刻,机器必然处于某一特定状态,当在一个状态下发生特定事件时,机器会进入一个新的状态。下图就是TCP的有限状态机。

 


图5 TCP有限状态转移图

 


图6 TCP状态转换图

 

 

 

扩展阅读:


 

 

参考文献

[1]维基百科. TCP/IP协议族[EB]. http://zh.wikipedia.org/wiki/TCP/IP%E5%8D%8F%E8%AE%AE%E6%97%8F.2014-3-6.

[2] 维基百科. 传输控制协议[EB]. http://zh.wikipedia.org/wiki/%E4%BC%A0%E8%BE%93%E6%8E%A7%E5%88%B6%E5%8D%8F%E8%AE%AE.2014-3-6.

[3] TCP网络关闭的状态变换时序图. http://coolshell.cn/articles/1484.html.2014-3-6.

0 0
原创粉丝点击