资源子网运输层幻灯片.ppt

上传人:石*** 文档编号:78724971 上传时间:2023-03-19 格式:PPT 页数:129 大小:7.78MB
返回 下载 相关 举报
资源子网运输层幻灯片.ppt_第1页
第1页 / 共129页
资源子网运输层幻灯片.ppt_第2页
第2页 / 共129页
点击查看更多>>
资源描述

《资源子网运输层幻灯片.ppt》由会员分享,可在线阅读,更多相关《资源子网运输层幻灯片.ppt(129页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、资源子网运输层第1页,共129页,编辑于2022年,星期二6.资源子网概述6.1资源子网的任务1.组织和存放资源:静态和动态2.响应请求和提供资源3.提出请求并获取和使用资源6.2资源子网的组成硬件:含有网络接口的主机系统软件:网络操作系统,网络协议,网络应用程序第2页,共129页,编辑于2022年,星期二运输层协议n从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。物理层网络层运输层应用层数据链路层面向信息处理面向通信用户功能网络功能第3页,共129页,编辑于2022年,星期二第 7 章 运输层 7.1 运输层协议概述7.2

2、 用户数据报协议 UDP 7.3 传输控制协议 TCP 概述7.4 可靠传输的工作原理 7.4.1 停止等待协议 7.4.2 连续 ARQ 协议7.5 TCP 报文段的首部格式第4页,共129页,编辑于2022年,星期二第 7 章 运输层(续)7.6 TCP 可靠传输的实现 7.6.1 以字节为单位的滑动窗口 7.6.2 超时重传时间的选择 7.6.3 选择确认 SACK7.7 TCP的流量控制(滑动窗口)7.8 TCP 的拥塞控制7.9 TCP 的运输连接管理第5页,共129页,编辑于2022年,星期二7.1 运输层协议概述n为运行在不同主机上的应用进程之间提供了逻辑通信。n将接收到的来自发

3、送应用进程的报文转换成运输层分组n只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。第6页,共129页,编辑于2022年,星期二7.1 运输层协议概述堂兄弟姐妹Ann与Bill家庭的通信n每个家庭有一个孩子负责收发信件。两个家庭分别是Ann与Bill。n应用层报文:信封上的字n进程:堂兄弟姐妹n端系统:家庭n运输层协议:Ann与Bill(只工作在端系统)n网络层协议:邮政服务第7页,共129页,编辑于2022年,星期二7.1 运输层协议概述 不同的运输层协议nUDP用户数据报协议n不可靠的。无连接的服务。n最低限度的数据交付和差错检测服务n

4、TCP传输控制协议n可靠的。有连接的服务。n使用流量控制,序号,确认和定时器等技术确保正确的,按序的交付 n当设计一个网络应用程序时,开发人员必须指定使用哪一种。(创建套接字时)n网络层 IP:不可靠服务第8页,共129页,编辑于2022年,星期二固定部分可变部分04816192431版 本标志生 存 时 间协 议标 识区 分 服 务总 长 度片 偏 移填 充首 部 检 验 和源 地 址目 的 地 址可 选 字 段 (长 度 可 变)位首部长度数 据 部 分数 据 部 分首 部IP 数据报首部发送在前第9页,共129页,编辑于2022年,星期二端口号(protocol port number)

5、简称为端口(port)n软件端口与硬件端口n在协议栈层间的抽象的协议端口是软件端口。n路由器或交换机上的端口是硬件端口。n硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。第10页,共129页,编辑于2022年,星期二端口的概念和分类端口就是运输层服务访问点 TSAP。n 软件端口:TCP/IP协议中的端口,它是一种抽象的软件结构,包括一些数据结构和I/O缓冲区。n端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。n从这个意义上讲,端口是用来标

6、志应用层的进程。第11页,共129页,编辑于2022年,星期二端口在进程之间的通信中所起的作用 应用层运输层网络层TCP 报文段UDP用户数据报应用进程TCP 复用IP 复用UDP 复用TCP 报文段UDP用户数据报应用进程端口端口TCP 分用UDP 分用IP 分用发送方接收方第12页,共129页,编辑于2022年,星期二7.1 运输层协议概述多路复用与多路分解n多路分解:n将运输层报文段中的数据交付到正确的套接字n多路复用n从源主机的不同套接字中收集数据块,并为每个数据块封装上首部信息,从而生成报文段,传递给网络层。n每个套接字都有唯一的标识符,格式取决于是UDP套接字还是TCP套接字。第1

7、3页,共129页,编辑于2022年,星期二套接字(socket)套接字 socket=(IP地址:端口号)(7-1)n每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。即 TCP 连接:=socket1,socket2 =(IP1:port1),(IP2:port2)(7-2)n与UDP连接的不同?第14页,共129页,编辑于2022年,星期二TCP/IP协议下的端口 n端口用一个 16 位端口号进行标志。n0-65535n0-1023:周知端口。保留给周知应用层协议的。如HTTP:80,FTP:21,SMTP:25等。n文档RFC1700中已列出周知端口号。n当我们开发一

8、个新的应用程序时,必须为其分配一个端口号。nQQ:从4000开始,每开一个QQ,就多开一个端口400 x;n如何查看一个程序所使用的端口号(QQ为例)nnetstat-ano 第15页,共129页,编辑于2022年,星期二1熟知端口n 熟知端口是由TCP/IP体系确定并固定分配给一些服务,范围从0到1023。比如21端口分配给FTP服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等。第16页,共129页,编辑于2022年,星期二FTP主进程的工作步骤如下n打开熟知端口(端口号为打开熟知端口(端口号为21),使客户进程

9、能),使客户进程能够连接上。够连接上。n等待客户进程发出连接请求。等待客户进程发出连接请求。n启动从属进程来处理客户进程发来的请求。从属进启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。程在运行期间根据需要还可能创建其他一些子进程。n回到等待状态,继续接受其他客户进程发来的请求。回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行。主进程与从属进程的处理是并发地进行。第17页,共129页,编辑于2022年,星期二2动态端口n动态端口的范围

10、从1024到65535,这些端口号一般不固定分配给某个服务,只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。n动态端口常常被病毒木马程序所利用,如冰河默认连接端口是7626、WAY2.4是8011、Netspy3.0是7306、YAI病毒是1024等等。第18页,共129页,编辑于2022年,星期二基于端口的入侵n通过远程扫描技术,反复不断的扫描目标主机的端口,通过检测目标主机不同TCP/IP端口的服务,记录目标主机给予的不同回答,进而搜集到目标主机上的各种信息,并于漏洞扫描系统提供的各种漏洞库进行匹配,满足匹配条件则视为漏洞,从而进行有目的的攻击,实

11、现破坏计算机系统和窃取资源的目的。第19页,共129页,编辑于2022年,星期二病毒常用端口列表第20页,共129页,编辑于2022年,星期二端口状态检测的方法n在命令提示符状态下键入“netstata”,按下回车键后就可以看到以数字形式显示的TCP和UDP连接的端口号及状态。n在下面的截图中我们看到冰河的默认端口7626处于侦听状态,极有可能被黑客利用从事破坏活动。第21页,共129页,编辑于2022年,星期二查看网络连接命令格式命令格式命令格式命令格式:Netstat Netstat a a e e n n o o s sa a 表示显示所有活动的TCP连接以及计算机监听的TCP和UDP端

12、口e e 表示显示以太网发送和接收的字节数、数据包数等n n 表示只以数字形式显示所有活动的TCP连接的地址和端口号o o 表示显示活动的TCP连接并包括每个连接的进程ID(PID)s s 表示按协议显示各种连接的统计信息,包括端口号通过检查系统上开启的一些通过检查系统上开启的一些“奇怪奇怪”的端口,从而发现木马的踪迹。的端口,从而发现木马的踪迹。第22页,共129页,编辑于2022年,星期二第23页,共129页,编辑于2022年,星期二第24页,共129页,编辑于2022年,星期二第25页,共129页,编辑于2022年,星期二端口n通过配置IP安全策略来关闭端口的操作过程如下:(一)创建一个

13、IP安全策略(二)设置IP筛选器(三)设置筛选器操作(四)指派第26页,共129页,编辑于2022年,星期二7.1 运输层协议概述多路复用与多路分解n怎样实现多路分解?(UDP)n主机上的每个套接字被分配一个端口号,当报文段到达主机时,运输层检查报文段中的目的端口号,并将其定向到相应的套接字。然后报文段中的数据通过套接字进入其所连接的进程。nTCP中的多路复用与多路分解更为复杂。第27页,共129页,编辑于2022年,星期二7.1 运输层协议概述多路复用与多路分解nJava语言实现例子nDatagramSocket mySocket=new DatagramSocket();nDatagram

14、Socket mySocket=new DatagramSocket(19157);n如果应用程序开发者所编写的代码是一个“周知协议”的服务器端,那么他必须为其分配一个相应的周知端口号。n典型情况:n客户机:自动分配端口号n服务器端:分配一个特定的端口号。第28页,共129页,编辑于2022年,星期二7.2 用户数据报协议 UDP 7.2.1 UDP 概述nUDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。n虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。n发送数据之前不需要建立连接nUDP 的主机不需要维持复杂的连接状

15、态表。nUDP 用户数据报只有8个字节的首部开销。n网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。第29页,共129页,编辑于2022年,星期二伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报字节44112122222字节发送在前数 据首 部UDP 用户数据报用户数据报 UDP 有两个字段:数据字段和首部字段。首部字段有 8 个字节,由 4 个字段组成,每个字段都是两个字节。第30页,共129页,编辑于2022年,星期二伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数

16、据报字节44112122222字节发送在前数 据首 部UDP 用户数据报在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和。第31页,共129页,编辑于2022年,星期二计算 UDP 检验和的例子 10011001 00010011 153.1900001000 01101000 8.10410101011 00000011 171.300001110 00001011 14.1100000000 00010001 0 和 1700000000 00001111 1500000100 00111111 108700000000 00001101 130

17、0000000 00001111 1500000000 00000000 0(检验和)01010100 01000101 数据01010011 01010100 数据01001001 01001110 数据01000111 00000000 数据和 0(填充)10010110 11101101 求和得出的结果01101001 00010010 检验和 153.19.8.104171.3.14.1112 字节伪首部8 字节UDP 首部7 字节数据填充按二进制反码运算求和将得出的结果求反码全 0 17 15 1087 13 15 全 0数据 数据 数据 数据数据 数据 数据 全 0第32页,共12

18、9页,编辑于2022年,星期二计算 UDP 检验和的例子 n接收端:全部的4个16比特字(包括校验和)一起相加.如果无差错,和应为1111111111111111n链路层有差错校验,传输层为什么还要?n点到点,端到端.分段n路由器存储过程中引入的比特差错第33页,共129页,编辑于2022年,星期二面向报文的 UDPn发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。n应用层交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文。n接收方 UDP 对 IP 层交上来的 UDP 用户数据报

19、,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。n应用程序必须选择合适大小的报文。第34页,共129页,编辑于2022年,星期二7.3 传输控制协议第35页,共129页,编辑于2022年,星期二7.3 传输控制协议 TCP 概述 7.3.1 TCP 最主要的特点 nTCP 是面向连接的运输层协议。n每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一)。nTCP 提供可靠交付的服务。n TCP 提供全双工通信。n面向字节流。第36页,共129页,编辑于2022年,星期二7 68HTCP 面向流的概念 发送 TCP 报文段发送方

