第7章TCP/IP协议原理
课程目标:
初级
●掌握TCP/IP的协议体系
●掌握IP协议报文结构
●掌握IP地址分类及掩码计算
●了解TCP、UDP协议基本原理
中级、高级
●掌握IP分片和重组的理论
●掌握TCP、UDP的报文结构
●掌握TCP、UDP的工作原理
●熟悉使用抓包工具对TCP/IP报文进行抓包分析
7.1 TCP/IP概述
7.1.1 TCP/IP 的产生背景及特点
1. TCP/IP的产生背景
传输控制协议/Internet 协议(TCP/IP) 是业界标准的协议组,为跨越LAN 和WAN 环境的大规模互联网络设计。如下面的时间线所示,TCP/IP 始于1969 年,也就是美国国防部(DoD) 委任高级资源计划机构网络(ARPANET) 的时间。
ARPANET是资源共享实验的结果。其目的是在美国不同地区的各种超级计算机之间提供高速网络通讯链路。
早期协议,如Telnet(用于虚拟终端仿真)和文件传输协议(FTP)是最早开发的,以指定通过ARPANET共享信息所需的基本实用程序。随着ARPANET在规模和作用范围上的日益扩大,出现了其他两个重要协议:
在1974年,传输控制协议(TCP)作为规范草案引入,它描述了如何在网络上建立可靠的、主机对主机的数据传输服务。
在1981年,Internet协议(IP)以草案形式引入,它描述了如何在互联的网络之间实现寻址的标准以及如何进行数据包路由。
1983年1月1日,ARPANET开始对所有的网络通讯和基本通讯都要求标准使用TCP 和IP 协议。从那天开始,ARPANET 逐渐成为众所周知的Internet,它所要求的协议逐渐变成TCP/IP 协议组。TCP/IP 协议组在各种TCP/IP 软件中实现,可用于多种计算机平台,并经常用于建立大的路由专用国际网络。
TCP/IP是指一整套数据通信协议,其名字是由这些协议中的两个协议组成的,即传输控制协议(Transmission Control Protocol —TCP)和网间协议(Internet Protocol —IP)。虽然还有很多其他协议,但是TCP和IP显然是两个最重要的协议。
2. TCP/IP的特点
TCP/IP协议有一些重要的特点,以确保在特定的时刻能满足一种重要的需求,即世界范围的数据通信。其特点包括:
·开放式协议标准。可免费使用,且与具体的计算机硬件或操作系统无关。由于它受到如此广泛的支持,因而即使不通过Internet 通信,利用TCP/IP来统一不同的硬件和软件也是很理想的。
·与物理网络硬件无关。这就允许TCP/IP可以将很多不同类型的网络集成在一起,它可以适用于以太网、令牌环网、拨号线、X.25网络以及任何其它类型的物理传输介质。
·通用的寻址方案。该方案允许任何TCP/IP设备唯一的寻址整个网络中的任何其他设备,该网络甚至可以象全球Internet那样大。
·各种标准化的高级协议。可广泛而持续地提供多种用户服务。
7.1.2 TCP/IP协议体系
TCP/IP参考模型
TCP/IP 协议体系和OSI参考模型一样,也是一种分层结构。它是由基于硬件层次上的四个概念性层次构成,即网络接口层、互联网层、传输层和应用层。图7.1 表示TCP/IP与OSI参考模型的对应关系。图7.2 TCP/IP参考模型的层次结构。
tcpip协议在设计时就考虑了如何解决安全问题图7.1 OSI与TCP/IP参考模型对照图
图7.2 TCP/IP参考模型
在TCP/IP参考模型中,去掉了OSI参考模型中的会话层和表示层(这两层的功能被合并到应用层实现)。同时将OSI参考模型中的数据链路层和物理层合并为网络接口层。下面,分别介绍各层的主要功能。
·网络接口层
网络接口层也称为数据链路层,它是TCP/IP 的最底层,但是TCP/IP 协议并没有严格定义该层,它只是要求能够提供给其上层--网络层一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法将随着网络类型的不同而不同。
·互联网层
互联网层(Internet Layer)俗称IP 层,它处理机器之间的通信。它接受来自传输层的请求,传输某个具有目的地址信息的分组。该层把分组封装到IP 数据报中,填入数据报的首部(也称为报头),使用路由算法来选择是直接把数据报发送到目标机还是把数据报发送给路由器,然后把数据报交给下面的网络接口层中的对应网络接口模块。该层还有处理接收到的数据报,检验其正确性,使用路由算法来决定对数据报是否在本地进行处理还是继续向前传送。
·传输层
在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即:传输控制协议TCP(transmission control protocol)和用户数据报协议UDP(user datagram protocol)。TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字
节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进
行重组后递交给上层。TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据。UDP协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。
·应用层
TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。应用层面向不同的网络应用引入了不同的应用层协议。其中,有基于TCP协议的,如文件传输协议(File Transfer Protocol,FTP)、虚拟终端协议(TELNET)、超文本链接协议(Hyper Text Transfer Protocol,HTTP),简单邮件传输协议(Simple Mail Transport Protocol,smtp);也有基于UDP 协议的,如网络文件系统(Network File System NFS)、简单网络管理协议(Simple Network Management Protocol SNMP)、域名系统(Domain Name Server DNS)以及简单文件传输系统(The Trivial File Transfer Protocol TFTP)。
7.1.3 TCP/IP常用概念介绍
TCP/IP 协议体系及其实现中有很多概念和术语,为了方便读者理解后面的内容,本节集中介绍一些最常用的概念与术语。
1.包
包(packet)是网络上传输的数据片段,也称分组。在计算机网络上,用户数据要按照规定划分为大小适中的若干组,每个组加上包头构成一个包,这个过程称为封装(encapsulation)。网络上使用包为单位传输的目的是为了更好地实现资源共享和检错、纠错。包是一种统称,在不同的协议不同的层次,包有不同的名字,如TCP/IP协议中,数据链路层的包叫帧(Frame),IP 层的包称为IP 数据报,TCP层的包常称为TCP 报文等。应用程序自己也可以设计自己的包类型,如在自己设计的socket 程序中使用包。
2.网络字节顺序
由于不同体系结构的计算机存储数据的格式和顺序都不一样,要建立一个独立于任何特定厂家的机器结构或网络硬件的互联网,就必须定义一个数据的表示标准。例如,将一台计算机上的一个32位的二进制整数发送到另一台计算机,由于不同的机器上存储整数的字节顺序可能不一样,如Intel 结构的计算机存储整数是低地址低字节数,即最低存储器地址存放整数的低位字节(叫做小端机,Little Endian),而Sun Sparc 结构的计算机存储整数是低地址高字节数,即最低存储器地址存放整数的高位字节(叫做大
端机,Big Endian)。因此,直接把数据按照恒定的顺序发送到另一台机器上时可能会改变数字的值。
为了解决字节顺序的问题,TCP/IP 协议定义了一种所有机器在互联网分组的二进制字段中必须使用的网络标准字节顺序(network standard byte order):必须首先发送整数中最高有效字节(同大端机)。因此,网络应用程序都要求遵循一个字节顺序转换规则:“主机字节顺序── > 网络字节顺序── > 主机字节顺序”,即发送方将主机字节顺序的整数转换为网络字节顺序然后发送出去,接收方收到数据后将网络字节顺序的整数转换为自己的主机字节顺序然后处理。
3.服务、接口、协议
服务、接口、协议是TCP/IP体系结构中非常重要的概念,它们贯穿了整个参考模型的始终。
简单地讲,服务是指特定一层提供的功能。例如网络层提供网络间寻址的功能,我们就可以说它向它的上一层(即传输层)提供了网间寻址服务;反之,也可以说传输层利用了网络层所提供的服务。
接口是上下层次之间调用功能和传输数据的方法。它类似于程序设计中的函数调用,上层通过使用接口定义的方法来方便地使用下层提供的服务。
协议是对等层必须共同遵循的标准。它定义包格式和它们的用途的规则集。大多数包都由包头和信息组成:包头常常包括诸如源和目的地址、包的长度和类型指示符等信息;信息部分可以是原始数据,也可
以包含另一个包。一个协议则规范了交换的包的格式、信息的正确顺序以及可能需要采取的附加措施。
网络协议是使计算机能够通信的标准。典型的协议规定网络上的计算机如何彼此识别、数据在传输中应采取何种格式、信息一旦到达最终目的地时应如何处理等,协议还规定对遗失的和被破坏的传输或数据包的处理过程。IPX、TCP/IP、DECnet、AppleTalk 都是网络协议的例子。
4.寻址
网络的核心概念是“寻址”。在网络中,一个设备的地址是它的唯一标识。网络地址通常是由数字组成的,具有标准的、以定义好的格式。网络上的所有设备都需要给定一个遵循标准格式的唯一标识,即设备的地址。在一个有路由能力的网络中,地址至少包括两个部分:网络部分(或域部分)和节点部分(或主机部分)。
5.端口号
TCP/UDP使用IP地址标识网上主机,使用端口号来标识应用进程,即TCP/UDP用主机IP地址和为应用进程分配的端口号来标识应用进程。端口号是16位的无符号整数,TCP 的端口号和UDP的端口号是两个独立的序列。尽管相互独立,如果TCP和UDP同时提供某种知名服务,两个协议通常选择相同的端口号。这纯粹是为了使用方便,而不是协议本身的要求。利用端口号,一台主机上多个进程可以同时使用
TCP/UDP提供的传输服务,并且这种通信是端到端的,它的数据由IP传递,但与IP数据报的传递路径无关。
端口号的分配是一个重要问题。有两种基本分配方式:第一种叫全局分配,这是一种集中控制方式,由一个公认的中央机构根据用户需要进行统一分配,并将结果公布于众。第二种是本地分配,又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回一个本地唯一的端口号,进程再通过合适的系统调用,将自己与该端口号联系起来(绑扎)。TCP/UDP 端口号的分配综合了上述两种方式。TCP/UDP 将端口号分为两部分,少量的作为保留端口,以全局方式分配给服务进程。因此,每一个标准服务器都拥有一个全局公认的端口(well-known port),即使在不同机器上,其端口号也相同。剩余的为自由端口,以本地方式进行分配。表7.1列出了常用的TCP/UDP 端口号。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。