您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 《TCP协议》PPT课件
第二章TCP协议TCP/IP详解卷1:CH17、CH18、CH19、CH20、CH21、CH22、CH23、CH24主要内容2.1TCP回顾2.2TCP连接的建立与终止2.3TCP的数据传输(交互数据流和成块数据流)2.4TCP的超时与重传2.5TCP的坚持定时器和保活定时器2.6TCP的未来和性能2.1TCPTCP提供一种面向连接的、可靠的字节流服务在一个TCP连接中仅有两方进行彼此通信广播和多播不能用于TCP端口…发送TCP报文段TCP…TCP接收缓存发送缓存报文段…报文段报文段端口发送端接收端向发送缓存写入数据块从接收缓存读取数据块应用进程应用进程TCP报文段被封装在一个IP数据报中进行传输TCP提供可靠性的方式应用数据被分割成TCP认为最适合发送的数据块当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。当TCP收到发自TCP连接另一端的数据时,它将发送一个确认。当TCP收到发自TCP连接另一端的数据,它将发送一个确认。TCP将保持它首部和数据的检验和既然TCP报文段作为IP据报来传输,而IPP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。既然IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。TCP还能提供流量控制TCP的编号与确认按字节编号确认是对收到的数据的最高序号的确认,表示期望下次收到的第一个字节的序号。由于TCP能够提供全双工通信,因此,可以采用捎带确认以提高传输效率。TCP的简单确认发送窗口大小=1发方收方Send1Receive1发方收方发送窗口大小=1Send1Receive1ReceiveACK2SendACK2发方收方发送窗口大小=1Send1Receive1ReceiveACK2SendACK2Send2Receive2发方收方发送窗口大小=1Send1Receive1ReceiveACK2SendACK2Send2Receive2ReceiveACK3SendACK3发方收方发送窗口大小=1Send1Receive1ReceiveACK2SendACK2Send2Receive2ReceiveACK3SendACK3Send3Receive3发方收方发送窗口大小=1Send1Receive1ReceiveACK2SendACK2Send2Receive2ReceiveACK3SendACK3Send3Receive3ReceiveACK4SendACK4发方收方发送窗口大小=1TCP的编号与确认号SourcePortDest.Port…Sequence#Acknowledgement#SourceDest.Seq.Ack.102823101Ijustsent#10.Ijustgot#10,nowIneed#11.SourcePortDest.Port…Sequence#Acknowledgement#102823SourceDest.10Seq.1Ack.102823SourceDest.11Seq.1Ack.Ijustsent#10.SourcePortDest.Port…Sequence#Acknowledgement#102823SourceDest.11Seq.2Ack.102823SourceDest.10Seq.1Ack.102823SourceDest.11Seq.1Ack.Ijustgot#10,nowIneed#11.Ijustsent#11.SourcePortDest.Port…Sequence#Acknowledgement#102823SourceDest.11Seq.101Ack.102823SourceDest.10Seq.100Ack.102823SourceDest.11Seq.100Ack.102823SourceDest.12Seq.101Ack.Ijustgot#11,nowIneed#12.Ijustsent#11.TCP的包格式源端口(16)目的端口(16)顺序号(32)头长(4)确认序号(32)保留(6)窗口(16)检验和(16)紧急指针(16)选项和填充(可选)数据(可变长)20字节位0151631URGACKPSHRSTSYSFINTCP首部20字节的固定首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充TCP数据部分TCP首部TCP报文段IP数据部分IP首部发送在前TCP首部20字节固定首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充源端口和目的端口字段——各占2字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。TCP首部20字节固定首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充序号字段——占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。TCP首部20字节固定首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充确认号字段——占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。TCP首部20字节固定首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充首部长度——占4bit,它指出TCP报文段首部有多少个4字节TCP首部20字节固定首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充保留字段——占6bit,保留为今后使用,但目前应置为0。TCP首部20字节固定首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充紧急比特URG——当URG1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。TCP首部20字节固定首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充确认比特ACK——只有当ACK1时确认号字段才有效。当ACK0时,确认号无效。TCP首部20字节固定首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充推送比特PSH(PuSH)——接收TCP收到推送比特置1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。TCP首部20字节固定首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充复位比特RST(ReSeT)——当RST1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。TCP首部20字节固定首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充同步比特SYN——同步比特SYN置为1,就表示这是一个连接请求或连接接受报文。TCP首部20字节固定首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充终止比特FIN(FINal)——用来释放一个连接。当FIN1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。TCP首部20字节固定首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充窗口字段——占2字节,用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限,也称为通知窗口。TCP首部20字节固定首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充检验和——占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。TCP首部20字节固定首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充紧急指针字段——占16bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。TCP首部20字节固定首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充选项字段——长度可变。TCP只规定了一种选项,即最大报文段长度MSS(MaximumSegmentSize)。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”MSS是TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。TCP首部20字节固定首部目的端口首部长度检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充填充字段——这是为了使整个首部长度是4字节的整数倍。2.2TCP连接的建立与终止三次握手建立连接提供全双工的可靠交付的服务按字节编号采用可变窗口进行流量控制一、建立连接在连接建立过程中要解决三个问题:要使每一方能够确知对方的存在要允许双方协商一些参数,如:MTU、Wmax、QoS等能对运输实体的资源进行分配,如:缓存大小、连接表中的项目等。采用Client/Server方式工作SendSYN(seq=100ctl=SYN)SYNreceivedHostAHostBTCP使用三次握手建立连接1SendSYN(seq=100ctl=SYN)SYNreceivedSendSYN,ACK(seq=300ack=101ctl=syn,ack)HostAHostBSYNreceived12SendSYN(seq=100ctl=SYN)SYNreceivedSendSYN,ACK(seq=300ack=101ctl=syn,ack)Established(seq=101ack=301ctl=ack)HostAHostB123SYNreceived二、释放连接SendFIN(FIN,seq=X)HostAHostB1FINreceivedSendACK(ACK=X+1)HostAHostBACKreceived12SendFIN(FIN,seq=X)Half-close半关闭HostAHostB1SendFIN(FIN,seq=X)FINreceivedSendACK(ACK=X+1)HostAHostBACKreceived12SendFIN(FIN,seq=X)Half-close全关闭FINreceivedHostAHostB1SendFIN(FIN,seq=X)FINreceivedSendACK,FIN(FIN,seq=y,ACK=X+1)HostAHostBFIN,ACKreceived12SendFIN(FIN,seq=X)FINreceivedSendACK,FIN(FIN,seq=y,ACK=X+1)HostAHostBFIN,ACKr
本文标题:《TCP协议》PPT课件
链接地址:https://www.777doc.com/doc-6740352 .html