20、接收方把字节写入发送缓存从接收缓存读取字节应用进程应用进程1230181716151419202145131211H109H加上 TCP 首部构成 TCP 报文段TCPTCP字节流字节流H表示 TCP 报文段的首部x表示序号为 x 的数据字节TCP 连接第37页,共129页,编辑于2022年,星期二应当注意nTCP 连接是一条虚连接而不是一条真正的物理连接。nTCP 对应用进程一次把多长的报文发送到TCP 的缓存中是不关心的。nTCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。nTCP 可把太长的数据块划分短一些再传送。

21、TCP 也可等待积累有足够多的字节后再构成报文段发送出去。第38页,共129页,编辑于2022年,星期二TCP 的数据编号与确认 nTCP 协议是面向字节的。TCP 将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。n在连接建立时,双方要商定初始序号。TCP 每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。n TCP 的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据的最高序号加 1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。第39页,共129页,编辑于2022年,星期二7.3.2 TCP 的连

22、接nTCP 使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将 TCP 连接的端点称为插口(socket),或套接字、套接口。n套接字和端口、IP 地址的关系是:IP 地址131.6.23.13 端口号1500 131.6.23.13,1500套接字(socket)第40页,共129页,编辑于2022年,星期二同一个名词 socket有多种不同的意思 n应用编程接口 API 称为 socket API,简称为 socket。nsocket API 中使用的一个函数名也叫作 socket。n调用 socket 函数的端点称为 socket。n调用 socket 函数时其返回值称为 soc

