PartXIII网络互连Part4(传输协议,UDPandTCP,协议端口)2020/1/12传输协议(TCP)是协议栈中单独的一层概念上处于应用层和IP层的中间IPARPRARPICMPTCPUDPNVPSMTPDNSFTPTELNET802.3802.4802.5PPP等数据链路层物理层网络层传输层应用层2020/1/13术语IP–提供计算机到计算机间的通信服务–源和目的地址都是计算机–称为machine-to-machine的通信TransportProtocols–提供应用程序到应用程序间的通信服务–需要扩展寻址机制来识别应用程序–称为end-to-end的通信2020/1/14传输协议的功能识别发送和接收应用程序可选的提供如下服务–可靠性–流控制–阻塞控制注意:不是所有的传输协议都能提供以上的功能“可靠”的语义:–数据在传输时不丢失、不乱序、不被复制。–不同于“安全”。2020/1/15两种主要的传输协议传输控制协议(TCP)用户数据报协议(UDP)主要不同处–应用程序接口不同–功能不同2020/1/16用户数据报协议(UserDatagramProtocol,UDP)提供不可靠(unreliable)传输服务–不可靠:意味服务时可能会有丢包、坏包等情况发生,UDP不对此负责。只需最少的–额外负荷–计算量–通讯量适用于:局域网应用程序2020/1/17UDPdetails采用无连接服务模式–面向消息的服务接口每条消息被封装到IP数据包中UDP报头中标记了–发送程序–接收程序2020/1/18标示应用程序不能扩展IP地址–已经没有不用的位不能使用依赖于操作系统的东西–ProcessID–Tasknumber–Jobname必须适用于所有的计算机系统2020/1/19标示应用程序(续)创造新的抽象–只用于TCP/IP协议栈–明确区分和标示发送者和接收者方法:–为每一个应用程序分配唯一的整数标识–称为protocolportnumber2020/1/110协议端口服务器–按标准使用端口–总是使用相同的端口号–使用低端口号客户端–从协议软件得到不用的端口–使用高端口号如何查看服务器上有哪些端口可供使用?2020/1/111协议端口范例53号端口被指派用来服务于域名服务程序DNS使用DNS的应用程序得到端口28900UDP数据包从应用程序发送到DNS服务器有–源端口28900–目的端口53当DNS服务器做出应答,数据处理后数据包有–源端口53–目的端口289002020/1/112传输控制协议(TCP)英特网使用的主要传输协议广泛地使用提供完全可靠的传输服务–应用程序不必担心IP包的复制、丢失等问题2020/1/113TCP特点面向连接的服务点对点全双工通信流接口:应用程序通过它发送持续的字节序列。流分解成segments每个segment被封装在IP数据包中传输使用协议端口来识别应用程序2020/1/114TCP特点总结TCPprovidesacompletelyreliable(nodataduplicationorloss),connection-oriented,full-duplexstreamtransportservicethatallowstwoapplicationprogramstoformaconnection,senddataineitherdirection,andthenterminatetheconnectionTCP提供完全可靠的(无数据被复制或丢失),面向连接的,全双工流式传输服务,允许两个应用程序建立一个连接,双向传输数据,然后结束这一连接。每一个TCP连接均可可靠的开始、优雅地结束,所以数据在连接关闭前均可被可靠的传输。2020/1/115TCP和其他协议之间的关联一台计算机上的TCP实体使用IP和另外一台计算机上的TCP实体进行通讯.2020/1/116明显的矛盾IP提供不可靠的尽力传输服务TCP使用IP而TCP提供完全可靠的传输这怎么可能?系统重启后,如何区分上一个连接的数据包?2020/1/117达成可靠性可靠的连接启动可靠的数据传输完美的连接关闭2020/1/118可靠数据传输确认–当数据到达时候,接收者返回短消息–称为acknowledgment重发–消息一发送,发送者起动计时器–如果在确认消息到达前计时器终止,发送者将重发消息2020/1/119重传图解2020/1/120在重传前TCP会等多久?确认信息到达的时间依赖于–与目的地的距离LAN:几毫秒卫星?–当前的流量条件可能同时打开多个连接流量条件可能迅速改变2020/1/121要点数据到达目的地以及返回确认所需要的延迟依赖于网络上流量和离目的地的距离.因为TCP允许多应用程序和多个目的地进行并发通讯,导致流量状况的不断变化,因此TCP必须处理迅速变化的多种不同延迟.2020/1/122解决重传问题TCP发明以前,重传延迟使用固定值--往往较大。–显然不好最好能根据不断变化的条件而改变–检测并估计每个连接的往返时间–使用当前的估计来设置重发计时器–称为;自适应重传TCP成功的关键2020/1/123自适应重传的图解延时(空闲时间)依赖于对当前回路的估计2020/1/124TCP流控制接收者–宣告可用的缓冲区大小–称为window发送者–在确认信息到达前可以发出整个窗口大小的内容2020/1/125窗口宣告每个确认信息都包含了新窗口信息–称为windowadvertisement–可以为0(称为closedwindow)解释:我已经收到x了,你还可以发y字节的数据.2020/1/126IllustrationofWindowAdvertisement2020/1/127连接启动和关闭连接启动–必须为可靠的连接关闭–必须为完美的难2020/1/128为什么启动和关闭连接困难分段可能被–丢失–复制–延迟–无顺序的递送–任一方程序可以崩溃–任一方程序可以被重新启动需要避免重复的“shutdown”消息影响后面的连接2020/1/129TCP启动/关闭连接问题的解决使用三次消息交换称为3次握手协议是明确、可靠的启动和明确、完美的关闭连接的必要和充分条件采用两个特殊的分段–SYN用于启动连接–FIN用于关闭–每次新连接,均采用一个新的32位随机数保证每一旧数据包干扰新连接。2020/1/130用于关闭连接的3次握手在每个方向上发送的确认用于保证所有的数据在连接关闭前均已到达2020/1/131TCP数据段格式所有的TCP有相同的格式–数据–确认信息–SYN(启动)–FIN(关闭)数据段分为两部分–报头–有效负载(0或多于0字节的数据)2020/1/132TCP数据段格式(续)报头包含–协议端口号,用来识别发送端应用接收端应用–指明消息类型的位标记,比如SYNFINACK–用于窗口宣告,确认信息等的域.2020/1/133TCP数据段序列号SEQUENCENUMBER用于指明数据在在流中什么位置很少数据段包含OPTIONS2020/1/134SUMMARY传输协议处于应用层协议和网际协议之间TCP/IP包含两种传输协议–用户数据报协议(UDP)–传输控制协议(TCP)UDP–不可靠的–面向消息的接口2020/1/135SUMMARY(续)TCP–英特网上使用的主要传输协议–完全可靠的–面向流的接口–使用自适应重传机制2020/1/136SUMMARY(续)协议端口–整数–用于识别发送和接收应用–允许多应用明确的,并发的通讯