1.4 TCP/IP参考模型
TCP/IP协议(Transmission Control Protocol /Internet Protocol)是美国国防部早期建议的ARPANET网设计开发的通信标准,主要提供与底层硬件无关的网络之间的通信。目的是使不同厂商的通信设备能在同一网络环境下组网,实现网络之间的互联互通。
TCP/IP协议现在得到了全世界的公认,是Internet网主要通信标准。
1.4.1 TCP/IP概述
TCP-IP工作过程模型
TCP_IP参考模型网络传输过程
TCP/IP是一组通信协议的聚合,其中的每个协议都有特定的功能,可完成相应网络通信任务。TCP/IP协议标准中的部分协议如图1-19所示。
TCP/IP协议标准得名于两个最重要协议:传输控制协议(Transmission Control Protocol,TCP)和网际协议(Internet Protocol,IP)。TCP是传输控制协议是TCP/IP中的核心,为网络提供可靠的数据信息流传递服务。IP协议又称互联网协议,是支持网间互联的数据报协议,提供网间连接的标准,规定IP数据报在互联网络范围内的地址格式。
图1-19 TCP/IP协议标准
TCP/IP是一个4层的网络体系结构,包括应用层、传输层、网际层和网络接口层。
由于设计时,并未考虑要与具体传输媒体相关,所以没有对数据链路层和物理层做出规定,最下面的网络接口层没有也具体内容。信息传输过程中与低层数据链路层和物理层无关,这也是TCP/IP的重要特点。TCP/IP协议特点有如下几种。
① 开放的协议标准(与硬件、操作系统(OS)无关)。
② 独立于特定的网络硬件(运行于LAN、WAN,特别是互联网中)。
③ 统一网络编址(网络地址的唯一性)。
④ 标准化高层协议可提供多种服务。
TCP/IP协议研发比OSI协议早,因此,OSI协议是在TCP/IP协议基础上对其各项功能的进一步细化。如图1-20所示,显示了OSI协议和TCP/IP协议之间分层对照关系。
图1-20 TCP/IP参考模型与OSI七层模型对应关系
1.4.2 TCP/IP协议各层功能
1.应用层
DNS
万维网工作过程
TCP/IP协议中的应用层对应OSI模型中的会话层、表示层和应用层,是面向用户的接口层。
应用层向用户提供一组常用的应用程序,方便用户使用网络服务。它包含多个应用协议,如FTP(文件传输协议)、TFTP(Trivial File Transfer Protocol,普通文件传输协议)、HTTP(超文本传输协议)、SMTP(Simple Mail Transfer Protocol简单邮件传输协议)等。
① FTP(File Transfer Protocol)文件传输协议,提供网络信息上传、下载服务,相应的ftp服务数据传输的端口号为20,控制端口号为21。
② Telnet 远程登录服务,使用 23 端口号提供远程用户登录服务,但它通过明码传送网络信息,保密性差,但用户应用上简单方便。
③ DNS(Domain Name Service)是域名解析服务,提供易记字符域名到IP地址之间的转换,使用端口号为53号。
④ SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件发送、中转服务,使用端口25号。
⑤ HTTP(Hypertext Transfer Protocol)是超文本传输协议,实现互联网中WWW服务,使用端口80号。
2.传输层
TCP/IP协议中的传输层对应OSI模型中的传输层。传输层提供端到端的、可靠的数据传输,负责数据报文传输过程中端到端的连接,负责提供流控制、错误校验和排序服务。传输层包括两个协议:TCP(Transport Control Protocol,传输控制协议)和 UDP(User Datagram Protocol,用户数据报文协议)。其中:
① TCP是一个可靠的、面向连接的协议,提供面向连接、可靠的数据传送;具有重复数据抑制、拥塞控制及流量控制等功能。TCP协议允许从一台机器发出的字节流,正确无误地递交到互联网上的另一台机器上,保证数据传输质量;
② UDP提供无连接、不可靠、尽力传送(best-effort)的服务。UDP协议主要用于那些“需要快速传输,能容忍某些数据丢失”的应用,不保证数据传输质量,如传输语音和视频。
3.网际层
TCP/IP 协议中的互联网络层对应 OSI 模型中的网络层。互联网络层也称为网际层(Internet层)或网络层(Network Layer)。网际层包括IP(网际协议)、ICMP(Internet Control Message Protocol,网际控制报文协议)、IGMP(Internet Group Management protocol,网际组报文协议)及ARP(Address Resolution Protocol,地址解析协议)几个重要协议。
该层的任务是:允许主机将IP数据包发送到任何网络上,这些IP数据包被路由器一个个独立地传送目标端(目标端有可能位于不同网络)。IP数据包到达的顺序,可能与它们被发送时的顺序不同,最后由高层来负责重新排列这些分组IP数据包。
① IP协议:是网络层的核心协议,通过路由选择,将一个IP数据包封装后,交给接口层。IP数据报是无连接服务。
② ICMP协议:是网络层用来检测网络是否通畅协议。常用的Ping命令就是发送ICMP协议发出的echo包,通过回送的echo relay进行网络连通状况测试。
③ ARP协议:是正向地址解析协议,通过已知的IP寻找对应主机的MAC地址。
④ RARP协议:是反向地址解析协议,在无盘工作站中,通过MAC地址确定IP地址。
在TCP/IP参考模型中,网络层下的网络接口层是一片空白。它并没有明确规定这里应该有哪些内容,它只是指出,底层主机必须通过某个物理层协议连接到网络上,以便将 IP分组发送到网络上。参考模型没有定义协议,而且不同主机、不同网络使用协议也不尽相同。
1.4.3 重点协议介绍
TCP和IP这两个协议是TCP/IP协议簇中的两个重要协议,下面分别对两个关键的协议进行详细的介绍。
1.IP协议
Internet层的IP(网际协议)协议是一种不可靠、无连接的数据报协议。IP协议不提供任何校验数据,不保证数据可靠传输。
IP协议是一种不可靠协议,其只提供尽力而为的服务。就像邮局尽最大努力传递邮件,如果一封非挂号信丢失,只能由发信人或预期收信人来发现,并采取补救措施。邮局本身不对每一封信跟踪,也不通知发信人信件丢失情况。因此,IP协议只尽力而为将IP数据报传输到目的端,但不保证将IP数据传输给目的端。
IP协议也是一种无连接协议,使用数据报分组交换方式。每一个IP分组独立传输,每一个分组可以经过不同的路由传送到终点。这些数据报有可能不按顺序到达,甚至有一些数据报也可能丢失,而有些数据在传输过程中可能会受到损伤。这时,IP只能依靠更高层的TCP协议来解决这些问题。
在IP层分组叫数据包(Packet),图1-21给出了IP数据包的格式。它由两部分组成,分别为首部和数据,其中,首部有20字节~60字节,包含有关路由选择和交互信息;载荷数据长度可变,整个IP数据包最大长度可达65535字节(Bytes)。
图1-21 IP包格式
关于IP协议详细讲解,见后续章节内容。
2.TCP协议
TCP建立和释放过程
滑动窗口
TCP/IP 协议栈为传输层规范了两个协议标准,分别为面向无连接的 UDP 协议和面向连接的TCP协议。
在网络层通信中IP协议只将报文尽力传送给目的计算机,负责主机到主机通信。但这是一种不完整的传输,因为这个报文还必须正确送到主机的进程上,实现端对端的通信,这就是UDP或TCP协议所在的传输层所要做的事情。
如图1-22所示,给出了IP协议和TCP协议的作用范围。
图1-22 TCP和UDP协议的作用范围
(1)端口
一台主机在同一时间可以支持多个不同服务,正像许多计算机在同一时间,运行多个客户程序一样。IP 地址只能标识目标主机,要定义进程,需要使用专用标识符:端口号(Port),用以区别一台主机上正在运行的多项服务进程。如果把IP地址比作一间房子门牌号,那端口就是出入这间房子房间的门,而真正的房子可以有多个房间,多扇门。
一台拥有IP地址的主机可以为互联网提供许多服务,比如Web服务、FTP服务、SMTP服务等,那么,主机是怎样区分这些不同的网络服务呢?显然不能只靠IP地址,实际上是通过“IP地址+端口号”来区分不同的服务,这里的端口号就是区别不同网络通信服务号,图1-23显示了这种通信关系。
图1-23 “IP地址+端口号”区分不同的服务
在 TCP/IP 协议栈中,端口号的范围是 0~65535 之间的整数。IANA 组织(Internet Assigned Numbers Authority,互联网地址指派机构)将全部的端口号分为3个范围:熟知端口、注册端口和动态端口(或私有)。
① 熟知端口:0~1023,由IANA指派标准化端口号,表1-1显示了部分常用端口号。
② 注册端口:1024~49151,IANA不指派也不控制,只能在IANA注册以防止重复。
③ 动态端口:49152~65535,IANA 既不用指派也不用注册,可以由任何进程来随机使用,是临时端口。
表1-1 TCP协议标准化端口
(2)传输控制协议TCP
TCP是一个面向连接、端对端的全双工通信协议,通信双方需要建立由协议实现的虚连接,为网络上传输的数据报提供可靠的数据传送服务。
传输控制协议TCP的主要功能是:完成对数据报的确认、流量控制和网络拥塞的处理;自动检测数据报,并提供错误重发功能;将多条路由传送的数据报按原序排列,并对重复数据择取;控制超时重发,自动调整超时值;提供自动恢复丢失数据功能。
与 UDP 不一样,TCP 是一个面向连接的协议,为了增强网络传输过程中的可靠性,TCP协议通过3次握手技术来保证两个通信进程之间可靠连接。如图1-24所示,TCP为每个传输IP数据包分组分配一个序号,并期望从接收端TCP得到一个肯定确认(ACK)。
① 首先,发送主机通过一个SYN(Synchronous)标志位的数据段,发出一个会话请求。
② 接收主机通过接收到的数据段,有针对性回复,其中SYN标志位为即将发送数据段起始字节顺序号,ACK标志位为期望收到下一个数据段字节顺序号。
③ 请求主机再回送一个数据段,ACK标志位,并带有对接收主机确认的序列号。
图1-24 TCP的三次握手
如果在一个规定的时间间隔内,没有收到接收端主机的确认的ACK,则数据会被重传。
图1-25显示了一个完整TCP报文格式,同样由首部和数据等两个部分组成。其中:
首部可变长度为 20~60 字节,而数据部分最大长度为 65495 字节(65535−20−20,减20字节IP头,20字节TCP头)。
图1-25 TCP报文格式
如图1-25所示的两类端口号的含义如下。
① 源端口号(Source Port):16位源端口号,指明发送数据的进程。源端口和源IP地址的作用是标识报文的返回地址。
② 目的端口号(Destination Port):16位的目的端口号,指明目的主机接收数据进程。源端口号和目的端口号组合起来表示一条唯一的网络连接。
3.用户数据报协议UDP
UDP协议(User Datagram Protocol),即用户数据报协议,使用在网络传输过程中的可靠性要求不高而对传输数据质量要求高的网络应用中,如网络视频会议系统。
UDP协议采用面向无连接的通信,提供不可靠的传输服务。在传输过程中,UDP不考虑流量控制、差错控制,在收到一个错误的数据报文之后,也不重传,所有这些工作都留给用户端的进程处理。
UDP数据报文同样由首部和数据两部分组成。UDP报头包括4个域,其中,每个域各占用2个字节,总长度为固定的8字节,具体如图1-26所示。
图1-26 UDP报文格式
图1-26中显示了UDP报文的源端口号和目的端口号。UDP协议同TCP协议一样,使用端口号为不同的应用进程提供服务。其中数据发送方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收方则通过目标端口接收数据。