23、ket 描述符,可简称为 socket。n在操作系统内核中连网协议的 Berkeley 实现,称为 socket 实现。第41页,共129页,编辑于2022年,星期二7.4 可靠传输的工作原理7.4.1 停止等待协议(a)无差错情况A发送 M1确认 M1B发送 M2发送 M3确认 M2确认 M3A发送 M1B超时重传 M1发送 M2确认 M1丢弃有差错的报文(b)超时重传tttt第42页,共129页,编辑于2022年,星期二确认丢失和确认迟到 A发送 M1B超时重传 M1发送 M2丢弃重复的 M1重传确认 M1(a)确认丢失确认 M1A发送 M1B超时重传 M1发送 M2丢弃重复的 M1重传确

24、认M1(b)确认迟到确认 M1收下迟到的确认但什么也不做tttt第43页,共129页,编辑于2022年,星期二可靠通信的实现n使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。n这种可靠传输协议常称为自动重传请求ARQ(Automatic Repeat reQuest)。nARQ 表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。第44页,共129页,编辑于2022年,星期二信道利用率 n停止等待协议的优点是简单,但缺点是信道利用率太低。TDRTTATD+RTT+TAB分组确认tt分组确认第45页,共129页,编辑于2022年,星期二流水线传输 n发送

25、方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。n由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。B分组ttAACK第46页,共129页,编辑于2022年,星期二7.4.2 连续 ARQ 协议 123456789101112(a)发送方维持发送窗口(发送窗口是 5)发送窗口(b)收到一个确认后发送窗口向前滑动向前123456789101112发送窗口第47页,共129页,编辑于2022年,星期二累积确认 n接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了

