《传输控制协议》PPT课件.ppt
《《传输控制协议》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《传输控制协议》PPT课件.ppt(98页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第8章章传输控制协议(传输控制协议(TCP)1主要内容主要内容nTCP的服务nTCP的端口号和套接字地址nTCP的报文段nTCP的连接管理与释放nTCP的连接管理状态转换图n流量控制n傻瓜窗口综合症n差错控制n拥塞控制n定时器管理 28.1TCP的服务的服务n面向连接的服务要获得TCP服务,在一个应用进程向另一个应用进程开始发送数据之前,必须先在双方之间建立一条连接,数据传送结束后要释放连接。n每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点的(一对一)。3n全双工服务 TCP连接提供全双工服务,所有TCP连接都是点到点的。n字节流传递服务 一个TCP连接就是
2、一个字节流,端到端之间不保留消息的边界。47 68H TCP面向流的概念 发送发送TCP报文段报文段发送方发送方接收方接收方把字节写入把字节写入发送缓存发送缓存从接收缓存从接收缓存读取字节读取字节应用进程应用进程应用进程应用进程1230181716151419202145131211H109 H加上加上TCP首部首部构成构成TCP报文段报文段TCPTCP字节流字节流字节流字节流H表示表示TCP报文段的首部报文段的首部x表示序号为表示序号为x的数据字节的数据字节TCP连接连接5TCP连接uTCP连接是一条虚连接而不是一条真正的物理连接。uTCP根据对方给出的窗口值和当前网络拥塞的程度来决定一个报
3、文段应包含多少个字节,而UDP发送的报文长度是应用进程给出的。uTCP可把太长的数据块划分短一些再传送。TCP也可等待积累有足够多的字节后再构成报文段发送出去。6TCP的连接uTCP把连接作为最基本的抽象。u每一条TCP连接有两个端点。uTCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是运输层的协议端口。TCP连接的端点叫做套接字(socket)或插口。u端口号拼接到(contatenated with)IP地址即构成了套接字。78.2TCP的端口号和套接字地址的端口号和套接字地址8.2.1 TCP的端口号 TCP采用16bit端口号来识别应用程序。服务器一般都是通过熟知端口来
4、识别。而客户端通常使用的是临时端口号。88.2.2 套接字地址n要使用TCP的服务,需要一对套接字地址。n一个套接字有可能同时被用于多个连接。也就是说,两个或多个连接可能终止于同一个套接字。9套接字(socket)u套接字socket=(IP地址:端口号)u每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。nTCP连接:=socket1,socket2n=(IP1:port1),(IP2:port2)108.3TCP的报文段的报文段nTCP报文段由首部和数据两部分组成。n首部前20字节是固定部分,后面有4N字节是根据需要而增加的选项。n选项部分最多是40字节。11TCP报文段的
5、首部格式首部格式TCP首部首部20 字节的字节的固定首部固定首部目目 的的 端端 口口数据数据偏移偏移检检 验验 和和选选 项项 (长(长 度度 可可 变)变)源源 端端 口口序序 号号紧紧 急急 指指 针针窗窗 口口确确 认认 号号保保 留留FIN32 位位SYNRSTPSHACKURG位位 0 8 16 24 31填填 充充TCP 数据部分数据部分TCP 首部首部TCP 报文段报文段IP 数据部分数据部分IP 首部首部发送在前发送在前12TCP首部首部20字节字节固定固定首部首部目目 的的 端端 口口数据数据偏移偏移检检 验验 和和选选 项项 (长(长 度度 可可 变)变)源源 端端 口口
6、序序 号号紧紧 急急 指指 针针窗窗 口口确确 认认 号号保保 留留FINSYNRSTPSHACKURG位位 0 8 16 24 31填填 充充源端口和目的端口字段各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。13TCP首部首部20字节字节固定固定首部首部目目 的的 端端 口口数据数据偏移偏移检检 验验 和和选选 项项 (长(长 度度 可可 变)变)源源 端端 口口序序 号号紧紧 急急 指指 针针窗窗 口口确确 认认 号号保保 留留FINSYNRSTPSHACKURG位位 0 8 16 24 31填填 充充序号字段占 4 字节。TCP 连接中传送的
7、数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。14TCP首部首部20字节字节固定固定首部首部目目 的的 端端 口口数据数据偏移偏移检检 验验 和和选选 项项 (长(长 度度 可可 变)变)源源 端端 口口序序 号号紧紧 急急 指指 针针窗窗 口口确确 认认 号号保保 留留FINSYNRSTPSHACKURG位位 0 8 16 24 31填填 充充u确认号字段占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。u确认号=N:序号N-1为止的数据都已经正确接收。15TCP首部首部20字节字节固定固定首部首部目目 的的 端端 口口数据
8、数据偏移偏移检检 验验 和和选选 项项 (长(长 度度 可可 变)变)源源 端端 口口序序 号号紧紧 急急 指指 针针窗窗 口口确确 认认 号号保保 留留FINSYNRSTPSHACKURG位位 0 8 16 24 31填填 充充数据偏移(即首部长度)占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。16TCP首部首部20字节字节固定固定首部首部目目 的的 端端 口口数据数据偏移偏移检检 验验 和和选选 项项 (长(长 度度 可可 变)变)源源 端端 口口序序 号号紧紧 急急 指指 针针窗窗 口口确确
9、认认 号号保保 留留FINSYNRSTPSHACKURG位位 0 8 16 24 31填填 充充保留字段占 6 位,保留为今后使用,但目前应置为 0。17TCP首部首部20字节字节固定固定首部首部目目 的的 端端 口口数据数据偏移偏移检检 验验 和和选选 项项 (长(长 度度 可可 变)变)源源 端端 口口序序 号号紧紧 急急 指指 针针窗窗 口口确确 认认 号号保保 留留FINSYNRSTPSHACKURG位位 0 8 16 24 31填填 充充紧急 URG 当 URG 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。18TCP首部首部20字
10、节字节固定固定首部首部目目 的的 端端 口口数据数据偏移偏移检检 验验 和和选选 项项 (长(长 度度 可可 变)变)源源 端端 口口序序 号号紧紧 急急 指指 针针窗窗 口口确确 认认 号号保保 留留FINSYNRSTPSHACKURG位位 0 8 16 24 31填填 充充确认 ACK 只有当 ACK 1 时确认号字段才有效。当 ACK 0 时,确认号无效。19TCP首部首部20字节字节固定固定首部首部目目 的的 端端 口口数据数据偏移偏移检检 验验 和和选选 项项 (长(长 度度 可可 变)变)源源 端端 口口序序 号号紧紧 急急 指指 针针窗窗 口口确确 认认 号号保保 留留FINSY
11、NRSTPSHACKURG位位 0 8 16 24 31填填 充充推送 PSH(PuSH)接收 TCP 收到 PSH=1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。20TCP首部首部20字节字节固定固定首部首部目目 的的 端端 口口数据数据偏移偏移检检 验验 和和选选 项项 (长(长 度度 可可 变)变)源源 端端 口口序序 号号紧紧 急急 指指 针针窗窗 口口确确 认认 号号保保 留留FINSYNRSTPSHACKURG位位 0 8 16 24 31填填 充充复位 RST(ReSeT)当 RST 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他
12、原因),必须释放连接,然后再重新建立运输连接。21TCP首部首部20字节字节固定固定首部首部目目 的的 端端 口口数据数据偏移偏移检检 验验 和和选选 项项 (长(长 度度 可可 变)变)源源 端端 口口序序 号号紧紧 急急 指指 针针窗窗 口口确确 认认 号号保保 留留FINSYNRSTPSHACKURG位位 0 8 16 24 31填填 充充同步 SYN 同步 SYN=1 表示这是一个连接请求或连接接受报文。22TCP首部首部20字节字节固定固定首部首部目目 的的 端端 口口数据数据偏移偏移检检 验验 和和选选 项项 (长(长 度度 可可 变)变)源源 端端 口口序序 号号紧紧 急急 指指
13、 针针窗窗 口口确确 认认 号号保保 留留FINSYNRSTPSHACKURG位位 0 8 16 24 31填填 充充终止 FIN(FINish)用来释放一个连接。FIN 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。23TCP首部首部20字节字节固定固定首部首部目目 的的 端端 口口数据数据偏移偏移检检 验验 和和选选 项项 (长(长 度度 可可 变)变)源源 端端 口口序序 号号紧紧 急急 指指 针针窗窗 口口确确 认认 号号保保 留留FINSYNRSTPSHACKURG位位 0 8 16 24 31填填 充充窗口字段占2字节,指发送本报文段一方的接收窗口,从确认号开始允许
14、对方发送的数据量;作为对方设置发送窗口的依据,单位为字节。24TCP首部首部20字节字节固定固定首部首部目目 的的 端端 口口数据数据偏移偏移检检 验验 和和选选 项项 (长(长 度度 可可 变)变)源源 端端 口口序序 号号紧紧 急急 指指 针针窗窗 口口确确 认认 号号保保 留留FINSYNRSTPSHACKURG位位 0 8 16 24 31填填 充充检验和 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。25TCP首部首部20字节字节固定固定首部首部目目 的的 端端 口口数据数据偏移偏移检检 验验 和和选选
15、项项 (长(长 度度 可可 变)变)源源 端端 口口序序 号号紧紧 急急 指指 针针窗窗 口口确确 认认 号号保保 留留FINSYNRSTPSHACKURG位位 0 8 16 24 31填填 充充紧急指针字段 占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。268.4.1 建立连接 TCP协议中建立连接采用三次握手(three-way handshake)的方式实现。8.4TCP的连接管理与释放的连接管理与释放27TCP的运输连接的三个阶段u运输连接就有三个阶段,即:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。
16、u连接建立过程中要解决以下三问题:n要使每一方能够确知对方的存在。要使每一方能够确知对方的存在。n要允许双方协商一些参数(如最大报文段长度,要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。最大窗口大小,服务质量等)。n能够对运输实体资源(如缓存大小,连接表中的能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。项目等)进行分配。28客户服务器方式uTCP连接的建立均是采用客户服务器方式。u主动发起连接建立的应用进程叫做客户(client)。u被动等待连接建立应用进程叫做服务器(server)。29三次握手建立TCP连接SYN=1,seq=xCLOSEDCLOSED
17、主动打开主动打开被动打开被动打开AB客户客户服务器服务器A 的的 TCP 向向 B 发出连接请求报文段,其首部中的发出连接请求报文段,其首部中的同步位同步位 SYN=1,并选择序号,并选择序号 seq=x,表明传送,表明传送数据时的第一个数据字节的序号是数据时的第一个数据字节的序号是 x。30用三次握手建立TCP连接SYN=1,seq=xCLOSEDCLOSED主动打开主动打开被动打开被动打开AB客户客户服务器服务器SYN=1,ACK=1,seq=y,ack=x 1 B 的的 TCP 收到连接请求报文段后,如同意,则收到连接请求报文段后,如同意,则 发回确认。发回确认。B 在确认报文段中应使在
18、确认报文段中应使 SYN=1,使,使 ACK=1,其确认号其确认号ack=x 1,自己选择的序号,自己选择的序号 seq=y。31SYN=1,seq=xACK=1,seq=x+1,ack=y 1CLOSEDCLOSED主动打开主动打开被动打开被动打开AB客户客户服务器服务器SYN=1,ACK=1,seq=y,ack=x 1 A 收到此报文段后向收到此报文段后向 B 给出确认,其给出确认,其 ACK=1,确认号确认号 ack=y 1。A 的的 TCP 通知上层应用进程,连接已经建立。通知上层应用进程,连接已经建立。32SYN=1,seq=xACK=1,seq=x+1,ack=y 1CLOSEDC
19、LOSED数据传送数据传送主动打开主动打开被动打开被动打开AB客户客户服务器服务器SYN=1,ACK=1,seq=y,ack=x 1 B 的的 TCP 收到主机收到主机 A 的确认后,也通知其上层的确认后,也通知其上层 应用进程:应用进程:TCP 连接已经建立。连接已经建立。33SYN-SENTESTAB-LISHEDSYN-RCVDLISTENESTAB-LISHED用三次握手建立TCP连接的各状态SYN=1,seq=xACK=1,seq=x+1,ack=y 1CLOSEDCLOSED数据传送数据传送主动打开主动打开被动打开被动打开AB客户客户服务器服务器SYN=1,ACK=1,seq=y,
20、ack=x 134FIN=1,seq=uCLOSED主动关闭主动关闭数据传送数据传送ESTAB-LISHEDESTAB-LISHEDAB客户客户服务器服务器CLOSED TCP 的连接释放的连接释放 数据传输结束后,通信的双方都可释放连接。数据传输结束后,通信的双方都可释放连接。现在现在 A 的应用进程先向其的应用进程先向其 TCP 发出连接释放发出连接释放 报文段,并停止再发送数据,主动关闭报文段,并停止再发送数据,主动关闭 TCP 连接。连接。A 把连接释放报文段首部的把连接释放报文段首部的 FIN=1,其序号,其序号 seq=u,等待,等待 B 的确认。的确认。35FIN=1,seq=u
21、ACK=1,seq=v,ack=u 1主动关闭主动关闭数据传送数据传送通知通知应用应用进程进程ESTAB-LISHEDESTAB-LISHEDAB客户客户服务器服务器 TCP 的连接释放的连接释放 B 发出确认,确认号发出确认,确认号 ack=u 1,而这个报文段自己的序号而这个报文段自己的序号 seq=v。TCP 服务器进程通知高层应用进程。服务器进程通知高层应用进程。从从 A 到到 B 这个方向的连接就释放了,这个方向的连接就释放了,TCP 连接连接 处于处于半关闭状态半关闭状态。B 若发送数据,若发送数据,A 仍要接收。仍要接收。36FIN=1,seq=uACK=1,seq=v,ack=
22、u 1FIN=1,ACK=1,seq=w,ack=u 1主动关闭主动关闭被动关闭被动关闭数据传送数据传送通知通知应用应用进程进程ESTAB-LISHEDESTAB-LISHEDAB客户客户服务器服务器数据传送数据传送TCP 的连接释放的连接释放 若若 B 已经没有要向已经没有要向 A 发送的数据,发送的数据,其应用进程就通知其应用进程就通知 TCP 释放连接。释放连接。37FIN=1,seq=uACK=1,seq=v,ack=u 1FIN=1,ACK=1,seq=w,ack=u 1主动关闭主动关闭被动关闭被动关闭数据传送数据传送通知通知应用应用进程进程ESTAB-LISHEDESTAB-LIS
23、HEDAB客户客户服务器服务器数据传送数据传送 TCP 的连接释放的连接释放 A 收到连接释放报文段后,必须发出确认。收到连接释放报文段后,必须发出确认。ACK=1,seq=u+1,ack=w 138FIN=1,seq=uACK=1,seq=v,ack=u 1FIN=1,ACK=1,seq=w,ack=u 1主动关闭主动关闭被动关闭被动关闭数据传送数据传送通知通知应用应用进程进程ESTAB-LISHEDESTAB-LISHEDAB客户客户服务器服务器数据传送数据传送 TCP 的连接释放的连接释放 在确认报文段中在确认报文段中 ACK=1,确认号,确认号 ack w 1,自己的序号自己的序号 s
24、eq=u+1。ACK=1,seq=u+1,ack=w 139CLOSEDACK=1,seq=u+1,ack=w 1FIN=1,seq=uACK=1,seq=v,ack=u 1FIN=1,ACK=1,seq=w,ack=u 1FIN-WAIT-1CLOSE-WAITFIN-WAIT-2LAST-ACK等待等待2MSLTIME-WAIT主动关闭主动关闭被动关闭被动关闭数据传送数据传送通知通知应用应用进程进程ESTAB-LISHEDESTAB-LISHEDAB客户客户服务器服务器数据传送数据传送CLOSED5.9.2 TCP 的连接释放的连接释放 TCP 连接必须经过时间连接必须经过时间 2MSL
25、后才真正释放掉。后才真正释放掉。40A必须等待2MSL的时间uMSL:最长报文段寿命(MaximumSegmentLifetime),用于时间等待计时器。u为何要等待2MSL?第一,为了保证A发送的最后一个ACK报文段能够到达B。第二,防止“已失效的连接请求报文段”出现在本连接中。A在发送完最后一个ACK报文段后,再经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失。这样可以使下一个新连接中不会出现这种旧的连接请求报文段。418.4.3 连接复位 当TCP需要连接复位时使用RST报文段,其复位比特RST置1。428.5TCP的连接管理状态转换的连接管理状态转换n在任
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 传输控制协议 传输 控制 协议 PPT 课件
限制150内