互联网及其应用42传输控制和socket课件.ppt
传输层(传送层、运输层),传输层(传送层、运输层),概述,TCP实现:利用底层使用IP提供的不可靠服务,为应用程序提供一个可靠的数据传输服务解决互联网中的数据丢失和延迟问题以提供有效的数据传输不能让底层的网络和路由过载,概述TCP实现:,可靠传输的必要性,编写应用程序向本机某个I/O设备发送数据,依赖底层计算机系统确保传输可靠,不需要验证数据是否到达,系统保证数据不丢失,重复和乱序希望:编写互联网程序遵循同样标准和常规技术,把网络接口作为常规I/O要求:互联网软件(协议)来保证实现:传输协议(TCP)实现可靠性,应用程序发送和接受数据就和传输协议打交道,可靠传输的必要性编写应用程序向本机某个I/O设备发送数据,依,传输层的地位:中间层,应用层,传输层,网络层,数据链路层,物理层,面向信息处理,面向通信,用户功能,网络功能,两种观点划分高层与低层,传输层的地位:中间层 应用层传输层网络层数据链路层物,传输层的功能, 基本功能:提供端到端(进程-进程)的可靠通信,即向高层用户 屏 蔽通信子网的细节,提供通用的传输接口。弥补了网络层所提供服务的不足:剩余差错率和信号失败率,数据传输速率、吞吐量和传输时延,适配会话层协议数据单元和网络层协议数据单元。 功能:传输连接的建立和释放、多路复用与分割、分段和重新组装、组块和分块、 端到端的顺序控制、差错检测及恢复、QOS监测。 传输协议的简单/复杂决定于子网提供服务的多少 。,通用的传输接口,传输协议 2,传输协议 1,网络层服务 1,网络层服务 2,传输层的功能 基本功能:提供端到端(进程-进程)的可靠通信,TCP提供的服务,面向连接:首先请求一个到目的地的连接点对点通信:(point to point),两个端点完全可靠:确保正确传输全双工通信:在两个方向上缓冲数据流接口:允许连续的字节流穿过连接,不提供记录式表示法可靠的连接建立(机器重启,两个连接数据)完美的连接终止:TCP确保在关闭连接之前传递数据的所有数据的可靠性,TCP提供的服务面向连接:首先请求一个到目的地的连接,端对端服务,TCP是端对端协议:直接从一个机器的应用到另一个机器的应用的连接虚连接(virtual connection):软件实现,软件通过信息来提供连接TCP使用IP来携带消息,每一个TCP消息封装在数据报后通过互联网虚连接的每一端都需要TCP软件,中间路由器不需要,正常情况下IP不阅读TCP内容,IP仅作为数据来传递,端对端服务TCP是端对端协议:直接从一个机器的应用到另一个机,传输层模型,传输服务用户,传输服务用户,应用层,抽象机器,. . .,. .,传输服务提供者(传输实体),传输服务访问点TSAP,连接端点, 传输服务 - 向用户提供高效、可靠、价格合理的服务。,传输层模型传输服务用户传输服务用户 应用层抽象机器. .,传输层协议与数据链路层协议的区别,网络,物理信道,数据链路层的环境,传输层的环境,结点1,结点2,主机A,主机B,传输层协议与数据链路层协议的区别网络物理信道数据链路层的环境,端到端,端到端(运输层)协议提供不同主机的进程之间的逻辑通信服务网络层协议提供主机间的逻辑通信包括如下功能:复用连接管理分段/重组可靠递交流量控制拥塞控制,端到端端到端(运输层)协议,基于端口的复用,基于端口的复用IP 层端口 a端口 b端口 c基于端口的复用,QoS参数, 连接建立时延:从传输用户提出连接请求到接收到连接证实的时间 建立连接失败可能性:在最大连接建立时延内连接未能建立的比例 吞吐量:在一段时间间隔内,每秒传送的用户数据字节数 转接时延:从源主机传输用户发出消息到目的主机传输用户接收到该消息的时间 残余差错率:丢失和出错消息占全部发送的消息的比例 保护:防止未经授权的第三方读取或修改传输的数据 优先级:有优先级的传输和同级用户的公平 恢复力:在内部故障或拥塞时,传输层自发终止连接、重新连接的可能性,QoS参数 连接建立时延:从传输用户提出连接请求到接收到连,传输协议的要素之一:寻址,传输用户(客户端)与服务器建立连接的过程示例,应用进程,服务器,TSAP 6,TSAP 122,NSAP X,NSAP Y,传输层,传输层,网络层,网络层,(1) 服务器以TSAP122为地址,等待呼入(2) HOST 1的应用进程发出连接请求,源地址为TSAP6,目的地址为TSAP122 (3) HOST 1的传输实体通过NSAP在HOST 1与HOST 2之间建立网络连接(4) HOST 1的传输实体将应用进程的连接请求传送给HOST 2的传输实体(5) HOST 2的传输实体询问应用服务器是否同意建立传输连接,HOST 1,HOST 2,传输协议的要素之一:寻址传输用户(客户端)与服务器建立连接的,因特网的传输协议- TCP和UDP, TCP(传输控制协议):提供面向连接服务 UDP(用户数据报协议):提供无连接服务 端口: TSAP = 端口号 + NSAP地址 熟知(公认)端口:常用的应用服务的端口,RPC,SNMP,TFTP,SMTP,FTP,TELNET,(),(),(),(),(),(),111,161,69,25,21,23,UDP,TCP,A,B,C,IP = 202.112.103.47,端口500,端口501,IP = 202.112.103.47,端口500,IP = 202.112.103.225,端口23,连接,因特网的传输协议- TCP和UDP TCP(传输控制协,常用的熟知端口号,7ECHO回送37TIME时间42NAMESERVER主机名字服务器53DOMAIN域名服务器67BOOTPS启动协议服务69TFTP简单文件传输161SNMPSNMP 网络监控20FTP-DATA文件传输协议(数据连接)21FTP文件传输协议(控制连接)23TELNET远程登录终端37TIME时间43NICNAMEwhois 程序79FINGERfinger 程序80HTTPWEB 服务,UDP熟知端口号,TCP熟知端口号,常用的熟知端口号7ECHO回送UDPTCP,TCP消息格式,0,31位,3,10,15,源端口,目的端口,发送序号,18,确认序号,检查和,选项和填充( 0 ),首部长度,URG,ACK,PSH,RST,SYN,FIN,保留,窗口大小,紧急指针,数据(可选),TCP消息格式 031位31015源端口目的端口 发送序,TCP消息头部字段, 源端口/目的端口:TSAP地址 发送序号:所发送的数据的第一字节的序号 确认序号:期望收到的数据(下一个消息)的第一字节的序号 首部长度:单位为32位(双字) 控制字段: 紧急位(URG):1表示加急数据,此时紧急指针的值为加急 数据的最后一个字节的序号 确认位(ACK):1表示确认序号字段有意义 急迫位(PSH):1表示请求接收端的传输实体尽快交付应用层 重建位(RST):1表示出现严重差错,必须释放连接,重建 同步位(SYN):SYN=1,ACK=0 表示连接请求消息 SYN=1,ACK=1 表示同意建立连接消息 终止位(FIN):1表示数据已发送完,要求释放连接 窗口大小:通知发送方接收窗口的大小,即最多可以发送的字节数 检查和:12B的伪首部+首部+数据,TCP消息头部字段 源端口/目的端口:TSAP地址,TCP 报文段中的码元比特,码元比特字段(CODE BITS) 6bit指出报文段的目的和内容,给出报文头中其他字段的解释,TCP 报文段中的码元比特码元比特字段(CODE BITS),三次握手(3-way handshake),理论证明:三次握手是包丢失,重复,延迟情况下确保非模糊协定的冲要条件,三次握手(3-way handshake)理论证明:三次握手,建立TCP连接:三次握手,主机 1,主机 2,SYN=1,ACK=0 Send_Seq=x,SYN=1,ACK=1 Send_Seq=y, Ack_Seq=x+1,通知应用进程,主机 1,主机 2,应用进程要求连接,通知应用进程,Ack_Seq=y+1,SYN=1, ACK=0, Send_Seq=x,SYN=1, ACK=0, Send_Seq=y,SYN=1,ACK=1 Send_Seq=x, Ack_Seq=y+1,SYN=1,ACK=1 Send_Seq=y, Ack_Seq=x+1,正常连接情形,呼叫冲突:两个主机在相同的一对 SOCKET之间建立连接, 初始序号的设置:基于时钟的方法,RESET,建立TCP连接:三次握手主机 1主机 2SYN=1,ACK=,连接释放:文雅释放,主机 1,主机 2,FIN=1, Send_Seq=x,Ack_Seq= x+1,应用进程要求释放连接,通知应用进程,应用进程要求释放连接,通知应用进程,FIN=1, Send_Seq= y,Ack_Seq= y+1,整个连接释放, 采用定时器方法,处理确认丢失的情况,连接释放:文雅释放主机 1主机 2FIN=1, Send_S,TCP连接管理的有限状态自动机,CLOSED,LISTEN,SYN RCVD,SYN SENT,ESTABLISHED,FIN WAIT1,FIN WAIT2,CLOSING,CLOSE WAIT,LAST ACK,TIMED WAIT,CLOSED,客户应用进程请求连接,3 次握手建立连接,释放连接请求,对方应答,收到对方的释放请求,超时,LISTEN,收到连接请求,收到客户端的确认,收到对方的释放请求,释放连接请求,对方应答,收到对方的释放请求,对方应答,对方请求+应答,释放连接请求,拒绝连接,请求建立连接,同时建立连接,TCP连接管理的有限状态自动机CLOSEDLISTENSYN,重发(retransmission),可靠性:通过重发解决包丢失,定时和确认机制广域网传输延迟比局域网的增加和不定适应性重发:TCP监视当前连接的延迟(roud-trap delay,统计),改变重发定时器适应条件变化,重发(retransmission) 可靠性:通过重发解决包,TCP窗口管理的问题,(1) 如果每收到应用进程的消息即发送,对于短消息,会浪费带宽 解决:A. 推迟发送确认和窗口更新消息,以捎带信息 B. Nagle 算法,尽量把短消息组合发送(2) “傻瓜窗口”问题,接收端每次只能向应用进程交付少量消息, 窗口更新消息只提供少量缓存,导致低效 解决:Chark 方法,禁止接收方频繁发送窗口更新消息,有一定 空闲缓存后再发送,TCP窗口管理的问题(1) 如果每收到应用进程的消息即发,缓冲流控与窗口,TCP采用窗口机制来控制数据流窗口:建立连接的每一端分配一个缓冲区保持输入数据,并将缓冲区的尺寸发送给另一方;发送确认时,包含自己剩余的缓冲区尺寸,窗口通告(window advertisement),缓冲流控与窗口TCP采用窗口机制来控制数据流,TCP的窗口管理,发送端,接收端,Send_Seq=0(0-2047),Ack_Seq= 2048,WIN=2048,应用进程交付3K,Ack_Seq= 4096, WIN= 0,向应用进程交付2K,空闲缓存,4K,2K,Send_Seq=2048 (2048-4095),0,Ack_Seq= 4096, WIN= 2048,2K,暂停发送,Send_Seq=4096 (4096- 5119),1K,TCP的窗口管理发送端接收端Send_Seq=0(0-204,流量控制和缓存问题,(1) 缓存大小和分配方式:固定大小缓存、可变大小缓存;为每个连接只分配 一个缓存、多个连接公用缓存。(2) 低带宽突发业务,在发送端缓存;高速信息传输,在接收端缓存(3) 动态缓存分配:接收端通知发送端所分配/剩余的空闲缓存数量,无 空闲缓存时,发送端暂停发送,主机 1,主机 2,要求 8个缓存,BUF= 4,SEQ= 0,只有 4 个空闲缓存,SEQ= 1,SEQ= 2,ACK= 1,BUF = 3,有 3 个空闲缓存,主机 1,主机 2,SEQ = 3,ACK = 4 BUF= 0,SEQ= 4,SEQ= 2, 超时重发,ACK= 4,BUF = 1,暂停发送,ACK= 4,BUF = 1,SEQ= 5,继续发送,流量控制和缓存问题(1) 缓存大小和分配方式:固定大小缓存,拥塞控制congestion control,丢包,长延迟,重发congestion collapse一旦包丢失,减少重发数据的速率,迅速后撤机制发送一个包,没丢失安全到达,数据量加倍,依次递推,直到窗口通告一半,拥塞控制congestion control丢包,长延迟,重,TCP的拥塞控制, 两个潜在问题:网络容量和接收方容量 发送方要保持2个窗口:拥塞窗口和接收方窗口,取较小的值为可以 发送的字节数 拥塞控制的参数:拥塞窗口、接收方窗口、窗口临界值 拥塞控制算法:在定时器不超时的情况下,拥塞窗口从0开始以指数级增大;到达临界值时,按线性增大,直到和接收窗口相同;一旦出现超时,临界值减半,拥塞窗口降为0,重新开始增大。, 重发时间的确定, 平均往返时延(RTT):RTT = RTT + ( 1- ) M 其中修正因子 为 0-1,表示RTT的更新速率; M为消息发出到收到确认的时间 重发超时值的计算算法1:Jackson算法D = D + ( 1- ) | RTT-M | , 其中D为偏差 超时值 = RTT + 4 D重发超时值的计算算法2:Karn 算法 重发时间 = 2 原来的重发时间,TCP的拥塞控制 两个潜在问题:网络容量和接收方容量 重,多路复用和分割,传输层连接和网络层连接的对应方式:一一对应方式;向上多路复用:考虑网络连接的价格,多个传输连接复用到一个网络连接;向下多路复用:基于技术考虑,如卫星信道带宽利用率低,可以使 一个传输连接使用多个网络连接,多路复用和分割传输层连接和网络层连接的对应方式:,UDP的格式,0,31位,15,源端口,目的端口,UDP长度,检查和,与TCP相同,检查和的计算也包括12字节的伪首部:源/目的IP地址、UDP协议号(17)和UDP长度,UDP的格式 031位15源端口目的端口UDP长度检查和,UDP,运输层协议,只包括复用功能提供不可靠、不保序的数据报服务复用:Endpoint:IP地址16比特端口号客户方、服务方例子:telnet简单的差错检测功能:可选,UDP运输层协议,只包括复用功能,UDP,UDP头部:8个字节检验和:检验和错误的UDP报文被丢弃,1的反码运算,和IP检验和类似全0表示不使用检验和,UDPUDP头部:8个字节,UDP 协议封装,UDP 数据报由两部分构成:UDP 报头和数据区UDP 报文是封装在 IP 分组中进行传送的,应用数据,UDP 协议封装UDP 数据报由两部分构成:UDP 报头和数,UDP 数据报的格式,UDP 数据报的格式IP header source por,UDP 数据报的校验,UDP 数据报校验是一项可选的功能用户禁止该功能可以进一步提高通信的效率UDP 校验和的计算方法:与 IP 分组头的校验相同校验和计算:除覆盖数据报外,还覆盖一个 UDP 伪报头,伪报头并非 UDP 数据报中实际的有效成分伪报头是一个虚拟的数据结构:其中的信息是从数据报所在 IP 分组头的分组头中提取的使用伪报头是为了验证 UDP 数据报是否正确地传到了目的系统中伪报头的采用在一定程度上违反了网络结构分层的原则,UDP 数据报的校验UDP 数据报校验是一项可选的功能源 I,UDP 基本工作过程,UDP 数据报的发送和接收通过 UDP 端口实现端口是一个可读写的结构,具有内部的报文缓冲区数据报发送UDP 软件将用户数据封装在 UDP 数据报中转交给 IP 软件,进行 IP 封装和转发数据报的接收IP 层接收到 UDP 数据报, 提交给 UDP 软件的各端口端口判断该报文的目的端口号是否与当前端口匹配若匹配成功,将该数据报保存到相应端口的接收队列中;(若队列已满,则丢弃该数据报)若未匹配,则丢弃该数据报,同时向源端发送 “端口不可达” 的 ICMP 包,UDP 基本工作过程UDP 数据报的发送和接收通过 UDP,ATM中与传输层相关的层次:ATM适配层(AAL),ATM层提供的服务种类 :,类型,名称,应用示例,CBR,固定比特率,电话系统、实时的音频、视频数据,RT-VBR,实时可变比特率,压缩的音频、视频数据(如电视会议),NRT-VBR,非实时可变比特率,可容忍一定的时延抖动,如多媒体Email,ABR,可用比特率,适于突发业务,承诺最低(平均)带宽,但不保证最高带宽需求,如Web浏览,UBR,未指定比特率,不作任何承诺,Best-Effort, 用于Email、 IP包传输,ATM中与传输层相关的层次:ATM适配层(AAL)ATM层提,AAL提供的服务, 服务分类方法:实时/非实时固定比特率/可变比特率面向连接/无连接 4类服务,A类,B类,C类,D类,源端和目的端的定时关系,比特率,连接方式,固定,可变,实时,非实时,面向连接,无连接,AAL提供的服务 服务分类方法:实时/非实时A类B类C类D,AAL的结构,物理层,ATM层,分段重装子层SAR,公共部分会聚子层CPCS,业务特定会聚子层SSCS,AAL,会聚子层,AAL的结构 物理层 ATM层分段重装子,AAL1:传输A类业务, 传输位流,不考虑消息分界,无差错控制 CS功能:没有协议,处理信元时延变化及净荷重装时延,接收端时钟恢复, 检测丢失和误插入信元,将应用层消息/位流分解为46/47字节单元 SAR功能:构成信元净荷,非 P,P,0,1,SN,SN,SNP,SNP,EP,EP,指针,47字节用户数据,46字节用户数据,1 3 3 1 bit,1 B, P信元用于要求保留消息边界的消息 SN:顺序号,用于检测丢失或误插入信元 SNP:顺序号保护,即检验和,可纠正SN字段的1位错,检测2位错 EP:偶校验,对前面7位进行 指针:指出下一消息开始的偏移量,AAL1:传输A类业务 传输位流,不考虑消息分界,无差错控,AAL2:传输B类业务, CS功能:没有协议,时钟恢复,检测丢失和误插入信元,声音/图象业务的 前向纠错(FEC) SAR功能:比AAL1复杂,SN,IT,45字节用户数据,LI,CRC,1B,2 B, SN:顺序号,用于检测丢失或误插入信元 IT:信息类型,指明该信元处于消息的开始、中间或结尾 LI:长度指示符,说明用户数据的长度(字节) CRC:对SAR-PDU进行校验,AAL2:传输B类业务 CS功能:没有协议,时钟恢复,检测,AAL3/4:传输C/D类业务, 要求可靠传输,但不要求实时性 两种模式:流模式 - 不保留消息边界 消息模式 - 保留消息边界 每种模式都分为两类操作:确保操作和不确保操作 多路复用功能:多个会话复用同一条VC CS - PDU:,CPI,Btag,用户数据(1-65535 B),填充,1,0-3,BA容量,1,2,1 1 2 B,未用,Etag,长度, CPI:公共部分指示符,说明消息类型及BA容量和长度字段的计算单位 Btag / Etag:开始/结束标签,标识消息的首尾,用于检查丢失和误插入信元 BA容量:通知接收方要为将到达的消息分配的缓存大小 长度:用户数据长度,AAL3/4:传输C/D类业务 要求可靠传输,但不要求实时,AAL3/4:传输C/D类业务, SAR:将CS-PDU分成44字节的段,并组成SAR-PDU,ST,SN,用户数据(44B),2,MID,4,10,6 10 bit,LI,CRC, ST:段类型,指出该段是消息的开始、中间或结尾,或者是一个单消息信元 SN:顺序号,用于检测丢失或误插入信元 MID:多路复用标识,说明该信元属于哪个会话 LI:长度指示符,说明用户数据的长度(字节) CRC:对SAR-PDU进行校验, AAL3/4 的缺点: (1) 开销大,每个信元4B (2) 10位CRC,4位顺序号不足以保护长数据块的传输,AAL3/4:传输C/D类业务 SAR:将CS-PDU分,AAL5:简单、高效传输C/D类业务, CS - PDU:,用户数据(1-65535 B),填充,1 2 4 B,未用,长度,CRC,UU,1, 填充:0-47,确保CS - PDU为48字节的整数倍 UU:用户 - 用户,由高层使用, 长度:用户数据长度 CRC:32位,对整个CS-PDU进行校验, SAR:将CS-PDU分为48字节的段,不增加任何首/尾字段,仅在消息的 最后一个信元中将ATM信头的PTI(净荷类型)字段中的一位置“1”,以保留消息边界,AAL5:简单、高效传输C/D类业务 CS - PDU:,AAL协议的比较,AAL1 AAL2 AAL3/4 AAL5,业务类型,A类 B类 C/D类 C/D类,多路复用,消息定界,缓存分配,用户信息字段,CS填充,CS协议开销,CS校验,SAR净荷长度,SAR协议开销,SAR校验,无 无 有无,无 无 Btag / Etag PTI,无 无 有 无,无 无 无 有,无 无 有 有,无 无 8 B8 B,无 无 无 有,46-47 B 45B 44B48B,1-2B 3 B 4 B 0,无 无 有 无,AAL协议的比较AAL1 AAL2,客户机/服务器模式,客户机/服务器模式,CLIENT-SERVER PARADIGM,客户机和服务器指通信中的两个应用应用程序通知本地协议软件希望得到一个特定类型的信息,然后等待收到的信息恰好与应用程序指定的相符,协议软件将其传给应用通信双方必须一个主动启动交互,另一个被动接受,CLIENT-SERVER PARADIGM客户机和服务器指,客户服务器交互,客户与服务器的特性(主动被动)服务器程序与服务类计算机请求应答和数据流向客户请求服务器应答服务器也可以主动发送数据(文件服务)客户/服务器交互使用传输协议,客户服务器交互,传输协议和客户/服务器交互,传输协议和客户/服务器交互,单机上的多重服务,单机上的多重服务,服务的标示,传输协议保证客户无二义性的指明所希望的服务:赋予每一个服务一个唯一的标示,要求客户机和服务器都使用该标示协议端口号:16位整形数据 port number协议登记:服务器开始时,通过指明它所提供的服务的标示在本地协议软件登记,客户机通过该标示指明需要的服务,服务的标示传输协议保证客户无二义性的指明所希望的服务:赋予每,多服务器副本,并发concurrency:允许同时运行多个应用程序并发程序:具有一个以上控制线程的程序并发性:每个请求不等待他人完成,独立副本动态服务器创建:接受请求生成新线程;处理单个请求的代码二义性克服本地协议端口号:客户拥有,不会赋予任何服务器目的协议端口号:服务器的协议端口号,多服务器副本并发concurrency:允许同时运行多个应用,复杂客户/服务器交互,支持多协议服务多个服务器一个服务器复杂交互不同服务不同服务器服务和客户转换交互与循环依赖,复杂客户/服务器交互支持多协议服务,套接口,API:应用程序接口套接字socket API套接字库和操作系统套接字通信和UNIX I/O 关系描述符、网络IO集成优势:小整数描述符:不必每次传输指明远程目的地址细节Open,read,write,close函数,参数与选项:选取特定传输协议远程机器地址客户还是服务器等细节,套接口API:应用程序接口,SOCKET概念, SOCKET(套接字/管套/插口):标识连接的端点,IP地址 + 端口号 。 TCP和UDP的SOCKET机制的工作过程:,TCP,SERVER,SERVER,CLIENT,CLIENT,UDP,申请SOCKET,申请SOCKET,申请SOCKET,申请SOCKET,LISTEN,CONNECT,ACCEPT,SEND,RECEIVE,SENDTO,RECVFROM,SENDTO,RECVFROM,CLOSE,CLOSE,CLOSE,CLOSE,SOCKET概念 SOCKET(套接字/管套/插口):标识,套接字API过程,套接字API过程,多服务支持,多服务线程继承其它套接字地址转换名字和地址显示信息,多服务支持多服务,