26、。n累积确认有的优点是:容易实现,即使确认丢失也不必重传。缺点是:不能向发送方反映出接收方已经正确收到的所有分组的信息。第48页,共129页,编辑于2022年,星期二Go-back-N(回退 N)n如果发送方发送了前 5 个分组,而中间的第 3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。n这就叫做 Go-back-N(回退 N),表示需要再退回来重传已发送过的 N 个分组。n可见当通信线路质量不好时,连续 ARQ 协议会带来负面的影响。第49页,共129页,编辑于2022年,星期二TCP 可靠通信的具体实现 nTCP

27、 连接的每一端都必须设有两个窗口一个发送窗口和一个接收窗口。n TCP 的可靠传输机制用字节的序号进行控制。TCP 所有的确认都是基于序号而不是基于报文段。n TCP 两端的四个窗口经常处于动态变化之中。nTCP连接的往返时间 RTT 也不是固定不变的。需要使用特定的算法估算较为合理的重传时间。第50页,共129页,编辑于2022年,星期二TCP首部20 字节的固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FIN32 位SYNRSTPSHACKURG位 0 8 16 24 31填 充TCP 数据部分TCP 首部TCP 报文

28、段IP 数据部分IP 首部发送在前7.5 TCP 报文段的首部格式 第51页,共129页,编辑于2022年,星期二TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充源端口和目的端口字段各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。第52页,共129页,编辑于2022年,星期二TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确

29、 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充序号字段占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。第53页,共129页,编辑于2022年,星期二TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充确认号字段占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。第54页,共129页,编辑于2022年,星期二T

30、CP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充数据偏移(即首部长度)占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。第55页,共129页,编辑于2022年,星期二TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 1

31、6 24 31填 充保留字段占 6 位,保留为今后使用,但目前应置为 0。第56页,共129页,编辑于2022年,星期二TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充紧急 URG 当 URG 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。第57页,共129页,编辑于2022年,星期二TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧

32、急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充确认 ACK 只有当 ACK 1 时确认号字段才有效。当 ACK 0 时,确认号无效。第58页,共129页,编辑于2022年,星期二TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充推送 PSH(PuSH)接收 TCP 收到 PSH=1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。第59页,共129页,编辑于

33、2022年,星期二TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充复位 RST(ReSeT)当 RST 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。第60页,共129页,编辑于2022年,星期二TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8

