《互联网及其应用4-2--传输控制和socket》由会员分享,可在线阅读,更多相关《互联网及其应用4-2--传输控制和socket(58页珍藏版)》请在金锄头文库上搜索。
1、传输层(传送层、运输层),概述,TCP实现: 利用底层使用IP提供的不可靠服务,为应用程序提供一个可靠的数据传输服务 解决互联网中的数据丢失和延迟问题以提供有效的数据传输 不能让底层的网络和路由过载,可靠传输的必要性,编写应用程序向本机某个I/O设备发送数据,依赖底层计算机系统确保传输可靠,不需要验证数据是否到达,系统保证数据不丢失,重复和乱序 希望:编写互联网程序遵循同样标准和常规技术,把网络接口作为常规I/O 要求:互联网软件(协议)来保证 实现:传输协议(TCP)实现可靠性,应用程序发送和接受数据就和传输协议打交道,传输层的地位:中间层,应用层,传输层,网络层,数据链路层,物理层,面向信
2、息 处理,面向 通信,用户 功能,网络 功能,两种观点划分高层与低层,传输层的功能, 基本功能:提供端到端(进程-进程)的可靠通信,即向高层用户屏 蔽通信子网的细节,提供通用的传输接口。弥补了网络层所提供服务的不足:剩余差错率和信号失败率,数据传输速率、吞吐量和传输时延,适配会话层协议数据单元和网络层协议数据单元。功能:传输连接的建立和释放、多路复用与分割、 分段和重新组装、组块和分块、端到端的顺序控制、差错检测及恢复、QOS监测。 传输协议的简单/复杂决定于子网提供服务的多少 。,通用的传输接口,传输协议 2,传输协议 1,网络层服务 1,网络层服务 2,TCP提供的服务,面向连接:首先请求
3、一个到目的地的连接 点对点通信:(point to point),两个端点 完全可靠:确保正确传输 全双工通信:在两个方向上缓冲数据 流接口:允许连续的字节流穿过连接,不提供记录式表示法 可靠的连接建立(机器重启,两个连接数据) 完美的连接终止:TCP确保在关闭连接之前传递数据的所有数据的可靠性,端对端服务,TCP是端对端协议:直接从一个机器的应用到另一个机器的应用的连接 虚连接(virtual connection):软件实现,软件通过信息来提供连接 TCP使用IP来携带消息,每一个TCP消息封装在数据报后通过互联网 虚连接的每一端都需要TCP软件,中间路由器不需要,正常情况下IP不阅读TC
4、P内容,IP仅作为数据来传递,传输层模型,传输服务用户,传输服务用户,应用层,抽象机器,. . .,. .,传输服务提供者(传输实体),传输服务访问点TSAP,连接端点, 传输服务 - 向用户提供高效、可靠、价格合理的服务。,传输层协议与数据链路层协议的区别,网络,物理信道,数据链路层的环境,传输层的环境,结点1,结点2,主机A,主机B,端到端,端到端(运输层)协议 提供不同主机的进程之间的逻辑通信服务 网络层协议提供主机间的逻辑通信 包括如下功能: 复用 连接管理 分段/重组 可靠递交 流量控制 拥塞控制,基于端口的复用,QoS参数, 连接建立时延:从传输用户提出连接请求到接收到连接证实的时
5、间 建立连接失败可能性:在最大连接建立时延内连接未能建立的比例 吞吐量:在一段时间间隔内,每秒传送的用户数据字节数 转接时延:从源主机传输用户发出消息到目的主机传输用户接收到该消息的时间 残余差错率:丢失和出错消息占全部发送的消息的比例 保护:防止未经授权的第三方读取或修改传输的数据 优先级:有优先级的传输和同级用户的公平 恢复力:在内部故障或拥塞时,传输层自发终止连接、重新连接的可能性,传输协议的要素之一:寻址,传输用户(客户端)与服务器建立连接的过程示例,应用进程,服务器,TSAP 6,TSAP 122,NSAP X,NSAP Y,传输层,传输层,网络层,网络层,(1) 服务器以TSAP1
6、22为地址,等待呼入 (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,TF
7、TP,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,连接,常用的熟知端口号,7 ECHO 回送 37 TIME 时间 42 NAMESERVER 主机名字服务器 53 DOMAIN 域名服务器 67 BOOTPS 启动协议服务 69 TFTP 简单文件传输 161 SNMP SNMP 网络监控 20 FTP-DATA 文件传输协议(数据连接
8、) 21 FTP 文件传输协议(控制连接) 23 TELNET 远程登录终端 37 TIME 时间 43 NICNAME whois 程序 79 FINGER finger 程序 80 HTTP WEB 服务 ,UDP 熟知 端口号,TCP 熟知 端口号,TCP消息格式,0,31位,3,10,15,源端口,目的端口,发送序号,18,确认序号,检查和,选项和填充( 0 ),首部长度,URG,ACK,PSH,RST,SYN,FIN,保留,窗口大小,紧急指针,数据(可选),TCP消息头部字段, 源端口/目的端口:TSAP地址 发送序号:所发送的数据的第一字节的序号 确认序号:期望收到的数据(下一个消
9、息)的第一字节的序号 首部长度:单位为32位(双字) 控制字段:紧急位(URG):1表示加急数据,此时紧急指针的值为加急 数据的最后一个字节的序号确认位(ACK):1表示确认序号字段有意义急迫位(PSH):1表示请求接收端的传输实体尽快交付应用层重建位(RST):1表示出现严重差错,必须释放连接,重建同步位(SYN):SYN=1,ACK=0 表示连接请求消息SYN=1,ACK=1 表示同意建立连接消息终止位(FIN):1表示数据已发送完,要求释放连接 窗口大小:通知发送方接收窗口的大小,即最多可以发送的字节数 检查和:12B的伪首部+首部+数据,TCP 报文段中的码元比特,码元比特字段(COD
10、E BITS) 6bit 指出报文段的目的和内容,给出报文头中其他字段的解释,三次握手(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
11、_Seq=y+1,SYN=1,ACK=1 Send_Seq=y, Ack_Seq=x+1,正常连接情形,呼叫冲突:两个主机在相同的一对 SOCKET之间建立连接, 初始序号的设置:基于时钟的方法,RESET,连接释放:文雅释放,主机 1,主机 2,FIN=1, Send_Seq=x,Ack_Seq= x+1,应用进程要求释放连接,通知应用进程,应用进程要求释放连接,通知应用进程,FIN=1, Send_Seq= y,Ack_Seq= y+1,整个连接释放, 采用定时器方法,处理确认丢失的情况,TCP连接管理的有限状态自动机,CLOSED,LISTEN,SYN RCVD,SYN SENT,EST
12、ABLISHED,FIN WAIT1,FIN WAIT2,CLOSING,CLOSE WAIT,LAST ACK,TIMED WAIT,CLOSED,客户应用进程请求连接,3 次握手建立连接,释放连接请求,对方应答,收到对方的 释放请求,超时,LISTEN,收到连接请求,收到客户端的确认,收到对方的释放请求,释放连接请求,对方应答,收到对方的释放请求,对方应答,对方请求+应答,释放连接请求,拒绝连接,请求建立连接,同时建立连接,重发(retransmission),可靠性:通过重发解决包丢失,定时和确认机制 广域网传输延迟比局域网的增加和不定 适应性重发:TCP监视当前连接的延迟(roud-t
13、rap delay,统计),改变重发定时器适应条件变化,TCP窗口管理的问题,(1) 如果每收到应用进程的消息即发送,对于短消息,会浪费带宽解决:A. 推迟发送确认和窗口更新消息,以捎带信息B. Nagle 算法,尽量把短消息组合发送 (2) “傻瓜窗口”问题,接收端每次只能向应用进程交付少量消息, 窗口更新消息只提供少量缓存,导致低效 解决:Chark 方法,禁止接收方频繁发送窗口更新消息,有一定 空闲缓存后再发送,缓冲流控与窗口,TCP采用窗口机制来控制数据流 窗口:建立连接的每一端分配一个缓冲区保持输入数据,并将缓冲区的尺寸发送给另一方;发送确认时,包含自己剩余的缓冲区尺寸,窗口通告(w
14、indow advertisement),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,流量控制和缓存问题,(1) 缓存大小和分配方式:固定大小缓存、可变大小缓存;为每个连接只分配一个缓存、多个连接公用缓存。 (2) 低带宽突发业务,在发送端
15、缓存;高速信息传输,在接收端缓存 (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,继续发送,拥塞控制congestion control,丢包,长延迟,重发congestion collapse 一旦包丢失,减少重发数据的速率,迅速后撤机制 发送一个包,没丢失安全到达,数据量加倍,依次递推,直到窗口通告一半,TCP的拥塞控制, 两个潜在问题:网络容量和接收方容量 发送方要保持2个窗口:拥塞窗口和接收方窗口,取较小的值为可以 发送的字节数 拥塞控制的参数:拥塞窗口、接收方窗口、窗口临界值 拥塞控制算法:在定时器不超时的情况下,拥塞窗口从0开始以指数级增大;到达临界值时,按线性增大,直到和接收窗口相同;一旦出现超时,临界值减半,拥塞窗口降为0,重新开始增大。, 重发时间的确定,