第7章传输层协议TCP与UDP

上传人:大米 文档编号:568016607 上传时间:2024-07-23 格式:PPT 页数:100 大小:1.95MB
返回 下载 相关 举报
第7章传输层协议TCP与UDP_第1页
第1页 / 共100页
第7章传输层协议TCP与UDP_第2页
第2页 / 共100页
第7章传输层协议TCP与UDP_第3页
第3页 / 共100页
第7章传输层协议TCP与UDP_第4页
第4页 / 共100页
第7章传输层协议TCP与UDP_第5页
第5页 / 共100页
点击查看更多>>
资源描述

《第7章传输层协议TCP与UDP》由会员分享,可在线阅读,更多相关《第7章传输层协议TCP与UDP(100页珍藏版)》请在金锄头文库上搜索。

1、第第7章章 传输层协议传输层协议TCP与与UDP任课教师任课教师 卢豫开卢豫开 传输层协议传输层协议TCPTCP与与UDPUDP 传输层提供了面向连接的传输控制协议传输层提供了面向连接的传输控制协议(Transmission Control Protocol ,TCPTransmission Control Protocol ,TCP)和无连接)和无连接的用户数据报协议(的用户数据报协议(User Datagram Protocol ,UDPUser Datagram Protocol ,UDP),),将任意数据通过网络从发送方传输到接收方。将任意数据通过网络从发送方传输到接收方。 TCPTC

2、P提供可靠的、可控的传输服务,适合于各种网提供可靠的、可控的传输服务,适合于各种网络环境。大部分络环境。大部分InternetInternet应用都使用应用都使用TCPTCP,因为它能够,因为它能够确保数据不会丢失和不被破坏,确保数据不会丢失和不被破坏, UDP UDP提供的服务轻便但不可靠,适合于网络本身可提供的服务轻便但不可靠,适合于网络本身可靠性较高的网络环境。靠性较高的网络环境。第第7 7章章 传输层协议传输层协议TCPTCP与与UDPUDP学学 习习 要要 点点TCPTCP协议协议TCPTCP段格式(重点)段格式(重点)TCPTCP连接(重点)连接(重点)TCPTCP可靠性(重点)可