34、16 24 31填 充同步 SYN 同步 SYN=1 表示这是一个连接请求或连接接受报文。第61页,共129页,编辑于2022年,星期二TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充终止 FIN(FINis)用来释放一个连接。FIN 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。第62页,共129页,编辑于2022年,星期二TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序

35、号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充窗口字段 占 2 字节,用来让对方设置发送窗口的依据,单位为字节。第63页,共129页,编辑于2022年,星期二TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充检验和 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。第64页,共129页,编辑于2022年,

36、星期二TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充紧急指针字段 占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。第65页,共129页,编辑于2022年,星期二TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充选项字段 长度可变。TCP 最

37、初只规定了一种选项,即最大报文段长度 MSS。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”MSS(Maximum Segment Size)是 TCP 报文段中的数据字段的最大长度。数据字段加上 TCP 首部才等于整个的 TCP 报文段。第66页,共129页,编辑于2022年,星期二其他选项n窗口扩大选项 占 3 字节,其中有一个字节表示移位值 S。新的窗口值等于TCP 首部中的窗口位数增大到(16+S),相当于把窗口值向左移动 S 位后获得实际的窗口大小。n时间戳选项占10 字节,其中最主要的字段时间戳值字段(4 字节)和时间戳回送回答字段(

38、4 字节)。n选择确认选项在后面的 7.6.3 节介绍。第67页,共129页,编辑于2022年,星期二TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充填充字段 这是为了使整个首部长度是 4 字节的整数倍。第68页,共129页,编辑于2022年,星期二7.6 TCP 可靠传输的实现以字节为单位的滑动窗口前移不允许发送已发送并收到确认A 的发送窗口=20允许发送的序号26272829 3031323334353637 38 39 404142

39、43444546 474849 50515253545556B 期望收到的序号前沿后沿前移收缩根据 B 给出的窗口值A 构造出自己的发送窗口 TCP 标准强烈不赞成发送窗口前沿向后收缩 第69页,共129页,编辑于2022年,星期二不允许发送已发送并收到确认A 的发送窗口位置不变允许发送但尚未发送2627282930 3132333435363738394041424344454647 484950515253 5455已发送但未收到确认56P1P2P3不允许接收已发送确认并交付主机B 的接收窗口允许接收262728 29 30 3132 33 343536373839 4041424344

40、45 46 47484950515253545556未按序收到可用窗口A 发送了 11 个字节的数据 P3 P1=A 的发送窗口(又称为通知窗口)P2 P1=已发送但尚未收到确认的字节数P3 P2=允许发送但尚未发送的字节数(又称为可用窗口)第70页,共129页,编辑于2022年,星期二允许发送但尚未发送A 的发送窗口向前滑动26272829303132333435 36373839 40414243444546 47 484950 5152535455已发送并收到确认不允许发送已发送但未收到确认56P1P2P3允许接收B 的接收窗口向前滑动26 27282930313233343536373

41、8394041424344 4546 47484950 51 52535455已发送确认并交付主机不允许接收56未按序收到A 收到新的确认号,发送窗口向前滑动 先存下,等待缺少的数据的到达第71页,共129页,编辑于2022年,星期二不允许发送已发送并收到确认A 的发送窗口已满,有效窗口为零262728293031 32 33343536 37383940 41 4243444546 474849 50 51 52535455已发送但未收到确认56P1P2P3A 的发送窗口内的序号都已用完,但还没有再收到确认,必须停止发送。第72页,共129页,编辑于2022年,星期二发送缓存 最后被确认的字

42、节发送应用程序发送缓存最后发送的字节发送窗口已发送已发送TCP序号增大第73页,共129页,编辑于2022年,星期二接收缓存接收应用程序已收到已收到接收窗口TCP接收缓存下一个读取的字节序号增大下一个期望收到的字节(确认号)第74页,共129页,编辑于2022年,星期二发送缓存与接收缓存的作用n发送缓存用来暂时存放:n 发送应用程序传送给发送方 TCP 准备发送的数据;n TCP 已发送出但尚未收到确认的数据。n接收缓存用来暂时存放:n 按序到达的、但尚未被接收应用程序读取的数据;n 不按序到达的数据。第75页,共129页,编辑于2022年,星期二需要强调三点nA 的发送窗口并不总是和 B 的

