2.2 TCP/IP基础
TCP/IP使用范围极广,是目前各种网络通信使用的唯一协议体系,适用于连接多种机型,既可用于局域网,又可用于广域网,许多厂商的计算机操作系统和网络操作系统产品都采用或含有TCP/IP。TCP/IP已成为目前事实上的国际和工业标准。
TCP/IP是Internet最基本的协议,简单地说,就是由底层的IP和TCP组成的。TCP/IP的开发工作始于20世纪70年代,是用于互联网的第一套协议。
2.2.1 TCP/IP体系结构
TCP/IP参考模型采用分层思想将整个网络分为4个层次,它们从低到高分别为网络接口层、网际层、传输层和应用层,如图2-1所示。
图2-1 TCP/IP参考模型
1)网络接口层:负责数据帧的发送和接收,同时屏蔽不同的通信介质特性,允许主机连入网络时使用多种现成的与流行的协议。
2)网际层:将数据包封装成IP数据包,处理互连的路由选择、流控与拥塞问题。
3)传输层:主要功能是在互联网中源主机与目的主机的对等实体间建立用于会话的端-端连接,提供重发机制和流量控制;传输控制协议(TCP)是一种可靠的面向连接协议;用户数据报协议(User Data-graph Protocol,UDP),是一种不可靠的无连接协议。
4)应用层:为用户提供调用和访问网络中各种应用程序的接口,并向用户提供标准的应用程序及相应的协议。如Telnet(远程登录)、DNS(Domain Name System,域名系统)、SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)等。
2.2.2 TCP/IP与OSI模型的对比
与OSI参考模型一样,TCP/IP也采用分层体系结构进行开发,每一层负责不同的通信功能。但是,TCP/IP简化了层次设计,将OSI的7层模型合并为4层协议的体系结构,自顶向下分别是应用层、传输层、网际层和网络接口层,没有OSI参考模型的会话层和表示层等。如图2-2所示,TCP/IP参考模型与OSI参考模型有清晰的对应关系,它覆盖了OSI参考模型的所有层次,应用层对应了OSI参考模型的上三层,网络接口层对应了OSI参考模型的数据链路层和物理层。
图2-2 TCP/IP与OSI模型对比
OSI参考模型各个层次的基本功能如下。
1)物理层:在设备之间传输比特流,规定了电平、线速和电缆针脚相关参数。
2)数据链路层:将比特组合成字节,再将字节组合成帧,使用了MAC地址来提供介质访问,检测差错。
3)网络层:提供逻辑地址,供路由器确定路径。
4)传输层:提供可靠或者不可靠的数据传递以进行重传前的差错检测。
5)会话层:负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
6)表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。
7)应用层:OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。
2.2.3 TCP/IP协议簇
通常所说的TCP/IP不止包括TCP和IP这两个协议,在TCP/IP体系中包含了大量的协议和应用,所以它是由很多提供不同应用和不同服务的协议组成的一个大家族。更确切地讲,TCP/IP应称为TCP/IP协议簇。TCP/IP协议簇常见的协议如图2-3所示。
图2-3 常见的TCP/IP协议簇
网络接口层涉及在通信信道上传输的原始比特流,它实现传输数据所需要的机械、电气、功能及过程特性,采用检错、纠错、同步等措施,使之对网际层显现一条透明线路,并且进行流量调控。
网际层检查网络拓扑,以决定传输报文的最佳路由,执行数据转发。关键问题是如何选择数据包从源端到目的端的路由。网际层的主要协议有IP、ICMP(Internet Control Message Protocol,互联网控制报文协议)、IGMP(Internet Group Management Protocol,互联网组管理协议)、ARP(Address Resolution Protocol,地址解析协议)和RARP(Reverse Address Resolution Protocol,反向地址解析协议)。
传输层的基本功能是为两台主机间的应用程序提供端到端的通信。传输层从应用层接收数据,并且在必要的时候把它分成较小的单元,传递给网际层,并确保到达对方的各段信息正确无误。传输层协议有TCP和UDP。
应用层负责处理特定的应用程序。应用层显示接收到的信息,把用户的数据发送到低层,为应用软件提供网络接口。应用层包含大量常用的应用程序,如TELNET、FTP(File Transfer Protocol,文件传输协议)等。
2.2.4 传输控制协议
TCP使用16位端口号来表示和区别网络中的不同应用程序,其中端口号1~1023由IANA(Internet Assigned Numbers Authority,Internet号码分配机构)分配管理。低于255的端口号保留,用于公共应用;255~1023的端口号分配给各个公司,用于特殊应用;对于高于1023的端口号,称为临时端口号,IANA未做规定。
常用的TCP端口号有HTTP(80)、FTP(20/21)、TELNET(23)、SMTP(25)、DNS(53)等,常用的保留UDP端口号有DNS(53)、TFTP(69)、SNMP(161)等。
传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,它通过序列号确认机制以及包重发机制,提供可靠的数据流发送和到应用程序的虚拟连接服务。
TCP的报文格式如图2-4所示,TCP报头总长最小为20B。
图2-4 TCP报文格式
·源端口:指定发送端的端口号,用于表示源端的应用层协议。
·目的端口:指定接收端的端口号,用于表示目的端的应用层协议。
·序列号:指明段在即将传输的段序列中的位置。
·确认号:规定成功收到段的序列号,确认序号包含发送确认的一端所期望收到的下一个序号。
·TCP偏移量:指定段头的长度,段头的长度取决于段头选项字段中设置的选项。
·保留:指定了一个保留字段,以备将来使用。
·标志:SYN、ACK、PSH、RST、URG、FIN。
SYN:表示同步。
ACK:表示确认。
PSH:表示尽快地将数据送往接收进程。
RST:表示复位连接。
URG:表示紧急指针。
FIN:表示发送方完成数据发送。
·窗口:指定关于发送端可以传输的下一段的大小的指令。
·校验和:包含TCP段头和数据部分,用来校验段头和数据部分的可靠性。
·紧急:指明段中包含紧急信息,只有当URG标志置为“1”时紧急指针才有效。
·选项:指定公认的段大小、时间戳、选项字段的末端以及选项字段的边界选项。
TCP被称作一种端对端协议,这是因为它为两台计算机之间的连接起了重要作用。当一台计算机需要与另一台远程计算机连接时,TCP会让它们建立一个连接、发送和接收资料以及终止连接。
TCP利用重发技术和拥塞控制机制,向应用程序提供可靠的通信连接,使它能够自动适应网上的各种变化。即使在Internet暂时出现堵塞的情况下,TCP也能够保证通信的可靠。
2.2.5 互联网络协议
IP采用无连接的数据包服务机制,在对数据的传输处理上,只尽最大努力地传输数据包,无论传输正确与否,都只将分组尽量往目的地传输,既不做验证,也不发确认,也不保证分组的正确顺序。IP定义了在TCP/IP互联网上信息传输所用的基本单元——IP数据包,IP数据包分为首部和数据两部分,最大长度为65536B。IP数据包首部长度不固定,由20B的固定部分和变长的任选字段组成,具体格式如图2-5所示。
图2-5 IP数据包格式
IP数据包中包含的主要部分如下。
·“版本”字段:占4bit,表示与数据包对应的IP的版本号。该字段包含了创建该数据包的IP的版本信息,用来证实发送方、接收方和它们之间的所有路由器都约定使用该数据包格式。由于不同的版本对数据包的格式要求不同,所以接收方IP软件将首先检验版本号以保证传输格式的正确性。当前的IP版本是4,使用IPv4来表示当前协议的版本信息。
·“报头长度”字段:占4bit,表示以32bit为单位的首部长度。IP数据包中有20B的固定长度,IP数据包首部的可选字段长度从1~40B不等,所以IP数据包首部长度最大值为60B。
·“服务类型”字段:占8bit,给出了数据包在传输过程中对服务质量的请求,该请求通常由路由器处理。
·“总长度”字段:占2B,表示头部和正文部分的长度之和,最大为65535B。
众所周知,Internet是一个庞大的国际性网络,网络上的拥挤和空闲时间总是交替不定的,加上传送的距离也远近不同,所以传输资料所用时间也会变化不定。TCP具有自动调整“超时值”的功能,能很好地适应Internet上各种各样的变化,确保传输数值的正确。
因此,IP只保证计算机能发送和接收分组资料,而TCP则可提供一个可靠的、可流控的、全双工的信息流传输服务。
综上所述,虽然IP和TCP这两个协议的功能不尽相同,也可以分开单独使用,但它们是在同一时期作为一个协议来设计的,并且在功能上也是互补的。只有两者的结合,才能保证Internet在复杂的环境下正常运行。凡是要连接到Internet的计算机,都必须同时安装和使用这两个协议,因此在实际中常把这两个协议统称为TCP/IP。