3、靠性(重点)UDPUDP协议协议UDPUDP数据报格式数据报格式7.1 7.1 传输层协议概述(传输层协议概述(P138P138)传输层介于网络层与应用层之间。传输层介于网络层与应用层之间。TCPTCP和和UDPUDP协议位于传输层,在协议位于传输层,在TCP/IPTCP/IP协议栈中的位置如图:协议栈中的位置如图:传输层协议概述传输层协议概述传输层协议的基本功能:传输层协议的基本功能:创建进程到进程的通信。进程之间通过传输层进行通信。创建进程到进程的通信。进程之间通过传输层进行通信。提供控制机制,如流量控制(提供控制机制,如流量控制(Flow ControlFlow Control)、差错控

4、制。)、差错控制。定义端到端用户之间的流量控制。定义端到端用户之间的流量控制。提供连接机制。在数据传输开始,通信双方需要建立连接;提供连接机制。在数据传输开始,通信双方需要建立连接;在传输过程中,双方需要继续通过协议进行通信,并验证在传输过程中,双方需要继续通过协议进行通信,并验证数据是否被正确接收;数据传输完成后,任一方可以关闭数据是否被正确接收;数据传输完成后,任一方可以关闭连接。连接。7.1.1 TCP7.1.1 TCP协议(协议(P139P139)1. TCPTCP协议的特性协议的特性面向连接。它向应用程序提供面向连接的服务,两个需要通面向连接。它向应用程序提供面向连接的服务,两个需要

5、通过过TCPTCP进行数据传输的进程之间首先必须建立一个进行数据传输的进程之间首先必须建立一个TCPTCP连接,连接,并且在数据传输完成后释放连接。并且在数据传输完成后释放连接。全双工。只要建立了全双工。只要建立了TCPTCP连接,就能在两个进程之间进行双向连接,就能在两个进程之间进行双向的数据传输服务,但是这种传输只是端到端的传输,不支持的数据传输服务,但是这种传输只是端到端的传输,不支持广播和多播。广播和多播。可靠。可靠。TCPTCP提供流量控制,解决了接收方不能及时处理数据的提供流量控制,解决了接收方不能及时处理数据的问题;提供拥塞控制,解决因网络拥堵带来的数据丢失问题;问题;提供拥塞控

6、制,解决因网络拥堵带来的数据丢失问题;提供差错控制解决数据被破坏、重复、失序和丢失的问题,提供差错控制解决数据被破坏、重复、失序和丢失的问题,从而保证数据传输的可靠性。从而保证数据传输的可靠性。RFC793RFC793“TRANSMISSION CONTROL PROTOCOL DARPA INTERNET TRANSMISSION CONTROL PROTOCOL DARPA INTERNET PROGRAM PROTOCOL SPECIFICATIONPROGRAM PROTOCOL SPECIFICATION”是是TCPTCP协议的正式规范文件。协议的正式规范文件。TCPTCP协议协议基

7、于字节流。提供面向字节流的服务,两个建立了基于字节流。提供面向字节流的服务,两个建立了TCPTCP连连接的应用进程之间交换的是字节流。发送进程以字节流形接的应用进程之间交换的是字节流。发送进程以字节流形式发送数据,接收进程也把数据作为字节流来接收。在传式发送数据,接收进程也把数据作为字节流来接收。在传输层上数据被当做没有信息的字节序列来对待。输层上数据被当做没有信息的字节序列来对待。2. TCP2. TCP协议的功能协议的功能TCPTCP安全、稳定,但是效率不高,占用资源较多。安全、稳定,但是效率不高,占用资源较多。TCPTCP的作用是在计算机之间可靠地传输数据。的作用是在计算机之间可靠地传输

8、数据。目前大多数目前大多数InternetInternet信息交付服务都使用信息交付服务都使用TCPTCP协议,这样协议,这样便于开发人员专注于服务本身,而不是处理可靠性和数据便于开发人员专注于服务本身,而不是处理可靠性和数据交付问题。交付问题。7.1.2 UDP7.1.2 UDP协议(协议(P139P139)RFC768RFC768“User Datagram ProtocolUser Datagram Protocol”是是UDPUDP协议的正式规范文件。协议的正式规范文件。1. UDP1. UDP协议的特性协议的特性传输数据之前通信双方不需要建立连接,发出的每一个传输数据之前通信双方不需

9、要建立连接,发出的每一个UDPUDP数数据报都是独立的,携带了目的地址,可选择不同的路径到达。据报都是独立的,携带了目的地址,可选择不同的路径到达。因为不需要建立连接,因此不存在连接建立的时延。因为不需要建立连接,因此不存在连接建立的时延。传输数据不需要维护连接状态,包括收发状态等,这样一台传输数据不需要维护连接状态,包括收发状态等,这样一台服务器可同时向多个客户端传输相同的数据,可以多播。服务器可同时向多个客户端传输相同的数据,可以多播。UDPUDP数据报首部很短,只有数据报首部很短,只有8 8字节,相对于字节,相对于TCPTCP的的2020字节首部的字节首部的开销要小很多。开销要小很多。吞

10、吐量不受流量控制算法的调节,只受应用软件生成数据的吞吐量不受流量控制算法的调节,只受应用软件生成数据的速率、传输带宽、信源和信宿主机性能的限制。速率、传输带宽、信源和信宿主机性能的限制。2. UDP2. UDP协议的功能协议的功能UDPUDP避免了避免了TCPTCP面向连接的消耗,反而提高了传输效率,适面向连接的消耗,反而提高了传输效率,适合于简单查询及响应类的通信。合于简单查询及响应类的通信。只需要简单数据交换的应用,例如只需要简单数据交换的应用,例如DNSDNS服务,它不需要复服务,它不需要复杂的可靠性保证机制,这样,利用杂的可靠性保证机制,这样,利用UDPUDP来传输数据既可以来传输数据

11、既可以节省系统开销又提高了网络的传输效率。节省系统开销又提高了网络的传输效率。不需要关心数据的差错控制和流量控制的应用。不需要关心数据的差错控制和流量控制的应用。实时性要求较高但可承受一定的数据错误的应用,如实时实时性要求较高但可承受一定的数据错误的应用,如实时语音传输、视频通信等。语音传输、视频通信等。实现一对多数据发送的应用,例如广播和多播。实现一对多数据发送的应用,例如广播和多播。UDPUDP的可靠性由用户的应用程序来决定。的可靠性由用户的应用程序来决定。TCPTCP与与UDPUDP的区别(的区别(P140P140)TCPTCPUDPUDP面向连接面向连接无连接无连接可靠性高可靠性高效率

12、高效率高一次传输大量报文一次传输大量报文一次传输少量报文一次传输少量报文复杂复杂简单简单7.1.3 7.1.3 进程之间的通信(进程之间的通信(P140P140)进程之间通信与主机之间通信进程之间通信与主机之间通信1. 1. 进程标识进程标识为保证数据能够正确地到达指定的目的进程,必须显式地为保证数据能够正确地到达指定的目的进程,必须显式地给出全局惟一的目的进程标识符给出全局惟一的目的进程标识符要全局惟一地标识一个进程,必须采用一个三元组(协议,要全局惟一地标识一个进程,必须采用一个三元组(协议,主机地址,端口号)主机地址,端口号)两个进程之间的关联用一个五元组(协议,本地主机地址,两个进程之

13、间的关联用一个五元组(协议,本地主机地址,远程主机地址,本地端口号,远程端口号)远程主机地址,本地端口号,远程端口号)进程之间的通信进程之间的通信2. 2. 端口号端口号端口号是端口号是1616位(位(bitbit)的标识符,因此取值范围是)的标识符,因此取值范围是0 06553565535端口分配有两种方式,一种是全局端口分配,采用集中控制端口分配有两种方式,一种是全局端口分配,采用集中控制方式,由权威管理机构针对特定应用程序统一分配;另一种方式,由权威管理机构针对特定应用程序统一分配;另一种是本地端口分配,由本地操作系统根据请求动态分配。是本地端口分配,由本地操作系统根据请求动态分配。通常

14、小于通常小于10241024的端口号用作公认的端口号用作公认(wellknown)(wellknown)端口号,按全端口号,按全局方式分配,又称为注册端口或保留端口。服务器必须使用局方式分配,又称为注册端口或保留端口。服务器必须使用公认端口号。公认端口号。1024-655351024-65535端口范围称为自由端口或动态端口,以本地方端口范围称为自由端口或动态端口,以本地方式分配,可以临时申请使用。客户端一般采用临时端口号。式分配,可以临时申请使用。客户端一般采用临时端口号。进程之间的通信进程之间的通信3. 3. 套接字(套接字(SocketSocket)将传输层协议(将传输层协议(TCP/U

15、DPTCP/UDP)、目的)、目的IPIP地址和端口号地址和端口号3 3个参数个参数结合起来称为套接字(结合起来称为套接字(SocketSocket)。分为面向连接的流式套)。分为面向连接的流式套接字和无连接的数据报套接字。接字和无连接的数据报套接字。套接字之间连接过程的三步骤:套接字之间连接过程的三步骤:(1 1)服务器监听。服务器端套接字处于等待连接的状态,)服务器监听。服务器端套接字处于等待连接的状态,实时监控网络状态。实时监控网络状态。(2 2)客户端请求。客户端套接字提出连接请求,要连接)客户端请求。客户端套接字提出连接请求,要连接的目标是服务器端的套接字。的目标是服务器端的套接字。

16、(3 3)连接确认。服务器监听到客户端请求,响应,把服)连接确认。服务器监听到客户端请求,响应,把服务器套接字发送给客户端,客户端确认,连接完成。务器套接字发送给客户端,客户端确认,连接完成。7.2 TCP7.2 TCP段格式(段格式(P142P142)传输层的传输层的TCPTCP数据分组称为报文段。数据分组称为报文段。TCPTCP将来自应用层的数据分块并封装成将来自应用层的数据分块并封装成TCPTCP段进行发送。段进行发送。TCPTCP段封装在段封装在IPIP数据报中,然后再封装成数据链路层中的帧。数据报中,然后再封装成数据链路层中的帧。TCPTCP段封装段封装TCPTCP段格式段格式 7.

17、1.2 TCP 7.1.2 TCP首部格式(首部格式(P142P142)TCPTCP组成字段组成字段源端口(源端口(Source PortSource Port)和目的端口()和目的端口(Destination PortDestination Port)序列号(序列号(Sequence NumberSequence Number)32bit32bit确认号(确认号(Acknowledgment NumberAcknowledgment Number)32bit32bit首部长度(首部长度(Header lengthHeader length)4bit4bit,以,以4 4为单位,可以在为单位,

18、可以在5(5x4=20)5(5x4=20)到到15(15x4=60)15(15x4=60)之间。回顾之间。回顾P82P82的的IPIP报的首部长度。报的首部长度。标志(标志(FlagsFlags)6bit,6bit,定义定义6 6种控制或标志,用在种控制或标志,用在TCPTCP的流量控制、的流量控制、连接建立和终止等。连接建立和终止等。窗口大小(窗口大小(Window sizeWindow size)16bit16bit,指明,指明TCPTCP接收方的缓冲区长度。接收方的缓冲区长度。最大最大6553565535字节,当字节,当0 0时发送方应停止发送。时发送方应停止发送。校验和(校验和(Che

19、cksumChecksum)UDPUDP校验和可选,校验和可选,TCPTCP校验和是强制性的。校验和是强制性的。紧急指针(紧急指针(Urgent PointerUrgent Pointer),),16bit16bit,指向缓冲区一个偏移量,指向缓冲区一个偏移量,所指向的一段数据不必等待缓冲区数据积累,直接发送。所指向的一段数据不必等待缓冲区数据积累,直接发送。选项(选项(OptionsOptions),最大),最大4040字节。字节。TCPTCP标志(标志(P143P143)标志志含含义URG表表示示紧急急指指针是是否否有有效效。值为1时表表示示紧急急指指针有有效效,有有高高优先先级的的信信息

20、需要息需要传输ACK表表示示确确认号号是是否否合合法法。值为1表表示示合合法法,值为0时表表示示段段中中不不包包含含确确认信息,确信息,确认号被忽略号被忽略PSH推推送送数数据据,一一旦旦接接收收到到PSH值为1(带有有Push标志志位位)的的报文文段段,接接收收方方必必须不不缓存存数数据据,将将数数据据直直接接传递给应用用层协议,而而不不必必等等到到缓冲区冲区满时才才传送送RST对连接接进行行复复位位,用用于于复复位位因因某某种种原原因因引引起起出出现的的错误连接接(完完全全关关闭),也也用用于于拒拒绝非非法法数数据据和和请求求。值为1时表表示示请求求重重新新连接接,通常是通常是发生了某些生

21、了某些错误SYN在在连接接建建立立时对序序列列号号进行行同同步步。当当建建立立一一个个新新的的连接接时,SYN值变为1。在在连接接请求求(Connection Request)中中,SYN=1,ACK=0;连接响接响应(Connection Accepted)时,SYN=1,ACK= 1 FIN终止止连接接(当当然然它它本本身身并并不不终止止连接接),值为1时表表示示释放放连接接,表表明明发送方已送方已经没有数据没有数据发送了送了7.22 7.22 选项(选项(P144P144)2.无操作(无操作(NOP)用作选项之间的填充。用作选项之间的填充。1. 1. 选项列表结束(选项列表结束(EOPE

22、OP) 在选项列表末尾,只能用一次,表示首部已经没有更多的选项,在选项列表末尾,只能用一次,表示首部已经没有更多的选项,这个选项之后就是有效载荷这个选项之后就是有效载荷( (来自应用层的数据来自应用层的数据) )选项选项3.3.最大段长度(最大段长度(Maximum Segment SizeMaximum Segment Size,MSSMSS) 定义可以定义可以被被接收方接收的接收方接收的TCPTCP段段数据的最大长度数据的最大长度,而不是报文而不是报文最大长度。最大长度。MSSMSS值在值在0 0到到6553565535字节,默认值为字节,默认值为536536字节。字节。注意:注意:不要混

23、淆不要混淆MSSMSS和和MTUMTU。MTUMTU是数据链路层能够放在以太帧中的数据是数据链路层能够放在以太帧中的数据长度,长度,Ethernet IIEthernet II的的MTUMTU是是15001500字节(见字节(见P32P32Ethernet IIEthernet II帧帧格式格式和和P88P88 MTU MTU)。)。MSSMSS是能够放在是能够放在TCPTCP首部后面的数据长度,首部后面的数据长度,对于对于Ethernet IIEthernet II是是1500-20-20=14601500-20-20=1460字节。字节。选项选项4.4.窗口扩大因子(窗口扩大因子(Wind

24、ow ScaleWindow Scale)TCPTCP的窗口大小(的窗口大小( Window sizeWindow size )定义了滑动窗口值,)定义了滑动窗口值,范围是范围是065535065535字节。当通信双方需要扩大窗口,在连字节。当通信双方需要扩大窗口,在连接开始时就可以使用这个窗口扩大因子来定义更大的接开始时就可以使用这个窗口扩大因子来定义更大的窗口。窗口。新的窗口大小新的窗口大小= =首部定义的窗口大小首部定义的窗口大小x2x2窗口扩大因子窗口扩大因子TCP/IPTCP/IP所容许的窗口扩大因子最大值是所容许的窗口扩大因子最大值是1414,这就表示滑,这就表示滑动窗口的最大窗口

25、值可以是动窗口的最大窗口值可以是2 21616x2x21414=2=23030选项选项5.5.时间戳(时间戳(TimestampTimestamp)时间戳(时间戳(TimestampTimestamp)和时间戳回送应答()和时间戳回送应答(Timestamp Echo Timestamp Echo ReplyReply)时间戳的一个功能是测量往返时间。发送端填写时间戳,接时间戳的一个功能是测量往返时间。发送端填写时间戳,接收端在发送确认报文时将收到的时间戳收端在发送确认报文时将收到的时间戳COPYCOPY到时间戳应答字到时间戳应答字段,原发送端收到这个确认后就可以计算出往返时间。段,原发送端收

26、到这个确认后就可以计算出往返时间。时间戳另一个功能是防止序列号绕回。因为序列号只有时间戳另一个功能是防止序列号绕回。因为序列号只有3232位,位,在高速连接中可能发生绕回而造成重复同一个值,因此用时在高速连接中可能发生绕回而造成重复同一个值,因此用时间戳和序列号的组合来标识一个报文段。间戳和序列号的组合来标识一个报文段。7.2.3 7.2.3 验证分析验证分析TCPTCP段格式段格式(P145P145)7.37.3TCPTCP连接连接(P146P146) IP IP是无连接协议,而是无连接协议,而TCPTCP是面向连接的协议。是面向连接的协议。 这里的关键是这里的关键是TCPTCP的连接是虚拟

27、的,不是物理的连接是虚拟的,不是物理的连接。的连接。TCPTCP用用IPIP的服务把单个的报文段交付给的服务把单个的报文段交付给接收方,但是接收方,但是TCPTCP控制这个连接,在源节点到目控制这个连接,在源节点到目的节点之间建立一条虚通道,属于同一个报文的的节点之间建立一条虚通道,属于同一个报文的所有所有TCPTCP段都从这个虚通道传送。段都从这个虚通道传送。 发送数据之前,必须在双方之间建立一条连接。发送数据之前,必须在双方之间建立一条连接。通常是建立一条客户端到服务器的通常是建立一条客户端到服务器的TCPTCP连接连接, ,连连接建立后,双方通过连接通道进行数据传输。接建立后,双方通过连

28、接通道进行数据传输。 7.37.3.1.1TCPTCP连接连接建立(建立(P146P146)1. 1. 三次握手建立连接三次握手建立连接 为了避免重复连接,在建立为了避免重复连接,在建立TCPTCP连接时采用三次握手连接时采用三次握手(Three-way HandshakThree-way Handshak),整个连接过程分为),整个连接过程分为3 3步。步。TCPTCP连接连接建立建立(1 1)客户端(源主机)向服务器(目的主机)发送)客户端(源主机)向服务器(目的主机)发送TCPTCP连连接请求接请求(SYN(SYN段段) ),标志,标志ACK=0, SYN=1ACK=0, SYN=1;序

29、列号是客户端初;序列号是客户端初始序列号。目的端口号是服务器端口号。始序列号。目的端口号是服务器端口号。(2 2)服务器在指定端口等待连接,收到)服务器在指定端口等待连接,收到TCPTCP连接请求后,连接请求后,回应回应1 1个个TCPTCP连接应答连接应答(SYC/ACK(SYC/ACK段段) ),标志,标志ACK=1, SYN=1ACK=1, SYN=1;序列号是服务器初始序列号;确认序列号是客户端初始序列号是服务器初始序列号;确认序列号是客户端初始序列号加序列号加1 1。目的端口号是客户端的端口号。目的端口号是客户端的端口号。(3 3)客户端收到服务器的应答,再向服务器发送)客户端收到服

30、务器的应答,再向服务器发送1 1个个TCPTCP连连接确认接确认(ACK(ACK段段) ),标志,标志ACK=1ACK=1,SYN=0SYN=0;序列号是客户端初;序列号是客户端初始序列号加始序列号加1,1,;确认序列号是服务器初始序列号加;确认序列号是服务器初始序列号加1 1。目。目的端口号是服务器端口号。的端口号是服务器端口号。经过以上三次握手后,经过以上三次握手后,TCPTCP连接正式建立,双方交换并确认连接正式建立,双方交换并确认了对方的初始序列号,可以通过连接相互传输数据了。了对方的初始序列号,可以通过连接相互传输数据了。TCPTCP连接建立连接建立2. 2. 验证分析三次握手建立连

31、接验证分析三次握手建立连接以以1 1个客户端浏览器访问个客户端浏览器访问WebWeb服务器为例,抓取服务器为例,抓取TCPTCP连接建连接建立三次握手过程中的立三次握手过程中的3 3个数据包。个数据包。验证分析三次握手建立连接验证分析三次握手建立连接TCPTCP连接建立第连接建立第1 1次握手过程中的数据包分析次握手过程中的数据包分析验证分析三次握手建立连接验证分析三次握手建立连接TCPTCP连接建立第连接建立第2 2次握手过程中的数据包分析次握手过程中的数据包分析验证分析三次握手建立连接验证分析三次握手建立连接TCPTCP连接建立第连接建立第3 3次握手过程中的数据包分析次握手过程中的数据包

32、分析三次握手第三次握手第1 1次次三次握手第三次握手第2 2次次三次握手第三次握手第3 3次次TCPTCP段格式段格式0 0 0 0 0 0三次握手第三次握手第1 1次次 ACK=0ACK=0 SYN=1 SYN=1 第第4848字节是字节是0x020x02三次握手第三次握手第2 2次次 ACK=1ACK=1 SYN=1 SYN=1 第第48字节是字节是0x120x12三次握手第三次握手第3 3次次 ACK=1ACK=1 SYN=0 SYN=0 第第4848字节是字节是0x100x10HLENHLEN的值单位为的值单位为4 4包头长包头长=HLEN=HLEN的值的值4 4TCPTCP连接连接建

33、立建立3. 3. 半开连接半开连接 P149P149服务器收到服务器收到SYNSYN请求后,在发送请求后,在发送SYN/ACKSYN/ACK给客户端之前,服给客户端之前,服务器要分配一个数据区以服务于这个即将形成的务器要分配一个数据区以服务于这个即将形成的TCPTCP连接。连接。一般将收到一般将收到SYNSYN而还未收到客户端的而还未收到客户端的ACKACK时的连接状态称为时的连接状态称为半开连接(半开连接(Half-open ConnectionHalf-open Connection)或半打开连接)或半打开连接半开连接通信序列按以下顺序发生:半开连接通信序列按以下顺序发生:客户端客户端 S

34、YN SYN 服务器服务器客户端客户端 ACK SYN ACK SYN 服务器服务器客户端客户端 ACK SYN -首选项首选项-Protocol-TCP-Protocol-TCP,清除,清除“Relative sequence numbersRelative sequence numbers”服务器开始传输一个报文段服务器开始传输一个报文段下一个序列号下一个序列号=当前序列号当前序列号+要传输的数据长度要传输的数据长度 下一个序列号下一个序列号1519826911=1519825451+1460确认号确认号1466272879服务器传输下一个报文段服务器传输下一个报文段下一个序列号下一个序列

35、号=当前序列号当前序列号+要传输的数据长度,要传输的数据长度,连续发送确认连续发送确认号不变。号不变。下一个序列号下一个序列号1519828371=1519826911+1460连续发送确认号不变连续发送确认号不变1466272879客户端发送确认报文段客户端发送确认报文段序列号为对方的确认号,序列号为对方的确认号,确认号确认号=已已收到的对方序列号收到的对方序列号+收到数收到数据的长度据的长度序列号为对方的确认号序列号为对方的确认号1466272879确认号确认号= =已收到的对方序列号已收到的对方序列号+ +收到数据的长度收到数据的长度1519828371=1519826911+1460服

36、务器继续发送数据服务器继续发送数据序列号为对方确认号,序列号为对方确认号,确认号确认号=已已收到的对方序列号收到的对方序列号+收到数收到数据的长度。据的长度。下一个序列号下一个序列号1519829831=1519828371+1460确认号确认号= =已收到的对方序列号已收到的对方序列号+ +收到数据的长度收到数据的长度1466272879+0序列号为对方确认号序列号为对方确认号1519828371客户端发往服务器的确认报文段客户端发往服务器的确认报文段TCP段长度段长度0字节,序列号字节,序列号Seq=430935114,确认号确认号Ack=3261538209。服务器开始传输一个报文段服务

37、器开始传输一个报文段序列号为对方确认号,序列号为对方确认号,下一个序列号下一个序列号=当前序列号当前序列号+要传输的数要传输的数据长度;据长度;确认号确认号=已已收到的对方序列号收到的对方序列号+收到数据的长度。收到数据的长度。序列号为对方确认号序列号为对方确认号3261538209下一个序列号下一个序列号32615396493261539649=3261538209+1440确认号确认号= =已收到的对方的序列号已收到的对方的序列号+ +收到数据的长度收到数据的长度430935114+0服务器传输下一个报文段服务器传输下一个报文段下一个序列号下一个序列号=当前序列号当前序列号+要传输的数据长

38、度,要传输的数据长度,连续发送确连续发送确认号不变。认号不变。下一个序列号下一个序列号3261541089=3261539649+1440连续发送确认号不变连续发送确认号不变430935114客户端发送确认报文段客户端发送确认报文段序列号为对方确认号,序列号为对方确认号,确认号确认号=已已收到的对方序列号收到的对方序列号+收到数收到数据的长度。据的长度。序列号为对方的确认号序列号为对方的确认号1466272879序列号是上一个从服务器发给客户端的序列号是上一个从服务器发给客户端的TCPTCP段的段的确认号确认号430935114430935114。确认号确认号= =上次对方序列号上次对方序列号

39、+ +收到数据的长度收到数据的长度3261541089=3261539649+1440服务器继续发送数据服务器继续发送数据序列号为对方确认号,序列号为对方确认号,下一个序列号下一个序列号=当前序列号当前序列号+要传输的数要传输的数据长度;据长度;确认号确认号=已已收到的对方序列号收到的对方序列号+收到数据的长度。收到数据的长度。确认号确认号= =上次对方序列号上次对方序列号+ +收到数据的长度收到数据的长度430935114+0=430935114序列号为对方确认号序列号为对方确认号32615410893261541089下一个序列号下一个序列号326154252932615425293261

40、541089326154108914401440Relative sequence number清除清除“Relative sequence number”复选框复选框要发送的确认号已收到的序列号要发送的确认号已收到的序列号+ +已收到数据的字节数已收到数据的字节数要发送的确认号已收到的序列号要发送的确认号已收到的序列号+ +已收到数据的字节数已收到数据的字节数373947859+1460=373949319373947859+1460=373949319816998641+0=816998641816998641+0=816998641373949319+1460=3739507993739

41、49319+1460=373950799ACKACK确认报文不消耗序列号。确认报文不消耗序列号。连续发送的连续发送的TCPTCP序列报文段的确认号不变。序列报文段的确认号不变。7.3.10 7.3.10 SYNSYN洪泛攻击及其防范洪泛攻击及其防范(P161P161)1. 1. 直接攻击直接攻击攻击者使用未经伪装的攻击者使用未经伪装的IPIP地址快速地发送地址快速地发送SYNSYN包。包。这种攻击要想得逞,攻击者还必须阻止其系统响应这种攻击要想得逞,攻击者还必须阻止其系统响应SYN/ACKSYN/ACK。攻击者可以通过设置防火墙规则阻止一切要到达服务器攻击者可以通过设置防火墙规则阻止一切要到达

42、服务器的数据包(除了的数据包(除了SYNSYN),或者阻止一切传入的包来使),或者阻止一切传入的包来使SYN-SYN-ACKACK包在到达本地包在到达本地TCPTCP处理程序之前就被丢弃了。处理程序之前就被丢弃了。非常容易抵御,用一个简单的防火墙规则阻止带有攻击非常容易抵御,用一个简单的防火墙规则阻止带有攻击者者IPIP地址的数据包。地址的数据包。2. 2. 欺骗式攻击欺骗式攻击攻击者用有效的攻击者用有效的IPIP和和TCPTCP首部去替换和重新生成原始首部去替换和重新生成原始IPIP报文,并让位于伪装报文,并让位于伪装IPIP地址上的主机必须不能响应任地址上的主机必须不能响应任何发送给它们的

43、何发送给它们的SYN/ACKSYN/ACK包。包。攻击者有两种方法欺骗,一种是仅伪装一个源攻击者有两种方法欺骗,一种是仅伪装一个源IPIP地址,地址,另一种是伪装许多源地址,让伪装地址上的主机不会另一种是伪装许多源地址,让伪装地址上的主机不会响应响应SYN-ACKSYN-ACK包。包。最好的防御方法就是尽可能地阻塞源地址相近的欺骗最好的防御方法就是尽可能地阻塞源地址相近的欺骗数据包。数据包。3. 3. 分布式攻击分布式攻击攻击者运用在网络中主机数量上的优势而发动的分布攻击者运用在网络中主机数量上的优势而发动的分布式式SYNSYN洪泛攻击将更加难以被阻止。主机群可以用直接洪泛攻击将更加难以被阻止

44、。主机群可以用直接攻击,也可以更进一步让每台主机都运用欺骗攻击。攻击,也可以更进一步让每台主机都运用欺骗攻击。要阻止这类攻击目前还是一个挑战。要阻止这类攻击目前还是一个挑战。7.4 TCP7.4 TCP可靠性(可靠性(P161P161)7.4.1 7.4.1 TCPTCP差错控制差错控制1. 1. 校验和校验和-数据损坏可以通过数据损坏可以通过TCPTCP的校验和检测出来。的校验和检测出来。2. 2. 确认确认-TCPTCP采用确认来证实收到了报文段。采用确认来证实收到了报文段。ACKACK的确认机的确认机制最常用的规则有以下几种:制最常用的规则有以下几种:(1)ACK(1)ACK报文段不需要

45、确认,也不消耗序列号。报文段不需要确认,也不消耗序列号。(2)(2)发送数据时捎带确认,给出对方所期望接收的下一个序列发送数据时捎带确认,给出对方所期望接收的下一个序列号,以减少通信量。号,以减少通信量。(3)(3)当收到的序列号比期望的序列号大,立即发送当收到的序列号比期望的序列号大,立即发送ACKACK报文段,报文段,让对方快速重传丢失的报文段。让对方快速重传丢失的报文段。TCPTCP采用的可靠性技术主要包括差错控制、流量控制和拥塞控制。采用的可靠性技术主要包括差错控制、流量控制和拥塞控制。TCPTCP差错控制差错控制(4)(4)当收到丢失的报文段,立即发送当收到丢失的报文段,立即发送AC

46、KACK报文段,告知对方已经报文段,告知对方已经收到了丢失的报文段。收到了丢失的报文段。(5)(5)当收到重复的报文段,立即发送当收到重复的报文段,立即发送ACKACK报文段进行确认。这就报文段进行确认。这就解决了报文段丢失所带来的问题。解决了报文段丢失所带来的问题。3. 3. 重传重传-当当1 1个报文段损坏、丢失或被延迟了,就要重传个报文段损坏、丢失或被延迟了,就要重传。(1)(1)超时重传:为每一个发送的超时重传:为每一个发送的TCPTCP报文段设置报文段设置1 1个超时重传个超时重传(Retransmission Time Out, RTORetransmission Time Out

47、, RTO)计时器,计时器时间一)计时器,计时器时间一到,就可认为该报文段损坏或丢失,需要重传。到,就可认为该报文段损坏或丢失,需要重传。(2)(2)快重传:当快重传:当1 1个报文段丢失,会造成很多失序报文到达接个报文段丢失,会造成很多失序报文到达接收方。接收方以收方。接收方以ACKACK通知发送方,发送方收到通知发送方,发送方收到3 3个重复的个重复的ACKACK后立即重传这个丢失的报文段。后立即重传这个丢失的报文段。TCPTCP差错控制差错控制4. 4. 失序报文段的处置失序报文段的处置不丢弃那些失序的报文段,而是暂时存储下来,并把它们标不丢弃那些失序的报文段,而是暂时存储下来,并把它们

48、标志为失序报文段,直到丢失的报文段到达。注意失序的报文志为失序报文段,直到丢失的报文段到达。注意失序的报文段并不交付到进程。段并不交付到进程。TCPTCP保证数据必须按序交付到进程。保证数据必须按序交付到进程。5. 5. 重复报文段的处置重复报文段的处置接收方根据序列号判断是否是重复报文段,重复报文段只需接收方根据序列号判断是否是重复报文段,重复报文段只需简单地丢弃即可。简单地丢弃即可。6. 6. 选择确认(选择确认(SACKSACK)在一些新的在一些新的TCPTCP实现中支持实现中支持选择确认,报告时序和重复报文选择确认,报告时序和重复报文段,将其作为首部选项的一部分。段,将其作为首部选项的

49、一部分。SACKSACK并不是代替并不是代替ACKACK而是而是向发送方报告附加的信息向发送方报告附加的信息。7.4.2 7.4.2 TCPTCP流量控制流量控制(P163P163)1. 1. 滑动窗口机制滑动窗口机制发送方窗口。发送方整个缓冲区是左端与右端相连的环。发送方窗口。发送方整个缓冲区是左端与右端相连的环。发送窗口左侧是已经发送并被接收方确认的数据,对应的缓冲区已经释放。发送窗口左侧是已经发送并被接收方确认的数据,对应的缓冲区已经释放。发送窗口中靠左的部分是已经发送但未确认的数据,靠右部分是可以立即发发送窗口中靠左的部分是已经发送但未确认的数据,靠右部分是可以立即发送的数据(当前可用

50、窗口)。送的数据(当前可用窗口)。发送窗口右侧是暂时不能发送的数据,一旦发送窗口内的部分数据得到确认,发送窗口右侧是暂时不能发送的数据,一旦发送窗口内的部分数据得到确认,窗口便向右滑动,将已经确认的数据移到窗口左侧,而右边新的数据进入窗口便向右滑动,将已经确认的数据移到窗口左侧,而右边新的数据进入窗口成为可以立即发送的数据。窗口成为可以立即发送的数据。TCPTCP流量控制流量控制-滑动窗口机制滑动窗口机制接收方窗口。反映当前能够接收的数据的流量,窗口大小接收方窗口。反映当前能够接收的数据的流量,窗口大小取决于接收方处理数据的速度和发送方发送数据的速度。取决于接收方处理数据的速度和发送方发送数据

51、的速度。当缓冲区取出数据的速度低于数据进入的速度,接收窗口当缓冲区取出数据的速度低于数据进入的速度,接收窗口逐渐缩小,反之逐渐扩大。逐渐缩小,反之逐渐扩大。接收方将当前窗口大小通告给发送方(用接收方将当前窗口大小通告给发送方(用TCPTCP报文段首部中报文段首部中的窗口大小字段),发送方根据接收窗口调整其发送窗口,的窗口大小字段),发送方根据接收窗口调整其发送窗口,使发送窗口始终小于或等于接收窗口的大小。使发送窗口始终小于或等于接收窗口的大小。只有在接收窗口滑动时(同时发送确认),发送窗口才有只有在接收窗口滑动时(同时发送确认),发送窗口才有可能滑动。可能滑动。收发双方的窗口按以上规律不断的向

52、前滑动,这种协议又收发双方的窗口按以上规律不断的向前滑动,这种协议又称为滑动窗口协议。称为滑动窗口协议。TCPTCP流量控制流量控制-滑动窗口机制滑动窗口机制TCPTCP的窗口以字节为单位进行调整,以适应接收方的处理能的窗口以字节为单位进行调整,以适应接收方的处理能力,处理过程如下:力,处理过程如下:(1 1)TCPTCP连接阶段,双方协商窗口大小,同时接收方预留连接阶段,双方协商窗口大小,同时接收方预留数据缓存区;数据缓存区;(2 2)发送方根据协商的结果,发送符合窗口大小的数据字)发送方根据协商的结果,发送符合窗口大小的数据字节流,并等待对方的确认;节流,并等待对方的确认;(3 3)发送方

53、根据确认信息,改变窗口大小,增加或者减少)发送方根据确认信息,改变窗口大小,增加或者减少发送未得到确认的字节流中的字节数。如果出现发送拥塞,发送未得到确认的字节流中的字节数。如果出现发送拥塞,发送窗口缩小为原来的一半,同时将超时重传的时间间隔发送窗口缩小为原来的一半,同时将超时重传的时间间隔扩大一倍。扩大一倍。TCPTCP流量控制流量控制2. 2. 发送方产生的糊涂窗口综合症发送方产生的糊涂窗口综合症(P164P164)如果发送方如果发送方TCPTCP为生产数据很慢的应用程序服务,就可能为生产数据很慢的应用程序服务,就可能产生糊涂窗口综合症。产生糊涂窗口综合症。解决的方法是防止发送方解决的方法

54、是防止发送方TCPTCP逐个字节地发送数据,强迫逐个字节地发送数据,强迫发送方发送方TCPTCP等待,凑成大块数据再发送。等待,凑成大块数据再发送。为了使为了使TCPTCP等待的时间更为合理,采用了等待的时间更为合理,采用了NagleNagle算法:算法:1 1)发送方将来自应用程序的第)发送方将来自应用程序的第1 1块数据发送出去块数据发送出去2 2)发送方在输出缓冲区积累并等待,直到接到接收方)发送方在输出缓冲区积累并等待,直到接到接收方的确认,或已经积累到足够的数据。的确认,或已经积累到足够的数据。3 3)剩下的数据重复步骤)剩下的数据重复步骤2 2。TCPTCP流量控制流量控制3. 3

55、. 接收方产生的糊涂窗口综合症接收方产生的糊涂窗口综合症如果接收方如果接收方TCPTCP为消耗数据很慢的应用程序服务,就可为消耗数据很慢的应用程序服务,就可能产生糊涂窗口综合症。能产生糊涂窗口综合症。有两种解决方法。有两种解决方法。(1 1)延迟通告()延迟通告(Delayed AdvertisementDelayed Advertisement),在缓冲),在缓冲区已经有足够大的空间之前一直宣布窗口值为区已经有足够大的空间之前一直宣布窗口值为0 0。(2 2)推迟确认()推迟确认(Delayed AcknowledgementDelayed Acknowledgement),报文),报文到达

56、时不立即发送确认,直到缓冲区有足够的空间为到达时不立即发送确认,直到缓冲区有足够的空间为止。止。7.4.3 7.4.3 TCPTCP拥塞控制拥塞控制(P165P165)拥塞的发生会造成数据丢失,数据丢失又造成超时重传,超拥塞的发生会造成数据丢失,数据丢失又造成超时重传,超时重传进一步加剧拥塞,如果不加以控制,最终会导致系时重传进一步加剧拥塞,如果不加以控制,最终会导致系统崩溃。统崩溃。在拥塞控制机制中,发送方能够发送的数量不仅要接受接收在拥塞控制机制中,发送方能够发送的数量不仅要接受接收方的控制,还要由网络拥塞程度来决定方的控制,还要由网络拥塞程度来决定。RFC2581RFC2581为为TCP

57、TCP定义了定义了4 4种拥塞控制机制种拥塞控制机制慢启动(慢启动(Slow StartSlow Start)拥塞避免(拥塞避免(Congestion AvoidanceCongestion Avoidance)快重传(快重传(Fast RetransmitFast Retransmit)快恢复(快恢复(Fast RecoveryFast Recovery)TCPTCP拥塞控制拥塞控制1. 1. 拥塞窗口拥塞窗口l如果网络上的负载大于网络的容量,也即发送的数据包数大如果网络上的负载大于网络的容量,也即发送的数据包数大于网络能够处理的数据包数,在网络中就可能发生拥塞。于网络能够处理的数据包数,在

58、网络中就可能发生拥塞。l在在TCPTCP的拥塞控制中,仍然是利用发送窗口来控制数据流速的拥塞控制中,仍然是利用发送窗口来控制数据流速度,减缓注入网络的数据流后,拥塞就会自然解除。度,减缓注入网络的数据流后,拥塞就会自然解除。l发送窗口的发送窗口的大小取决于大小取决于两个因素:两个因素: 1 1)接收窗口)接收窗口-接收方的缓冲区接收方的缓冲区 2 2)拥塞窗口)拥塞窗口-网络的处理能力网络的处理能力。l接收窗口和拥塞窗口都在动态的调整。接收窗口和拥塞窗口都在动态的调整。l发送窗口的大小取决于接收窗口和拥塞窗口中较小的一个。发送窗口的大小取决于接收窗口和拥塞窗口中较小的一个。TCPTCP拥塞控制

59、拥塞控制2. 2. 拥塞策略拥塞策略(P166P166)(1)(1)慢启动(慢启动(Slow StartSlow Start),开始很慢,但按指数规律成倍),开始很慢,但按指数规律成倍增长,到达慢启动阈值(拥塞门限)后转入拥塞避免。增长,到达慢启动阈值(拥塞门限)后转入拥塞避免。(2)(2)拥塞避免(拥塞避免(Congestion AvoidanceCongestion Avoidance),按线性规律增长,),按线性规律增长,直到出现拥塞。直到出现拥塞。(3)(3)拥塞检测(拥塞检测(Congestion DetectionCongestion Detection),当检测到拥塞已),当检测

60、到拥塞已发生,拥塞窗口快速减小(乘法减小),将慢启动阈值调发生,拥塞窗口快速减小(乘法减小),将慢启动阈值调整为当前拥塞值的一半(新拥塞门限)整为当前拥塞值的一半(新拥塞门限) 。(4)(4)重新开始慢启动。重新开始慢启动。TCPTCP拥塞控制拥塞控制7.5 UDP7.5 UDP协议(协议(P166P166)UDPUDP同同IPIP协议一样提供无连接数据报传输,它在协议一样提供无连接数据报传输,它在IPIP协议上协议上增加了进程通信能力。增加了进程通信能力。由于由于UDPUDP本身不具备可靠通信能力,所以本身不具备可靠通信能力,所以UDPUDP的运行环境应的运行环境应该是高可靠性、低延迟的通信

61、线路。该是高可靠性、低延迟的通信线路。如果运行在不可靠的通信线路上,如果运行在不可靠的通信线路上,UDPUDP的上层的应用层程的上层的应用层程序应该能解决报文的损坏、丢失、重复、失序以及流量控序应该能解决报文的损坏、丢失、重复、失序以及流量控制等问题。制等问题。UDPUDP是一个非常简单的协议,其最吸引人的地方在于它的是一个非常简单的协议,其最吸引人的地方在于它的高效率,不需要建立连接,开销很小。高效率,不需要建立连接,开销很小。7.5.1 7.5.1 数据报格式数据报格式(P167P167)UDPUDP数据报格式数据报格式UDPUDP首部字段首部字段源端口(源端口(Source PortSo

62、urce Port)和目的端口()和目的端口(Destination Destination PortPort)各占)各占2 2字节。字节。长度(长度(LengthLength)2 2字节,标示整个字节,标示整个UDPUDP数据报的长度(包数据报的长度(包括报头),最小值为括报头),最小值为8 8(无数据)。(无数据)。校验和(校验和(ChecksumChecksum)2 2字节,校验整个数据报(包括报头字节,校验整个数据报(包括报头和数据)和数据)7.5.2 7.5.2 UDPUDP伪首部与校验和计算伪首部与校验和计算(P167P167)1. 1. UDPUDP伪首部格式伪首部格式伪首部不是

63、伪首部不是UDPUDP的有效成分,而是的有效成分,而是IPIP数据报的一部分,只是用数据报的一部分,只是用于验证于验证UDPUDP数据报是否正确到达目的地的。数据报是否正确到达目的地的。UDPUDP收发双方在计算校验和时都加上伪首部。收发双方在计算校验和时都加上伪首部。协议字段指明当前协议为协议字段指明当前协议为UDP,UDP,协议值为协议值为1717。UDPUDP伪首部与校验和计算伪首部与校验和计算2. 2. 校验和计算校验和计算UDPUDP校验和是一个端到端的校验和。校验和是一个端到端的校验和。它由发送方计算,然后由接收方验证,其目的是发现它由发送方计算,然后由接收方验证,其目的是发现UDPUDP首部和数据在发送方到接收方之间发生的任何改动。首部和数据在发送方到接收方之间发生的任何改动。UDPUDP校验和的基本计算方法与校验和的基本计算方法与IPIP首部校验和计算方法相类首部校验和计算方法相类似,都是似,都是1616位字的二进制反码和。位字的二进制反码和。7.5.3 7.5.3 验证分析验证分析UDPUDP数据报格式数据报格式(P169P169)抓取抓取DNSDNS查询的数据包,展开其中的查询的数据包,展开其中的UDPUDP数据报。数据报。UDP数据报数据报

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号