TCP/IP协议设计人员采用一种创造性的方法,解决了诸如以太网这样具有广播能力物理网络的地址转换问题。ARP表放在内存储器ARP高速缓存中,其中的登录项是在第一次需要使用而进行查询时通过ARP协议自动填写的。ICMP也是在网络层中与IP一起使用的协议。ICMP的使用主要包括以下3种情形。......
2023-11-04
TCP是传输控制协议,它是TCP/IP协议簇中的一个重要协议。它对应于OSI模型的传输层,是在IP协议的基础上,提供一种面向连接的、可靠的(没有数据重复或丢失)数据流传输服务。
图2-9显示出了从发送方的高层协议通过TCP到达接收方的高层协议数据传输的完整过程。
根据图2-9对TCP报文段的传输过程说明如下。
(1)发送方的高层协议发出一个数据流给它的TCP实体进行传输。
(2)TCP将此数据流分成段,然后将这些段交给IP。
(3)IP对这些报文段执行它的服务过程,包括创建IP分组、数据报分割等,并在数据报通过数据链路层和物理层后经过网络传给接收方的IP。
(4)接收方的IP在可能采取分组检验和重组分段的工作后,将数据报变成段的形式送给接收方的TCP。
图2-9 TCP报文段的传输过程
(5)接收方的TCP完成它自己的任务,将报文段恢复成它原来的数据“流”形式,送给接收方的高层协议。
1.TCP提供的3种最重要的服务
(1)可靠地传输消息
为应用层提供可靠的面向连接服务,确保发送端发出的消息能够被接收端正确无误地接收到。TCP去掉重复的数据,在数据丢失时重发数据,并且保证精确地按原发送顺序重新组装数据。
TCP允许两个应用程序建立一个连接,然后发送完数据并终止连接。所谓连接,就是两个对等实体为进行数据通信而进行的一种结合。面向连接服务是在数据交换之前,必须先建立连接,当数据交换结束后,则应终止这个连接。面向连接服务具有连接建立、数据传输和连接释放三个阶段。总之,TCP协议使两台计算机上的程序通过互联网以类似于电话的方式进行通信成为可能。一旦两个程序建立了连接,那么它们可以在交换任意大小的数据后再结束通信。
当路由器由于到达的数据包过多而引起超载的时候,它必须将一些数据包丢弃,结果,一个数据包在互联网上传输时就可能丢失。TCP将自动检测丢失的数据包,并且要求对方计算机在数据丢失时重发数据。
互联网结构复杂,每个数据包可以通过多条路径到达同一目的地。当路由器开始沿另外一条新的路径传送数据包,就好像高速公路上的汽车在前方出现问题时会绕道而行一样。由于路径的变化,一些数据包会按它们发送时不同的顺序到达目的地,TCP自动检测到来的数据包,并且将它们按原来的顺序调整过来。
有时,网络硬件故障也会导致重复地发送同一个数据包,结果一个数据包的多个副本可能会重复到达目的地。TCP将自动检测有没有重复的数包报发来,如果有,它只接受最先到达的数据包。
总之,尽管IP协议使计算机能够发送和接收数据包,但IP协议并未解决数据包在传输过程中所有可能出现的问题,因此连上互联网的计算机还需要TCP协议来提供可靠的无差错的通信服务。
(2)流量控制
TCP在其连接的通信过程中,能够调整流量,以防止内部的TCP数据传递出现拥挤,从而导致服务质量下降和出错。
为了控制流量,TCP模块间通信采用了窗口机制。这里,窗口是接收方接收字节数量能力的表示。在ACK应答信息中,加上接收方允许接收数据范围的信息回送给发送方。发送方除非收到来自接收方的最大数据允许接收范围的信息,否则总是使用由接收方提供的这一范围发送的数据。
当建立一个连接时,连接双方的主机都给TCP分配了一定数量的缓存。每当进行一次TCP连接时,接收方主机只允许发送端主机发送的数据不大于缓存空间的大小。如果没有流量控制,发送端主机就可能以比接收端主机快得多的速度发送数据,这使得接收端的缓存出现溢出现象。因此,接收方必须随时通报缓冲区的剩余空间,以便发送方调整流量。
(3)阻塞控制
任何一个网络,当过多的数据进入时,都会导致网络阻塞,互联网也不例外。阻塞发生时会引起发送端超时,虽然超时也有可能是由数据传输出错引起的,但在当前数字化网络环境中,由于传输介质(例如使用光纤)的可靠性越来越高,数据传输出错的可能性很小。因此导致超时的绝大多数原因是网络阻塞。TCP实体就是根据超时来判断是否发生了网络阻塞的。
TCP考虑到网络的处理能力,除了设置接收通告窗口外,还在发送端设置一个阻塞窗口,发送窗口必须是接收通告窗口和阻塞窗口中较小的那一个,即
发送窗口=min(接收通告窗口,阻塞窗口)
与接收通告窗口一样,阻塞窗口也是动态可变的。在连接建立时,阻塞窗口被初始化成该连接支持的最大段长度,然后TCP实体发送一个最大长度的段;如果这个段没有超时,则将阻塞窗口调整成两个最大段长度,然后发送两个最大长度的段;每当发送出去的段都及时地得到应答,就将阻塞窗口加倍,直至最终达到接收窗口大小或发生超时,这种算法称为“慢启动”。如果发生了超时,TCP实体将一个门限参数设置成当前阻塞窗口的一半,然后将阻塞窗口重新初始化成最大段长度,再一次执行慢启动算法,直至阻塞窗口大小达到设定的门限值;这时减慢阻塞窗口增大的速率,每当发送出去的段得到了及时应答,就将阻塞窗口增加一个最大段长度,如此,阻塞窗口呈线性增大,直至达到接收通告窗口大小或又发生超时。当阻塞窗口达到接收通告窗口时,便不再增大,此后一直保持不变,除非接收通告窗口改变或又发生超时;如果发生超时,则使用上述阻塞控制算法重新确定合适的阻塞窗口大小。
TCP确保每次TCP连接不过分加重路由器的负担,当网络上的链路出现拥挤时,经过这个链路的TCP连接将自身调节以减缓拥挤。
采用以上的流量控制和阻塞控制机制后,发送端可以随时根据接收端的处理能力和网络的处理能力来选择一个最适合的发送速率,从而充分有效地利用网络资源。
2.TCP报文段的格式
TCP协议在两台计算机之间传输的数据单元称为报文段。报文段交换涉及建立连接、传输数据、发送确认、通知窗口尺寸,直到关闭连接。TCP报文段的格式如图2-10所示。报文段既可以用来建立连接,也可以运载数据和应答。
(www.chuimin.cn)
图2-10 TCP报文段的格式
每个报文段分为两部分,前面是TCP头,后面是数据。在TCP头中的源端口段和目的端口段各包含一个TCP的端口号,分别标识连接两端的两个应用程序。序列号标识本报文段中的数据在发送者字节流中的位置。确认号标识本报文段的源发方下一个期待接收的字节的编号。
偏移段包含一个整数,指明报文段头的长度,单位是32位。需要这个段是因为TCP头中的任选项段长度可变。因此,这个TCP报头的长度随所选的选项而变化,标有保留的段为6位,留给将来使用。
有些报文段只载送应答,而另外的报文段载送数据。还有的报文段请求建立或关断一条连接。TCP协议使用标有编码位的6位段确定报文段的目的与内容。表2-3列出了这6位编码位段中各位的含义。
表2-3 TCP报文段头中6位编码位段中各位的含义
TCP协议每次发送一个报文段时,通过在窗口段中指定它的缓冲区大小,通告它愿意接收多少数据。该段包含一个网络标准字节顺序表示的32位无符号整数。窗口通告给出了捎带机制的又一例子,因为它们伴随所有的TCP报文段,既包括那些运载数据的报文段,也包括那些仅运载应答确认的报文段。
尽管TCP是面向流的协议,但有时候处于连接的一端的程序也需要立即发送带外数据,而不用等待连接的另一端上的程序消耗完数据流中正传输的数据。为了提供带外信令,TCP允许发送者把数据指定成紧急的,这意味着接收程序应被尽可能快地通知紧急数据到达,而不管紧急数据处于流中什么位置。当在一个报文段中发送紧急数据时用以标志紧急数据的机制由CODE段中的URG位和紧急指针段组成。当URG位置为1时,紧急指针指出窗口中紧急数据结束的位置。紧急指针的值是从序列号段值开始算起的数据段中的正偏移。将紧急指针值与序列号相加就得到最后一个紧急数据字节的编号。
TCP头中的可选项段用来处理其他各种情况。目前被正式使用的可选项可用于定义通信过程中最大报文段长,它只能在连接之时使用。
可选项的长度是可变的,只要求它以字节为单位,因此有可能不是32的整数倍。在不是32位的整数倍的情况下,为使可选项长度成为32位整数倍,可在表示可选项的结束的可选项后面填充一些位来满足要求。
TCP头中的检验与用于头和数据中的所有16位字,检验和也覆盖了在概念上附加在TCP报头前的伪报头(伪头),该伪头含有源地址、目标地址、协议标识符和TCP段长,如图2-11所示。
图2-11 TCP伪报头结构
在伪头内,标有发送方IP地址和接收方IP地址的段分别包含报源互联网地址和报宿互联网地址。这两个地址在发送TCP报文时都要用到,协议标识符段包含IP分组的协议类型码,每段又标明了报文段长度(不包括伪头)。
为了计算检验和,TCP把伪头回到TCP报文段上,再对全部内容(包括伪头、TCP报文段头及用户数据)求出16位的反码之和,检验和的初始值设成0,然后每两个字节为1单位相加,若相加的结果有进位,那么将和加1。如此反复,直到全部内容都相加完为止。将最后的和值对1求补,即取二进制反码,便得到16位的检验和。
3.TCP连接管理
对于面向连接服务,即使是可靠的网络服务,还是需要连接的建立和释放过程。连接管理使连接的建立和释放能正常进行。
建立连接时需要解决每一端都能确知对方的存在,允许通信双方协商可选参数,对运输实体资源进行分配3个问题。
连接的建立采用客户机/服务器方式。主动发送连接的运输实体的进程为客户机,而被动等待连接的运输实体的进程称为服务器。
在连接建立过程中,存在两种方式,要么由运行客户进程的运输实体先向其TCP发出主动打开命令,表示要向某个IP地址的某个端口建立运输连接;要么由运行服务器进程的运输实体先向它的TCP发出一个被动打开命令,要求它准备接收客户进程的连接请求。接着,服务器进程就处于“监听”的状态,从而不断检测是否有客户进程连接请求的到来,如有,则予以响应。
TCP采用如图2-12所示的3次握手过程建立传输连接。
图2-12 传输连接建立的过程
(1)A(客户端进程)发出“请求连接”TCP段,段头的SYN置1,序列号Seq=x(A初始报文序列号)。
(2)B(服务器进程)返回一个TCP段,段头的SYN和ACK均置1,其序列号Seq=y(B初始报文序列号),确认(ACK)域则为x+1,告示A端序列号为x,请求正确收到,并对此做出肯定应答。
(3)A正确收到B的应答后,需要再发送一个ACK置为1的TCP段,在确认(ACK)域中填入y+1,以示对B的初始序号的确认。
此时,运输客户进程的运输实体A向上层应用进程告知连接已建立,而运行服务器进程的运输实体B收到A的确认后,也通知上层应用进程连接已经建立。
TCP使用一种修改的3次握手释放传输连接,如图2-13所示。
图2-13 传输连接释放的过程
用以建立和释放连接的3次握手之间的差别发生在机器接收到初始的FIN报文段之后,TCP不是立即产生第2个FIN报文段,而是发送一个应答,然后将关断连接的请求通知应用程序。将请求通知应用程序并获得响应可能需要相当长的时间。上述确认防止在等待期间发生初始的FIN报文段。最后,当应用程序指示TCP完全关断连接时,TCP发送第2个FIN报文段,并且源场点以自己的第2个报文段即ACK应答。
有关计算机网络技术及应用的文章
TCP/IP协议设计人员采用一种创造性的方法,解决了诸如以太网这样具有广播能力物理网络的地址转换问题。ARP表放在内存储器ARP高速缓存中,其中的登录项是在第一次需要使用而进行查询时通过ARP协议自动填写的。ICMP也是在网络层中与IP一起使用的协议。ICMP的使用主要包括以下3种情形。......
2023-11-04
与TCP配合使用的网络层协议是IP,人们常常称这些相关协议为TCP/IP协议。虽然TCP和IP不是OSI标准,但已被公认为当前的工业标准,称为目前最流行的传输层协议。下面将TCP/IP和相应的OSI层次进行对比,如图3—31所示。图3—31TCP/IP和OSI层次对比对应于OSI的5~7层,相应的高层协议有:SMTP,简单邮件传输协议,关于电子邮件方面的。对应于OSI的第四层的协议有三个:TCP传输控制协议,是面向连接的协议,也是最主要的协议。......
2023-10-22
Net BEUI协议是非可路由协议,由包括Windows 2000在内的所有Microsoft网络产品支持。基于Windows 2000的Net BEUI称为Net BIOS帧,它提供与已存在的使用Net BEUI协议的局域网的兼容性。Net BEUI也是微软最钟爱的一种通信协议,所以它被称为微软所有产品中通信协议的“母语”。后来,IBM发现Net BIOS存在许多缺陷,所以于1985年对其进行了改进,推出了Net BEUI协议。而Net BEUI是建立在Net BIOS基础之上的一个网络传输协议。......
2023-11-04
网络协议即网络中传递、管理信息的一些规范,在计算机之间相互通信需要共同遵守一定的规则,这些规则称为网络协议。之所以命名为TCP/IP协议,因为TCP、IP协议是两个很重要的协议,所以以TCP/IP命名。UDP协议使用IP层提供的服务把从应用层得到的数据从一台主机的某个应用程序传给网络上另一台主机上的某一个应用程序。......
2023-10-17
TCP/IP协议是一个协议集,其中最重要的是TCP协议与IP协议,因此通常将这诸多协议统称为TCP/IP协议集,如图2.8所示。图2.8TCP/IP模型中的协议与网络图1.网际层协议网际协议IP。1).IP协议特点:一是提供无连接的数据报传输机制;二是能完成点对点的通信。2)IP协议的作用:用于主机与网关、网关与网关、主机与主机之间的通信。网际控制报文协议ICMP:为IP协议提供差错报告。UDP与IP比较,增加了提供协议端口的能力以保证进程间的通信。......
2023-10-18
应用层安全协议很多,这里以电子邮件协议为例,来说明应用层协议的安全性。典型的安全电子邮件协议有PGP 和PEM。PGP 协议PGP是1991年发布的一个完整的电子邮件安全协议,它提供了方便使用的加密、鉴别、数字签名和压缩功能。图10.6PGP 对邮件的加密PEM 采用更结构化的密钥管理机制,由认证中心发布证书,证书上面有用户姓名、公钥和密钥的使用期限。PEM 存在的问题是没有公认的证书权威机构。......
2023-10-19
直到1982年,TCP/IP协议的具体规范才被最终定下来,并于1984年或为互联网唯一指定的协议。与OSI参考模型不同,TCP/IP模型更侧重于互联设备间的数据传送,而不是严格的功能层次之分。因此,OSI参考模型在解释互联网络通信机制上比较合适,但TCP/IP成为互联网络协议的市场标准。通常所说的TCP/IP协议实际上包含了大量的协议和应用,由多个独立定义的协议组合在一起。因此,TCP/IP并不是指TCP和IP两个协议,而是表示Internet所使用的体系结构或整个协议簇。......
2023-10-22
TCP 连接的建立是从客户向服务器发送一个主动打开请求而启动的。当其中一方发送完数据后,就会关闭它这一方的连接,同时向对方发送撤销TCP 连接的报文。TCP 连接的建立使用了三次握手机制。实际上,TCP 要求建立连接的每一方随机地选择一个初始序号,这样可防止黑客容易猜测到初始序号而进行TCP 连接劫持攻击。收到一个FIN 只意味着这一方向上没有数据流动,一个TCP 连接在收到一个FIN 后仍然能够发送数据。......
2023-10-19
相关推荐