43、接收窗口一样大(因为有一定的时间滞后)。nTCP 标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。nTCP 要求接收方必须有累积确认的功能,这样可以减小传输开销。第76页,共129页,编辑于2022年,星期二选择确认 SACK(Selective ACK)n接收方收到了和前面的字节流不连续的两个字节块。n如果这些字节的序号都在接收窗口之内,那么接收方就先收下这些数据,但要把这些信息准确地告诉发送方,使发送方不要再重复发送这些已收到的数据。第77页,共129页,编辑于2022年,星期二RFC 2018 的规定n如果

44、要使用选择确认,那么在建立 TCP 连接时,就要在 TCP 首部的选项中加上“允许 SACK”的选项,而双方必须都事先商定好。n如果使用选择确认,那么原来首部中的“确认号字段”的用法仍然不变。只是以后在 TCP 报文段的首部中都增加了 SACK 选项,以便报告收到的不连续的字节块的边界。第78页,共129页,编辑于2022年,星期二7.7 TCP 的流量控制n一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。n流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。n利

45、用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制。第79页,共129页,编辑于2022年,星期二seq=1,DATAseq=201,DATAseq=401,DATAseq=301,DATAseq=101,DATAseq=201,DATAseq=501,DATAACK=1,ack=201,rwnd=300ACK=1,ack=601,rwnd=0ACK=1,ack=501,rwnd=100AB允许 A 发送序号 201 至 500 共 300 字节A 发送了序号 101 至 200,还能发送 200 字节A 发送了序号 301 至 400,还能再发送 100 字节新数据A 发送了序号 1

46、至 100,还能发送 300 字节A 发送了序号 401 至 500,不能再发送新数据了A 超时重传旧的数据,但不能发送新的数据允许 A 发送序号 501 至 600 共 100 字节A 发送了序号 501 至 600,不能再发送了不允许 A 再发送(到序号 600 为止的数据都收到了)丢失!流量控制举例A 向 B 发送数据。在连接建立时,B 告诉 A:“我的接收窗口 rwnd=400(字节)”。第80页,共129页,编辑于2022年,星期二持续计时器(persistence timer)。nTCP 为每一个连接设有一个持续计时器。n只要 TCP 连接的一方收到对方的零窗口通知,就启动持续计时

47、器。n若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带 1 字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。n若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。n若窗口不是零,则死锁的僵局就可以打破了。第81页,共129页,编辑于2022年,星期二7.8 TCP的拥塞控制7.8.1 拥塞控制的一般原理 n在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏产生拥塞(congestion)。n出现资源拥塞的条件:对资源需求的总和 可用资源 (7-7)n若网络中有许多资源同时产生拥塞,网络的性能就要明显变坏,整个网络的吞吐量将

48、随输入负荷的增大而下降。第82页,共129页,编辑于2022年,星期二拥塞控制与流量控制的关系 n拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。n拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。n流量控制往往指在给定的发送端和接收端之间的点对点通信量的控制。n流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。第83页,共129页,编辑于2022年,星期二拥塞控制所起的作用 提供的负载吞吐量理想的拥塞控制实际的拥塞控制0死锁(吞吐量=0)无拥塞控制拥塞轻度拥塞第84页,共129页,编辑于2022年,星期二拥塞控

49、制的一般原理 n拥塞控制是很难设计的,因为它是一个动态的(而不是静态的)问题。n当前网络正朝着高速化的方向发展,这很容易出现缓存不够大而造成分组的丢失。但分组的丢失是网络发生拥塞的征兆而不是原因。n在许多情况下,甚至正是拥塞控制本身成为引起网络性能恶化甚至发生死锁的原因。这点应特别引起重视。第85页,共129页,编辑于2022年,星期二7.8.2 几种拥塞控制方法1.慢开始和拥塞避免n发送方维持一个叫做拥塞窗口 cwnd(congestion window)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。如再考虑到接收方的接收能力,则发送窗

50、口还可能小于拥塞窗口。n发送方控制拥塞窗口的原则是:只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。第86页,共129页,编辑于2022年,星期二慢开始算法的原理 n在主机刚刚开始发送报文段时可先设置拥塞窗口 cwnd=1,即设置为一个最大报文段 MSS 的数值。n在每收到一个对新的报文段的确认后,将拥塞窗口加 1,即增加一个 MSS 的数值。n用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。第87页,共129页,编辑于2022年,星期二发送方接收方发送 M1 确认 M

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com