[信息与通信]第8章TCP协议.ppt
《[信息与通信]第8章TCP协议.ppt》由会员分享,可在线阅读,更多相关《[信息与通信]第8章TCP协议.ppt(135页珍藏版)》请在三一办公上搜索。
1、第八章 传输控制协议TCPTCP/IP详解卷1:CH17、CH18、CH19、CH20、CH21、CH22、CH23、CH24,主要内容,8.1 TCP回顾8.2 TCP连接的建立与终止8.3 TCP的数据传输(交互数据流和成块数据流)8.4 TCP的超时与重传8.5 TCP的坚持定时器和保活定时器8.6 TCP的未来和性能课下作业,7.1 TCP回顾,T C P提供一种面向连接的、可靠的字节流服务在一个T C P连接中仅有两方进行彼此通信广播和多播不能用于T C P,端口,发送 TCP 报文段,TCP,TCP,接收缓存,发送缓存,报文段,报文段,报文段,端口,发送端,接收端,向发送缓存写入数
2、据块,从接收缓存读取数据块,应用进程,应用进程,TCP报文段被封装在一个IP数据报中进行传输,T C P提供可靠性的方式,应用数据被分割成T C P认为最适合发送的数据块当T C P发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。当T C P收到发自T C P连接另一端的数据时,它将发送一个确认。,当TCP收到发自TCP连接另一端的数据,它将发送一个确认。TCP将保持它首部和数据的检验和既然TCP报文段作为IP据报来传输,而IPP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收
3、到的数据以正确的顺序交给应用层。既然IP数据报会发生重复,TCP 的接收端必须丢弃重复的数据。TCP还能提供流量控制,TCP的编号与确认,按字节编号确认是对收到的数据的最高序号的确认,表示期望下次收到的第一个字节的序号。由于TCP能够提供全双工通信,因此,可以采用捎带确认以提高传输效率。,TCP的简单确认,发送窗口大小=1,发方,收方,Send 1,Receive 1,发方,收方,发送窗口大小=1,Send 1,Receive 1,Receive ACK 2,Send ACK 2,发方,收方,发送窗口大小=1,Send 1,Receive 1,Receive ACK 2,Send ACK 2,
4、Send 2,Receive 2,发方,收方,发送窗口大小=1,Send 1,Receive 1,Receive ACK 2,Send ACK 2,Send 2,Receive 2,Receive ACK 3,Send ACK 3,发方,收方,发送窗口大小=1,Send 1,Receive 1,Receive ACK 2,Send ACK 2,Send 2,Receive 2,Receive ACK 3,Send ACK 3,Send 3,Receive 3,发方,收方,发送窗口大小=1,Send 1,Receive 1,Receive ACK 2,Send ACK 2,Send 2,Rece
5、ive 2,Receive ACK 3,Send ACK 3,Send 3,Receive 3,Receive ACK 4,Send ACK 4,发方,收方,发送窗口大小=1,TCP 的编号与确认号,SourcePort,Dest.Port,Sequence#,Acknowledgement#,Source,Dest.,Seq.,Ack.,1028,23,10,1,I justsent#10.,I just got#10,now I need#11.,SourcePort,Dest.Port,Sequence#,Acknowledgement#,1028,23,Source,Dest.,10,
6、Seq.,1,Ack.,1028,23,Source,Dest.,11,Seq.,1,Ack.,I justsent#10.,SourcePort,Dest.Port,Sequence#,Acknowledgement#,1028,23,Source,Dest.,11,Seq.,2,Ack.,1028,23,Source,Dest.,10,Seq.,1,Ack.,1028,23,Source,Dest.,11,Seq.,1,Ack.,I just got#10,now I need#11.,I justsent#11.,SourcePort,Dest.Port,Sequence#,Acknow
7、ledgement#,1028,23,Source,Dest.,11,Seq.,101,Ack.,1028,23,Source,Dest.,10,Seq.,100,Ack.,1028,23,Source,Dest.,11,Seq.,100,Ack.,1028,23,Source,Dest.,12,Seq.,101,Ack.,I just got#11,now I need#12.,I justsent#11.,TCP 的包格式,源端口(16),目的端口(16),顺序号(32),头长(4),确认序号(32),保留(6),窗口(16),检验和(16),紧急指针(16),选项和填充(可选),数据(可
8、变长),20字节,位 0,15,16,31,TCP首部,20 字节的固定首部,目 的 端 口,首部长度,检 验 和,选 项(长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,FIN,32 bit,SYN,RST,PSH,ACK,URG,比特 0 8 16 24 31,填 充,TCP 数据部分,TCP 首部,TCP 报文段,IP 数据部分,IP 首部,发送在前,TCP首部,20字节固定首部,目 的 端 口,首部长度,检 验 和,选 项(长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,FIN,SYN,RST,PSH,ACK,URG,
9、比特 0 8 16 24 31,填 充,源端口和目的端口字段各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。,TCP首部,20字节固定首部,目 的 端 口,首部长度,检 验 和,选 项(长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,FIN,SYN,RST,PSH,ACK,URG,比特 0 8 16 24 31,填 充,序号字段占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。,TCP首部,20字节固定首部,目 的 端 口,首部长度,检
10、验 和,选 项(长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,FIN,SYN,RST,PSH,ACK,URG,比特 0 8 16 24 31,填 充,确认号字段占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。,TCP首部,20字节固定首部,目 的 端 口,首部长度,检 验 和,选 项(长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,FIN,SYN,RST,PSH,ACK,URG,比特 0 8 16 24 31,填 充,首部长度占 4 bit,它指出 TCP 报文段首部有多少个4 字节,TCP首部,20字节
11、固定首部,目 的 端 口,首部长度,检 验 和,选 项(长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,FIN,SYN,RST,PSH,ACK,URG,比特 0 8 16 24 31,填 充,保留字段占 6 bit,保留为今后使用,但目前应置为 0。,TCP首部,20字节固定首部,目 的 端 口,首部长度,检 验 和,选 项(长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,FIN,SYN,RST,PSH,ACK,URG,比特 0 8 16 24 31,填 充,紧急比特 URG 当 URG 1 时,表明紧急指针字段有效。它告诉系
12、统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。,TCP首部,20字节固定首部,目 的 端 口,首部长度,检 验 和,选 项(长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,FIN,SYN,RST,PSH,ACK,URG,比特 0 8 16 24 31,填 充,确认比特 ACK 只有当 ACK 1 时确认号字段才有效。当 ACK 0 时,确认号无效。,TCP首部,20字节固定首部,目 的 端 口,首部长度,检 验 和,选 项(长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,FIN,SYN,RST,PSH,ACK,U
13、RG,比特 0 8 16 24 31,填 充,推送比特 PSH(PuSH)接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。,TCP首部,20字节固定首部,目 的 端 口,首部长度,检 验 和,选 项(长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,FIN,SYN,RST,PSH,ACK,URG,比特 0 8 16 24 31,填 充,复位比特 RST(ReSeT)当 RST 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。,TCP首部,2
14、0字节固定首部,目 的 端 口,首部长度,检 验 和,选 项(长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,FIN,SYN,RST,PSH,ACK,URG,比特 0 8 16 24 31,填 充,同步比特 SYN 同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。,TCP首部,20字节固定首部,目 的 端 口,首部长度,检 验 和,选 项(长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,FIN,SYN,RST,PSH,ACK,URG,比特 0 8 16 24 31,填 充,终止比特 FIN(FINal)用来释
15、放一个连接。当FIN 1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。,TCP首部,20字节固定首部,目 的 端 口,首部长度,检 验 和,选 项(长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,FIN,SYN,RST,PSH,ACK,URG,比特 0 8 16 24 31,填 充,窗口字段 占 2 字节,用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限,也称为通知窗口。,TCP首部,20字节固定首部,目 的 端 口,首部长度,检 验 和,选 项(长
16、度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,FIN,SYN,RST,PSH,ACK,URG,比特 0 8 16 24 31,填 充,检验和 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。,TCP首部,20字节固定首部,目 的 端 口,首部长度,检 验 和,选 项(长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,FIN,SYN,RST,PSH,ACK,URG,比特 0 8 16 24 31,填 充,紧急指针字段 占 16 bit。紧急指针指出在本报文
17、段中的紧急数据的最后一个字节的序号。,TCP首部,20字节固定首部,目 的 端 口,首部长度,检 验 和,选 项(长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,FIN,SYN,RST,PSH,ACK,URG,比特 0 8 16 24 31,填 充,选项字段 长度可变。TCP 只规定了一种选项,即最大报文段长度 MSS(Maximum Segment Size)。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”,MSS 是 TCP 报文段中的数据字段的最大长度。数据字段加上 TCP 首部才等于整个的 TCP 报文段
18、。,TCP首部,20字节固定首部,目 的 端 口,首部长度,检 验 和,选 项(长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,FIN,SYN,RST,PSH,ACK,URG,比特 0 8 16 24 31,填 充,填充字段 这是为了使整个首部长度是 4 字节的整数倍。,7.2 TCP连接的建立与终止,三次握手建立连接提供全双工的可靠交付的服务按字节编号采用可变窗口进行流量控制,一、建立连接,在连接建立过程中要解决三个问题:要使每一方能够确知对方的存在要允许双方协商一些参数,如:MTU、Wmax、QoS等能对运输实体的资源进行分配,如:缓存大小、连接表中的项目
19、等。采用Client/Server方式工作,Send SYN(seq=100 ctl=SYN),SYN received,Host A,Host B,TCP 使用三次握手建立连接,Send SYN(seq=100 ctl=SYN),SYN received,Send SYN,ACK(seq=300 ack=101 ctl=syn,ack),Host A,Host B,SYN received,Send SYN(seq=100 ctl=SYN),SYN received,Send SYN,ACK(seq=300 ack=101 ctl=syn,ack),Established(seq=101 a
20、ck=301 ctl=ack),Host A,Host B,SYN received,二、释放连接,Send FIN(FIN,seq=X),Host A,Host B,FIN received,Send ACK(ACK=X+1),Host A,Host B,ACK received,Send FIN(FIN,seq=X),Half-close 半关闭,Host A,Host B,Send FIN(FIN,seq=X),FIN received,Send ACK(ACK=X+1),Host A,Host B,ACK received,Send FIN(FIN,seq=X),Half-close
21、全关闭,FIN received,Host A,Host B,Send FIN(FIN,seq=X),FIN received,Send ACK,FIN(FIN,seq=y,ACK=X+1),Host A,Host B,FIN,ACK received,Send FIN(FIN,seq=X),FIN received,Send ACK,FIN(FIN,seq=y,ACK=X+1),Host A,Host B,FIN,ACK received,Send FIN(FIN,seq=X),Send ACK,FIN(FIN,ACK=Y+1),Full-close 全关闭,连接建立与终止的时间系列,初始序
22、列号 ISN,当一端为建立连接而发送它的SYS时,它为连接选择一个初始序号。ISN随时间而变化,因此每个连接都将具有不同的ISN。在4.4 B S D(和多数的伯克利的实现版)中,系统初始化时初始的发送序号被初始化为1,这个变量每8 ms加1,另外,每次建立一个连接后,这个变量将增加64000。,连接终止期间报文段的正常交换,三、连接建立的超时,有很多情况导致无法建立连接。如:服务器主机没有处于正常状态。服务器忙,B S D版的T C P软件采用一种500 ms的定时器,当我们键入一个命令(如t e l n e t)后,将建立一个6秒的定时器(1 2个时钟滴答(t i c k),但它可能在之后
23、的5.5秒 6秒内的任意时刻超时。尽管定时器初始化为1 2个时钟滴答,但定时计数器会在设置后的第一个0500 ms中的任意时刻减1。从那以后,定时计数器大约每隔500 ms减1,但在第1个500 ms内是可变的(我们使用限定词“大约”是因为在T C P每隔500 ms获得系统控制的瞬间,系统内核可能会优先处理其他中断)。,TCP的500 ms定时器,当滴答计数器为0时,6秒的定时器便会超时,这个定时器会在以后的2 4秒(4 8个滴答)重新复位。之后的下一个定时器将更接近2 4秒,因为当T C P的500 ms定时器被内核调用时,它就会被修改一次。,四、最大报文段长度MSS,MSS表示TCP报文
24、段的数据长度当一个连接建立时,连接的双方都要通告各自的MSS。当建立一个连接时,每一方都有用于通告它期望接收的M S S选项(M S S选项只能出现在S Y N报文段中)。如果一方不接收来自另一方的M S S值,则M S S就定为默认值5 3 6字节.,MSS的大小,如果没有分段发生,MSS越大越好。当T C P发送一个S Y N时,或者是因为一个本地应用进程想发起一个连接,或者是因为收到了另一端主机的一个连接请求,它能将M S S值设置为外出接口上的M T U长度减去固定的I P首部和T C P首部长度。如果目的I P地址为“非本地的,M S S通常的默认值为5 3 6。,五、复位报文段,一
25、般说来,无论何时一个报文段发往基准的连接出现错误,T C P都会发出一个复位报文段。如:到不存在的端口的连接请求异常终止一个连接检测半打开连接,到不存在的端口的连接请求,产生复位的一种常见情况是当连接请求到达时,目的端口没有进程正在听。对于U D P,当一个数据报到达目的端口时,该端口没在使用,它将产生一个I C M P端口不可达的信息。而T C P则使用复位,异常终止一个连接,在排队数据都已发送之后才发送F I N,正常情况下没有任何数据丢失。但也有可能发送一个复位报文段而不是F I N来中途释放一个连接,称这为异常释放。异常终止一个连接对应用程序来说有两个优点:(1)丢弃任何待发数据并立即
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息与通信 信息与通信第8章 TCP协议 信息 通信 TCP 协议
链接地址:https://www.31ppt.com/p-5615538.html