




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第7章 传输层协议7.1 进程间通信进程间通信7.2 TCP段格式段格式7.3 TCP连接的建立和拆除连接的建立和拆除7.4 TCP流量控制流量控制7.5 TCP拥塞控制拥塞控制7.6 TCP差错控制差错控制7.7 TCP状态转换图状态转换图7.8 用户数据报协议用户数据报协议UDP27.1 进程间通信进程间通信 由于在一台计算机中同时存在多个进程,要由于在一台计算机中同时存在多个进程,要进行进程间的通信,进行进程间的通信,首先要解决进程的标识首先要解决进程的标识问题问题。TCPTCP和和UDPUDP采用协议采用协议端口端口来标识某一主来标识某一主机上的通信进程。机上的通信进程。 必须给出必
2、须给出全局惟一全局惟一的信宿端的进程标识符。的信宿端的进程标识符。主机可以用主机可以用IPIP地址进行标识地址进行标识,IPIP地址是全局地址是全局惟一的,再给主机上的进程赋予一个惟一的,再给主机上的进程赋予一个本地惟本地惟一的标识符一的标识符端口号端口号,二者加起来,便形成,二者加起来,便形成了进程的全局惟一标识符。了进程的全局惟一标识符。3 端口端口:传输层服务访问点:传输层服务访问点TSAP。 从内部实现看,端口是一种从内部实现看,端口是一种抽象的软件结构抽象的软件结构(数据数据结构和结构和I/O缓冲区缓冲区) 从通信对方看,端口是从通信对方看,端口是通信进程的标识通信进程的标识,应用进
3、,应用进程通过系统调用与端口建立关联后,传输层传给程通过系统调用与端口建立关联后,传输层传给该端口的数据都会被相应的应用进程所接收该端口的数据都会被相应的应用进程所接收 从本地应用进程看,端口是进程从本地应用进程看,端口是进程访问传输服务的访问传输服务的入口点入口点。 每个端口拥有一个每个端口拥有一个端口号端口号(port number),),端口号是端口号是16比特比特的标识符,因此,端口号的的标识符,因此,端口号的取值范围是从取值范围是从0到到65535。 端口分配端口分配有两种基本的方式:全局端口分配有两种基本的方式:全局端口分配和本地端口分配。和本地端口分配。4 TCP和和UDP都是都
4、是提供进程通信能力提供进程通信能力的传输层协议,的传输层协议,各各有一套有一套端口号,都是从端口号,都是从0到到65535。 同一个端口在同一个端口在TCP和和UDP中可能对应于中可能对应于不同不同类型的应类型的应用进程,也可能对应于用进程,也可能对应于相同相同类型的应用进程。为了区类型的应用进程。为了区别别TCP和和UDP的进程,除了给出主机的进程,除了给出主机IP地址和端口号地址和端口号之外,还要之外,还要指明协议指明协议。 因特网中要全局惟一地标识一个进程必须采用一个因特网中要全局惟一地标识一个进程必须采用一个三三元组元组:(协议,主机地址,端口号):(协议,主机地址,端口号) 网络通信
5、是两个网络通信是两个进程之间的通信进程之间的通信,两个通信的进程构,两个通信的进程构成一个成一个关联关联。这个关联应该包含两个三元组,由于通。这个关联应该包含两个三元组,由于通信双方采用的协议必须是相同的,可以用一个信双方采用的协议必须是相同的,可以用一个五元组五元组来描述两个进程的关联:(协议来描述两个进程的关联:(协议,本地主机地址本地主机地址,本地端本地端口号口号,远地主机地址远地主机地址,远地端口号)远地端口号) 5 因特网通信进程间的因特网通信进程间的相互作用模式相互作用模式:客户客户/服务服务器模型器模型。客户。客户/服务器模型相互服务器模型相互作用的过程作用的过程是:是:客户向服
6、务器发出服务请求,服务器完成客户客户向服务器发出服务请求,服务器完成客户所要求的操作,然后给出响应。所要求的操作,然后给出响应。 服务器一般先于客户端启动,为了让客户能够服务器一般先于客户端启动,为了让客户能够找到服务器,服务器必须使用一个找到服务器,服务器必须使用一个客户熟知的客户熟知的地址地址,客户可以根据此地址向服务器提出服务,客户可以根据此地址向服务器提出服务请求。请求。 熟知地址的含义:熟知地址的含义:协议协议是双方约定的协议,主是双方约定的协议,主机机IP地址地址是固定且公开的,是固定且公开的,端口号端口号是大家所熟是大家所熟知的。知的。6 每一个标准的服务器都拥有一个熟知的端口号
7、,每一个标准的服务器都拥有一个熟知的端口号,不同主机上相同服务器的端口号是相同的。客不同主机上相同服务器的端口号是相同的。客户进程一般采用户进程一般采用临时端口号临时端口号,而不采用熟知的,而不采用熟知的端口号。临时端口是使用时向操作系统端口号。临时端口是使用时向操作系统申请申请,由操作系统由操作系统分配分配,使用使用完后再完后再交交由操作系统管由操作系统管理的端口。因此,只要同一时间同一主机上的理的端口。因此,只要同一时间同一主机上的应用进程数量不超过可分配的临时端口数量就应用进程数量不超过可分配的临时端口数量就能保证系统的正常运行。能保证系统的正常运行。 熟知端口所占端口号不多,以全局方式
8、进行分熟知端口所占端口号不多,以全局方式进行分配。配。TCP和和UDP规定,规定,小于小于1024的端口号用的端口号用作熟知端口,熟知端口又称为作熟知端口,熟知端口又称为保留端口保留端口。7 从从1024到到65535编号的端口为临时端口,编号的端口为临时端口,临时端口又称为临时端口又称为自由端口自由端口。临时端口占。临时端口占全部端口的绝大部分,以本地方式进行全部端口的绝大部分,以本地方式进行分配。当进程要与远地进程通信时,首分配。当进程要与远地进程通信时,首先申请一个临时端口,然后根据全局分先申请一个临时端口,然后根据全局分配的熟知端口号与远地服务器建立联系,配的熟知端口号与远地服务器建立
9、联系,传输数据。传输数据。 TCP/IP结合了两种端口分配方式结合了两种端口分配方式,既保,既保证了灵活性,又方便了建立通信进程间证了灵活性,又方便了建立通信进程间的联系。的联系。801023Well-known102449151Registered4915265535Dynamic9 TCP要将数据分为分组,要将数据分为分组,TCP所采用的分组称所采用的分组称为为TCP段。段。TCP段不定长段不定长,被封装在,被封装在IP数据报数据报中传输。中传输。IP数据报不能保证数据的按序到达,数据报不能保证数据的按序到达,还可能造成数据的丢失或毁坏,这些问题经过还可能造成数据的丢失或毁坏,这些问题经过
10、TCP协议的处理后,对上层提供的是协议的处理后,对上层提供的是可靠的无可靠的无差错的服务差错的服务。 图 8-1 进程标识与流传输 | | UDP 字节流 | | | | TCP |53068| | | TCP | 23 | | | UDP | | 临时端口 熟知端口 Telnet 客户 Telnet 服务器 IP 地址:192.168.1.2 IP 地址:192.168.6.4 主机 A 主机 B 返回返回107.2 TCP段格式段格式TCP将应用层的数据分块并封装成将应用层的数据分块并封装成TCP段进行段进行发送。发送。TCP段段=段首部段首部+数据数据 段首部段首部(20到到60字节字节
11、)=定长部分定长部分+变长部分变长部分 定长部分定长部分长度:长度:20字节字节 变长部分变长部分=选项选项+填充,长度填充,长度:0到到40字节之间。字节之间。TCP段格式中各个字段的含义和作用:段格式中各个字段的含义和作用:11 源 端 口(16 比特) 目 的 端 口(16 比特) 序 号 (32 比特) 确 认 号 (32 比特) HLEN (4比特) 保留 (6 比特) U R G A C K P S H R S T S Y N F I N 窗 口 大 小(16 比特) 校 验 和(16 位) 紧急指针(16 比特) 选 项 与 填 充(40 字节) 数 据(必须填充成 16 比特的
12、整数倍) 首部 图 8-2 TCP 段格式 0 16 31 12 源 IP 地 址(32 比特) 目 的 IP 地 址(32 比特) 全 0(8 比特) 协议(8 比特) TCP 总长度 (16 比特) 图 8-3 TCP 伪首部格式 0 8 31 16 TCP伪首部的伪首部的信息来自信息来自IP数据报的首部数据报的首部,协议字,协议字段指明当前协议为段指明当前协议为TCP(6)。TCP段的发送端和段的发送端和接收端在计算校验和时都会加上伪首部信息。若接收端在计算校验和时都会加上伪首部信息。若接收端验证校验和是正确的,则说明数据到达了接收端验证校验和是正确的,则说明数据到达了正确主机上正确协议
13、的正确端口正确主机上正确协议的正确端口。13 TCP选项选项是变长字段,当前是变长字段,当前TCP使用的选项:使用的选项: 图 8-4 TCP 选项格式 选项结束 无操作 00000000 代码 00000001 00000010 00000100 最大段大小 2 字节 00000011 00000011 规模因子 最大段大小 窗口规模因子 时间戳 00001000 00001010 时间戳值 时间戳回显应答 长度 选项结束选项结束标志为单字节选项,代码为标志为单字节选项,代码为0,用于,用于表示选项结束。表示选项结束。14 无操作无操作选项为选项为单字节选项单字节选项,代码为,代码为1,用于
14、选,用于选项的填充,实现项的填充,实现32位对齐。位对齐。 最大段大小最大段大小(MSS)选项为)选项为多字节选项多字节选项,代,代码为码为2,长度为,长度为4字节,最后两个字节用于标字节,最后两个字节用于标识本机能够接收的段的最大字节数。该值范识本机能够接收的段的最大字节数。该值范围为围为0到到65535,默认值为,默认值为536。 窗口规模因子窗口规模因子选项为多字节选项,代码为选项为多字节选项,代码为3,长度为长度为3字节。在字节。在TCP段的首部存在段的首部存在16比特的比特的窗口大小字段,但在高吞吐和低延迟的网络窗口大小字段,但在高吞吐和低延迟的网络中,中,65535字节的窗口仍然嫌
15、小。通过在选项字节的窗口仍然嫌小。通过在选项中采用窗口规模因子,可以增加窗口的大小。中采用窗口规模因子,可以增加窗口的大小。扩展后的窗口大小为:扩展后的窗口大小为:Wn=Wo2f Wn为新的窗口大小,为新的窗口大小,Wo为为TCP首部窗口大首部窗口大小字段的值,小字段的值,f为窗口规模因子。为窗口规模因子。 15 时间戳时间戳选项为多字节选项,选项为多字节选项,代码为代码为8,长长度为度为10字节字节。时间戳值字段由源端在发。时间戳值字段由源端在发送数据段时填写,信宿端收到后,在确送数据段时填写,信宿端收到后,在确认数据段中将收到的时间戳值填入时间认数据段中将收到的时间戳值填入时间戳回显应答字
16、段,信源端根据该时间戳戳回显应答字段,信源端根据该时间戳值和当前时间戳可以计算出数据段的往值和当前时间戳可以计算出数据段的往返时间。返时间。返回返回167.3 TCP连接的建立和拆除连接的建立和拆除7.3.1 TCP连接的建立连接的建立 为了实现数据的为了实现数据的可靠传输可靠传输,TCP要在应用进要在应用进程间建立传输程间建立传输连接连接。 从理论上讲,建立传输连接只需要一个请求从理论上讲,建立传输连接只需要一个请求和一个响应就可以了。但是由于通信子网的和一个响应就可以了。但是由于通信子网的问题,请求有可能丢失,为了解决请求的丢问题,请求有可能丢失,为了解决请求的丢失问题,常用的办法是失问题
17、,常用的办法是超时重传超时重传。 客户发出连接请求时,启动一个客户发出连接请求时,启动一个定时器定时器,一,一旦定时器超时,客户将被迫再次发起连接请旦定时器超时,客户将被迫再次发起连接请求,会导致求,会导致重复连接重复连接。 17 解决解决重复连接的办法:三次握手方法。重复连接的办法:三次握手方法。 三次握手方法要求三次握手方法要求对所有报文进行编号对所有报文进行编号,TCP采用的方法是给采用的方法是给每个字节一个每个字节一个32比特的比特的序号序号。 每次建立连接时都产生一个新的每次建立连接时都产生一个新的初始序号初始序号。 序号字段位数序号字段位数定定长,序号循环使用,序号字长,序号循环使
18、用,序号字段段位数较长位数较长,当序号循环一周回来时,使用,当序号循环一周回来时,使用同一序号的旧报文段早已传输完。这样,保同一序号的旧报文段早已传输完。这样,保证网络中不会同时出现来自同一源主机的相证网络中不会同时出现来自同一源主机的相同序号的两个不同报文段。同序号的两个不同报文段。 18 建立连接前,建立连接前,服务器端服务器端首先被动打开其熟知的端口,首先被动打开其熟知的端口,对端口进行对端口进行监听监听。当。当客户端客户端要和服务器建立连接时,要和服务器建立连接时,发起一个发起一个主动打开端口主动打开端口的请求(临时端口)。然后进的请求(临时端口)。然后进入入三次握手过程三次握手过程:
19、 第一次握手第一次握手:由要建立连接的客户向服务器发出连接:由要建立连接的客户向服务器发出连接请求段,该段首部的请求段,该段首部的同步标志同步标志SYN被置为被置为1,并在首,并在首部中填入本次连接的客户端的部中填入本次连接的客户端的初始段序号初始段序号SEQ(例如(例如SEQ=26500)。)。 第二次握手第二次握手:服务器收到请求后,发回:服务器收到请求后,发回连接确认连接确认(SYN+ACK),该段首部中的同步标志),该段首部中的同步标志SYN被置为被置为1,表示认可连接,首部中的确认标志,表示认可连接,首部中的确认标志ACK被置为被置为1,表示对所接收的段的确认,与表示对所接收的段的确
20、认,与ACK标志相配合的是准标志相配合的是准备接收的备接收的下一序号下一序号(ACK 26501),该段还给出了自),该段还给出了自己的己的初始序号初始序号(例如(例如SEQ=29010)。对请求段的确)。对请求段的确认认完成了一个方向上连接完成了一个方向上连接。19 第三次握手第三次握手:客户向服务器发出的:客户向服务器发出的确认确认段,段,段首部中的确认标志段首部中的确认标志ACK被置为被置为1,表示对所,表示对所接收的段的确认,与接收的段的确认,与ACK标志相配合的准备标志相配合的准备接收的下一序号被设置为收到的段序号加接收的下一序号被设置为收到的段序号加1(ACK 29011)。完成了
21、另一个方向上的连接。完成了另一个方向上的连接。 客户 服务器 SYN,SEQ=26500 ACK 26501,SYN,SEQ=29010 图 8-5 三次握手建立连接 ACK 29011 时间 时间 207.3.2 TCP连接的拆除连接的拆除 连接连接双方都可以发起拆除双方都可以发起拆除连接操作。连接操作。 简单地拆除连接可能会造成数据丢失简单地拆除连接可能会造成数据丢失。例如,。例如,A、B两主机已建立连接并传输报文,两主机已建立连接并传输报文,A主机在主机在B主机没有主机没有准备的情况下,单方面发出断开连接请求,并停止准备的情况下,单方面发出断开连接请求,并停止接收该连接上的数据。但断开连
22、接请求的传输要有接收该连接上的数据。但断开连接请求的传输要有一段时间,而在一段时间,而在B主机未收到断开连接请求之前,随主机未收到断开连接请求之前,随时可能向时可能向A主机发送数据,会有丢失数据的可能性。主机发送数据,会有丢失数据的可能性。 主机 A 请求断开连接 图 8-6 简单断开连接可能丢失数据 时间 时间 主机 B 数据 21 解决解决:TCP采用和三次握手类似的方法。这里可以将采用和三次握手类似的方法。这里可以将断开连接操作视为在断开连接操作视为在两个方向上分别断开连接操作两个方向上分别断开连接操作构构成。一方发出断开连接请求后并不马上拆除连接,而成。一方发出断开连接请求后并不马上拆
23、除连接,而是等待对方的确认,对方收到断开连接请求后,发送是等待对方的确认,对方收到断开连接请求后,发送确认报文,这时拆除的只是单方向上连接(半连接)。确认报文,这时拆除的只是单方向上连接(半连接)。对方发送完数据后,再通过发送断开连接请求来断开对方发送完数据后,再通过发送断开连接请求来断开另一个方向上的半连接。另一个方向上的半连接。 主机 A FIN,SEQ=32630 ACK 32631 图 8-7 拆除 TCP 连接 时间 时间 主机 B FIN,SEQ=24122,ACK 32631 ACK 24123 关闭 半连接 关闭 半连接 返回返回227.4 TCP流量控制流量控制 TCP除了提
24、供除了提供进程通信能力进程通信能力外,主要特点是外,主要特点是具有具有高可靠性高可靠性。TCP在发送端与接收端之间在发送端与接收端之间建立一条连接,报文需要得到建立一条连接,报文需要得到接收端的确认接收端的确认。TCP传输的是一个无报文丢失、重复和失序传输的是一个无报文丢失、重复和失序的正确的数据流。的正确的数据流。 TCP采用的最基本的采用的最基本的可靠性技术可靠性技术:流量控制流量控制拥塞控制拥塞控制差错控制差错控制23 问题问题:在面向连接的传输过程中,发送方与:在面向连接的传输过程中,发送方与接收方在发送报文的速率方面接收方在发送报文的速率方面要协调一致要协调一致。若发送方一味地向网络
25、注入数据,则可能造若发送方一味地向网络注入数据,则可能造成网络拥塞或因接收方来不及处理而丢失数成网络拥塞或因接收方来不及处理而丢失数据。据。若发送方每发出一个报文都等待对方的确认,若发送方每发出一个报文都等待对方的确认,势必造成效率低下。势必造成效率低下。 解决解决:滑动窗口协议滑动窗口协议。采用滑动窗口协议既。采用滑动窗口协议既能够能够保证可靠性保证可靠性,又可以,又可以充分利用网络的传充分利用网络的传输能力输能力。这种方案允许。这种方案允许连续传输多个报文连续传输多个报文而而不必等待各个报文的确认,能够连续发送的不必等待各个报文的确认,能够连续发送的报文数受到报文数受到窗口大小的限制窗口大
26、小的限制。 24 滑动窗口协议通过发送方窗口和接收方窗口滑动窗口协议通过发送方窗口和接收方窗口的配合来完成传输控制。的配合来完成传输控制。 图 8-8 TCP 连接发送方缓存与窗口 19 20 21 22 23 24 25 26 27 28 29 30 31 已发送 并已确认 已发送 但未确认 可以连续发送 发送窗口 发送方缓存 暂不能发送 发送缓存中是一组顺序编号的字节数据,这些数发送缓存中是一组顺序编号的字节数据,这些数据的一部分在据的一部分在发送窗口发送窗口中,另一部分在发送窗口中,另一部分在发送窗口外。图中发送缓存左端和右端空白处表示可以填外。图中发送缓存左端和右端空白处表示可以填入数
27、据的空闲缓存,实际上可以将缓存视为左端入数据的空闲缓存,实际上可以将缓存视为左端和右端相连的环。和右端相连的环。25一旦窗口内的部分数据得到确认,窗口便向右一旦窗口内的部分数据得到确认,窗口便向右滑动,将已确认的数据移到窗口的外面。这些滑动,将已确认的数据移到窗口的外面。这些数据所对应的缓冲单元成为空闲单元。窗口右数据所对应的缓冲单元成为空闲单元。窗口右边沿的移动使新的数据又落入到窗口中,成为边沿的移动使新的数据又落入到窗口中,成为可以被连续发送的数据的一部分。可以被连续发送的数据的一部分。 接收方的窗口接收方的窗口反映当前能够接收的数据的数反映当前能够接收的数据的数量。图量。图8-9给出了接
28、收方缓存与窗口的示意图。给出了接收方缓存与窗口的示意图。 图 8-9 TCP 连接接收方缓存与窗口 19 20 21 22 已提交 占据缓存的 数据 N 字节 空闲 接收方缓存大小 M 26 接收端窗口的大小接收端窗口的大小W对应接收端缓存可以继续对应接收端缓存可以继续接收的数据量,它等于接收缓存大小接收的数据量,它等于接收缓存大小M减去缓减去缓存中尚未提交的数据字节数存中尚未提交的数据字节数N,即,即W=M-N。 接收方窗口的大小取决于接收方窗口的大小取决于接收方处理数据的接收方处理数据的速度和发送方发送数据的速度,当从缓存取速度和发送方发送数据的速度,当从缓存取走数据的速度低于数据进入缓存
29、的速度时,走数据的速度低于数据进入缓存的速度时,接收窗口逐渐缩小,反之则逐渐扩大。接收窗口逐渐缩小,反之则逐渐扩大。 接收方将当前窗口大小通告给发送方接收方将当前窗口大小通告给发送方(利用(利用TCP段首部的窗口大小字段),发送方根据段首部的窗口大小字段),发送方根据接收窗口接收窗口调整其发送窗口调整其发送窗口,使发送方窗口始,使发送方窗口始终小于或等于接收方窗口的大小。终小于或等于接收方窗口的大小。27 通过使用滑动窗口协议限制发送方一次可以通过使用滑动窗口协议限制发送方一次可以发送的数据量,就可以实现流量控制的目的。发送的数据量,就可以实现流量控制的目的。这里的关键是要这里的关键是要保证发
30、送方窗口小于或等于保证发送方窗口小于或等于接收方窗口的大小接收方窗口的大小。 当发送方窗口大小为当发送方窗口大小为1时,每发送一个字节的时,每发送一个字节的数据都要等待对方的确认,这便是数据都要等待对方的确认,这便是简单停等简单停等协议协议。 流量控制可以在网络协议的不同层次上实现,流量控制可以在网络协议的不同层次上实现,TCP的流量控制是在传输层上实现的的流量控制是在传输层上实现的端到端端到端的流量控制的流量控制。返回返回287.5 TCP拥塞控制拥塞控制 流量控制流量控制是由于接收端不能及时处理数据而是由于接收端不能及时处理数据而引发的控制机制。引发的控制机制。 拥塞拥塞是由于网络中的路由
31、器超载而引起的严是由于网络中的路由器超载而引起的严重延迟现象。重延迟现象。拥塞拥塞的发生会造成数据的的发生会造成数据的丢失丢失,数据的丢失会引起超时数据的丢失会引起超时重传重传,而超时重传的,而超时重传的数据又会进一步数据又会进一步加剧拥塞加剧拥塞,如果不加以控制,如果不加以控制,最终将会导致系统的最终将会导致系统的崩溃崩溃。 拥塞造成的数据丢失,仅仅靠超时重传是无拥塞造成的数据丢失,仅仅靠超时重传是无法解决的。法解决的。 因此因此,TCP提供了提供了拥塞控制拥塞控制机制。机制。 29 TCP的的拥塞控制拥塞控制,仍然是利用发送方的窗口,仍然是利用发送方的窗口来控制注入网络的数据流的速度。减缓
32、注入来控制注入网络的数据流的速度。减缓注入网络的数据流后,拥塞就会被解除。网络的数据流后,拥塞就会被解除。 引入拥塞控制后,引入拥塞控制后,发送窗口的大小取决于发送窗口的大小取决于两两个方面的因素:个方面的因素: 接收方的处理能力接收方的处理能力确认报文所通告的窗口大确认报文所通告的窗口大小(即小(即可用的接收缓存可用的接收缓存的大小)来表示;的大小)来表示; 网络的处理能力网络的处理能力发送方所设置的变量发送方所设置的变量拥塞拥塞窗口窗口来表示。发送窗口的大小取通告窗口和拥塞来表示。发送窗口的大小取通告窗口和拥塞窗口中小的一个。窗口中小的一个。 发送窗口大小发送窗口大小=min(接收方通告窗
33、口大小,拥接收方通告窗口大小,拥塞窗口大小塞窗口大小)30 和接收窗口一样,拥塞窗口也处于不断的调和接收窗口一样,拥塞窗口也处于不断的调整中。一旦发现拥塞,整中。一旦发现拥塞,TCP将减小拥塞窗口。将减小拥塞窗口。 为了避免和消除拥塞,为了避免和消除拥塞,TCP周而复始地采用周而复始地采用三种策略三种策略来控制拥塞窗口的大小。来控制拥塞窗口的大小。 首先是使用首先是使用慢启动策略慢启动策略,在建立连接时拥塞,在建立连接时拥塞窗口被设置为窗口被设置为一个一个最大段大小最大段大小MSS。对于每。对于每一个段的确认都会使拥塞窗口一个段的确认都会使拥塞窗口增加一个增加一个MSS,实际上这种增加方式是指
34、数级的增加。例如,实际上这种增加方式是指数级的增加。例如,开始时只能发送一个数据段,当收到该段的开始时只能发送一个数据段,当收到该段的确认后拥塞窗口加大到两个确认后拥塞窗口加大到两个MSS,发送方接,发送方接着发送两个段,收到这两个段的确认后,拥着发送两个段,收到这两个段的确认后,拥塞窗口加大到塞窗口加大到4个个MSS,接下来发送,接下来发送4个段,个段,拥塞窗口加大到拥塞窗口加大到8个个MSS。31 当拥塞窗口加大到当拥塞窗口加大到门限值门限值(拥塞发生时拥塞(拥塞发生时拥塞窗口的一半)时,进入窗口的一半)时,进入拥塞避免阶段拥塞避免阶段,在这,在这一阶段,使用的策略是,一阶段,使用的策略是
35、,每收到一个确认,每收到一个确认,拥塞窗口加大拥塞窗口加大1个个MSS,即使确认是针对多个,即使确认是针对多个段的,拥塞窗口也只加大段的,拥塞窗口也只加大1个个MSS,这在一定,这在一定程度上减缓了拥塞窗口的增长。但在此阶段,程度上减缓了拥塞窗口的增长。但在此阶段,拥塞窗口仍在增长,最终可能导致拥塞。拥塞窗口仍在增长,最终可能导致拥塞。 拥塞使重传定时器超时,发送方进入拥塞使重传定时器超时,发送方进入拥塞解拥塞解决阶段决阶段。发送方在进行重传的同时,将门限发送方在进行重传的同时,将门限值调整为拥塞窗口的一半值调整为拥塞窗口的一半,并将拥塞窗口恢,并将拥塞窗口恢复成一个复成一个MSS,然后进入新
36、一轮的循环。,然后进入新一轮的循环。32 图 8-10 TCP 拥塞窗口与门限的变化 2 8 16 20 拥塞窗口大小(段) 超时 超时 门限=16 20 门限=10 门限=8 16 2 4 8 6 10 12 14 16 18 20 22 往返时间 返回返回337.6 TCP差错控制差错控制差错控制是差错控制是TCP保证可靠性的手段之一。保证可靠性的手段之一。TCP的差错控制的差错控制包括差错检测和纠正包括差错检测和纠正。TCP处理处理的差错有数据被破坏、重复、失序和丢失。的差错有数据被破坏、重复、失序和丢失。 数据被破坏数据被破坏可以通过可以通过TCP的的校验和检测校验和检测出来,出来,接
37、收方接收方丢弃出错的数据丢弃出错的数据,而且,而且不给出确认不给出确认,发送方发送方定时器超时定时器超时后,后,重发该数据。重发该数据。 重复重复数据段一般是由超时重传造成的,数据段一般是由超时重传造成的,接收接收方可以根据序号判断是否是重复数据段方可以根据序号判断是否是重复数据段,对,对于重复数据段只需要简单地于重复数据段只需要简单地丢弃丢弃即可。即可。 34 数据失序数据失序是由于是由于TCP下面的下面的IP协议是无连接的数据协议是无连接的数据报协议,不能保证数据报的按序到达。报协议,不能保证数据报的按序到达。TCP对于提对于提前到达(前面的数据还未到达)的数据,前到达(前面的数据还未到达
38、)的数据,暂不确认,暂不确认,直到前面的数据到达后再一起确认直到前面的数据到达后再一起确认。 数据丢失数据丢失错误也是通过错误也是通过超时重传超时重传来进行恢复。但是来进行恢复。但是确认报文段的丢失一般不会造成任何影响,因为确认报文段的丢失一般不会造成任何影响,因为TCP采用的是累计确认,采用的是累计确认,TCP确认针对流中的字节确认针对流中的字节序号,而不是段号。一般情况下,接收方确认已正序号,而不是段号。一般情况下,接收方确认已正确收到的、连续的流前部。对于接下去的数据段的确收到的、连续的流前部。对于接下去的数据段的确认也就包含了对前面数据的确认。若下一个确认确认也就包含了对前面数据的确认
39、。若下一个确认未能在重传定时器超时之前到达发送方,则会出现未能在重传定时器超时之前到达发送方,则会出现重复报文段。重复报文段。重复数据会被接收方鉴别出来(根据重复数据会被接收方鉴别出来(根据序号),并被丢弃序号),并被丢弃。 35 超时重传最关键的因素是超时重传最关键的因素是重传定时器的定时时重传定时器的定时时间片的大小间片的大小。由于在因特网这种大型网络中。由于在因特网这种大型网络中传传输延迟变化范围很大输延迟变化范围很大,从发出数据到收到确认,从发出数据到收到确认所需的往返时间(所需的往返时间(Round Trip Time,RTT)动态变化,很难确定。动态变化,很难确定。 为了适应传输延
40、迟的动态变化,为了适应传输延迟的动态变化,TCP的重传定时值也的重传定时值也要不断调整。要不断调整。TCP通过测试连接的往返时间,对重传通过测试连接的往返时间,对重传定时值进行修正。定时值进行修正。 TCP的重传定时值根据下式进行计算:的重传定时值根据下式进行计算: Timeout= RTT (1) 为大于为大于1的常数加权因子的常数加权因子(推荐推荐=2),RTT为估算的为估算的往返时间。往返时间。 RTT根据下式进行计算:根据下式进行计算: RTT=RTTo+(1)RTTn (2)返回返回367.7 TCP状态转换图状态转换图 TCP建立连接、传输数据和断开连接是一个建立连接、传输数据和断
41、开连接是一个复杂的过程。为了准确地描述这一过程,可复杂的过程。为了准确地描述这一过程,可以采用以采用有限状态机有限状态机。有限状态机包含有限个。有限状态机包含有限个状态,在某一时刻,机器必然处于某一特定状态,在某一时刻,机器必然处于某一特定状态,当在一个状态下发生特定事件时,机状态,当在一个状态下发生特定事件时,机器会进入一个新的状态。在进行状态转换时,器会进入一个新的状态。在进行状态转换时,机器可以执行一些动作。机器可以执行一些动作。 图图8-11是是TCP的有限状态机,图中的有限状态机,图中状态状态用方框用方框表示,表示,状态转移状态转移用带箭头的线表示,线旁的用带箭头的线表示,线旁的说明
42、用斜线分为两部分,斜线前是引起状态说明用斜线分为两部分,斜线前是引起状态转移的转移的事件事件,斜线后是状态转移时所发出的,斜线后是状态转移时所发出的动作动作。 37 CLOSED 图 8-11 TCP 的状态转换图 SYN-SENT FIN-WAIT-1 LISTEN SYN-RCVD ESTABLISHED CLOSE-WAIT LAST-ACK 主动打开/SYN FIN+ACK/ACK ACK/- FIN/ACK 被动打开/- SYN/SYN+ACK 关闭/FIN FIN-WAIT-2 TIME-WAIT CLOSING ACK/- FIN/ACK 关闭/FIN ACK/- RST/- 超
43、时/RST 超时 RST/- 发送/SYN SYN+ACK/ACK FIN/ACK 关闭/FIN ACK/- 关闭或超时/- SYN/SYN+ACK 38 CLOSED 图 8-12 客户/服务器交换数据时的状态转换图 SYN-SENT ESTABLISHED FIN-WAIT-1 FIN-WAIT-2 TIM E-WAIT CLOSED LISTEN SYN-RCVD ESTABLISHED CLOSE-WAIT LAST-ACK 客户端状态 服务器状态 主动打开/SYN SYN+ACK/ACK 关闭/FIN ACK/- FIN/ACK 被动打开/- SYN/SYN+ACK ACK/- FI
44、N/ACK 关闭/FIN ACK/- 超时 SYN SYN+ACK ACK 交换数据 FIN ACK FIN ACK 返回返回397.8 用户数据报协议用户数据报协议UDP 用户数据报协议用户数据报协议UDP(User Datagram Protocol)是)是TCP/IP传输层的另一个协议。传输层的另一个协议。TCP/IP同时提供同时提供TCP服务和服务和UDP服务的目的服务的目的是为了给用户更加灵活的选择。是为了给用户更加灵活的选择。 UDP同同IP协议一样提供协议一样提供无连接数据报传输无连接数据报传输,UDP在在IP协议上增加了协议上增加了进程通信能力进程通信能力。UDP除了提供进程间
45、的通信能力外,除了提供进程间的通信能力外,还提供了简还提供了简单的差错控制单的差错控制。但。但UDP不提供流量控制,也不提供流量控制,也不对不对UDP数据报进行确认。数据报进行确认。 407.8.1 UDP数据报格式数据报格式 UDP将应用层的数据封装成将应用层的数据封装成UDP数据报数据报进行发送。进行发送。UDP数据报由数据报由首部首部和和数据数据构构成。成。UDP采用采用定长首部定长首部,长度为,长度为8个字节个字节。UDP数据报格式如图数据报格式如图8-13所示。所示。 源 端 口(16比特) 目 的 端 口(16比特) UDP总长度 (16比特) 校验和(16比特) 数 据(必须填充
46、成16比特的整数倍) 首部 图8-13 UDP数据报格式 0 16 31 41 UDP建立在建立在IP之上之上,整个,整个UDP数据报被数据报被封装在封装在IP数据报中传输。虽然数据报中传输。虽然16比特的比特的UDP总长度字段可以标识总长度字段可以标识65535字节,字节,但由于但由于IP数据报总长度数据报总长度65535的限制及的限制及IP数据报首部占用数据报首部占用20字节,实际字节,实际UDP最大最大长度为长度为65515字节,字节, UDP最大数据长度最大数据长度为为65507字节字节。(。(65506) UDP的的校验和校验和字段长度为字段长度为16比特,是比特,是可可选字段选字段
47、,置,置0时表明不对时表明不对UDP进行校验。进行校验。427.8.2 UDP伪首部伪首部 UDP数据报的校验和用于实现数据报的校验和用于实现有限的差错控有限的差错控制制。UDP校验和的计算与校验和的计算与TCP相同,计算校相同,计算校验和时,除了验和时,除了UDP数据报本身外,它还加上数据报本身外,它还加上一个一个伪首部伪首部。伪首部不是。伪首部不是UDP数据报的有效数据报的有效成分,只是验证成分,只是验证UDP数据报是否传到正确的数据报是否传到正确的信宿端的手段。信宿端的手段。 UDP伪首部的格式如图伪首部的格式如图8-14所示。所示。 源 IP 地 址(32 比特) 目 的 IP 地 址
48、(32 比特) 全 0(8 比特) 协议(8 比特) UDP 总长度 (16 比特) 图 8-14 UDP 伪首部格式 0 8 31 16 43面向连接面向连接 无连接无连接高可靠高可靠 高效率高效率一次传输交换大量报文一次传输交换大量报文 一次传输交换少量信息一次传输交换少量信息复杂复杂 简单简单表表8-1 TCP和和UDP的特点比较的特点比较传输控制协议传输控制协议TCP 用户数据报协议用户数据报协议UDP44本章要点本章要点 传输层传输层承上启下,屏蔽通信子网的细节,向上提供通承上启下,屏蔽通信子网的细节,向上提供通用的进程通信服务。用的进程通信服务。传输层是对网络层的加强与弥补传输层是
49、对网络层的加强与弥补。TCP和和UDP是传输层的两大协议是传输层的两大协议。 端口分配端口分配有两种基本的方式:全局端口分配和本地端有两种基本的方式:全局端口分配和本地端口分配。口分配。 在因特网中采用一个在因特网中采用一个三元组三元组(协议,主机地址,端口(协议,主机地址,端口号)来全局惟一地标识一个进程。用一个号)来全局惟一地标识一个进程。用一个五元组五元组(协(协议议,本地主机地址本地主机地址,本地端口号本地端口号,远地主机地址远地主机地址,远地端口远地端口号)来描述两个进程的关联。号)来描述两个进程的关联。 TCP和和UDP都是提供进程通信能力的传输层协议。它都是提供进程通信能力的传输
50、层协议。它们各有一套们各有一套端口号端口号,两套端口号相互独立,都是从,两套端口号相互独立,都是从0到到65535。 TCP和和UDP在计算校验和时引入在计算校验和时引入伪首部伪首部的目的是为了的目的是为了能够验证数据是否传送到了正确的信宿端。能够验证数据是否传送到了正确的信宿端。45 为了实现数据的可靠传输,为了实现数据的可靠传输,TCP在应用在应用进程间建立传输连接。进程间建立传输连接。TCP在建立连接在建立连接时采用时采用三次握手方法解决重复连接的问三次握手方法解决重复连接的问题题。在拆除连接时采用。在拆除连接时采用四次握手方法解四次握手方法解决数据丢失问题决数据丢失问题。 建立连接前,
51、服务器端首先建立连接前,服务器端首先被动打开其被动打开其熟知的端口熟知的端口,对端口进行监听。当客户,对端口进行监听。当客户端要和服务器建立连接时,发出一个主端要和服务器建立连接时,发出一个主动打开端口的请求,客户端一般使用临动打开端口的请求,客户端一般使用临时端口。时端口。46 TCP采用的最基本的采用的最基本的可靠性技术可靠性技术包括流量控制、拥包括流量控制、拥塞控制和差错控制。塞控制和差错控制。 TCP采用采用滑动窗口协议实现流量控制滑动窗口协议实现流量控制,滑动窗口协,滑动窗口协议通过发送方窗口和接收方窗口的配合来完成传输议通过发送方窗口和接收方窗口的配合来完成传输控制。控制。 TCP
52、的的拥塞控制拥塞控制利用发送方的窗口来控制注入网络利用发送方的窗口来控制注入网络的数据流的速度。发送窗口的大小取通告窗口和拥的数据流的速度。发送窗口的大小取通告窗口和拥塞窗口中小的一个。塞窗口中小的一个。 TCP通过通过差错控制差错控制解决数据的毁坏、重复、失序和解决数据的毁坏、重复、失序和丢失等问题。丢失等问题。 UDP在在IP协议上增加了进程通信能力。此外协议上增加了进程通信能力。此外UDP通通过可选的校验和提供简单的差错控制。但过可选的校验和提供简单的差错控制。但UDP不提不提供流量控制和数据报确认供流量控制和数据报确认 。返回返回47 作业 7.6 习题 3简述TCP连接建立三次握手过
53、程。48 例、主机A向主机B连续发送了两个TCP报文段,其序号分别是370和700。试问:1)第一个报文段携带了多少字节的数据?2)主机B收到第一个报文段后发回的确认号应是多少?3)主机B收到第二个报文段后发回的确认号是880,试问A发送的第二个报文段中的数据有多少字节?4)如果A发送的第一个报文段丢了,但第二个报文段到达了B。B在第二个报文段到达后向A发送确认,试问这个确认号应为多少?49源端口目的端口长 度检验和数 据首 部IP 数据报2222字节发送在前数 据首 部UDP 用户数据报用户数据报 UDP 有两个字段:数据字段和首部字段。首部字段有 8 个字节,由 4 个字段组成,每个字段都
54、是两个字节。 练习练习MAC地址地址08 00 20 1B 67 45 00 80 C8 34 B2 A7 08 0045 00 00 3E 59 27 00 00 80 11 80 0C 8C 8606 76 00 35 00 2A 5D EC 00 01 01 .00 01 数据数据34字节字节 24 6E 8C 86 24 01IP协议协议204820字节字节IP标头标头UDP标头标头UDP数据数据头部长头部长目的地址目的地址140.134.36.1源地址源地址140.134.36.110IP包长度包长度源端口源端口1654,目的端口目的端口53信息长度信息长度这是客户发送给服务器还是服务器发给客户的数据包?协议字段协议字段17,UDPUDP包分析512011考题 主机X向主
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业出资合同范本
- 农村厨子采购合同范本
- 勘察设计合同范本全国
- 2024年河南信阳一五四医院招聘笔试真题
- 2024重庆镜辰美科技有限公司招聘笔试参考题库附带答案详解
- 出售养殖用地合同范本
- 人教版七年级历史与社会上册 3.3.1耕海牧渔教学设计
- 买窑洞合同范本
- 临勤合同范本
- 助播商务合同范本
- 怎样处理课堂突发事件
- 采矿学课程设计-隆德煤矿1.8Mta新井开拓设计
- 中药药剂学讲义(英语).doc
- 【课件】Unit1ReadingforWriting课件高中英语人教版(2019)必修第二册
- Q∕GDW 10799.6-2018 国家电网有限公司电力安全工作规程 第6部分:光伏电站部分
- 滴灌工程设计示例
- 配套模块an9238用户手册rev
- 医院室外管网景观绿化施工组织设计
- 霍尼韦尔DDC编程软件(CARE)简介
- 论《说文解字》中的水文化
- 德龙自卸车合格证扫描件(原图)
评论
0/150
提交评论