传输层协议概述

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

传输层位置•从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。物理层网络层传输层应用层数据链路层面向信息处理面向通信用户功能网络功能2传输层与网络层的关系网络层为主机之间数据如何经过路由器选路到达对方提供服务传输层加强了网络层的服务,在数据能到达对方的前提下,为数据的传输进行控制,为进程间进行通信提供服务传输层位置传输层的作用之一:标志应用程序传输层的作用之一:标志应用程序传输层的作用之一:标志应用程序数据传递:套接字数据传递:报文段/数据报8数据传递:为应用进程提供逻辑通信信道54321传输层提供应用进程间的逻辑通信应用进程应用进程网络层AP1AP2AP4端口端口54321AP3•网络层:在端系统间进行通信•传输层:在进程间进行通信应用进程…应用进程…IP协议的作用范围(提供主机之间的逻辑通信)TCP和UDP协议的作用范围(提供进程之间的逻辑通信)因特网数据传递:为应用进程提供逻辑通信信道•传输层协议只在端系统上运行。•传输层协议的主要功能之一是确定在源系统上生成消息和在目的系统上接收消息的较高层进程。•传输层实体能够根据高层应用的需求提供不同的服务质量。•传输层对高层用户屏蔽网络的差异,使高层用户的对等实体在交互过程中不受下层通信技术细节的影响。传输层概述两种逻辑通信信道:UDP和TCP?应用层运输层发送进程接收进程接收进程数据数据全双工可靠信道数据数据使用TCP协议使用UDP协议不可靠信道发送进程两种运输层协议:UDP和TCPTCPUDPIP层应用层与各种网络接口传输层UDP概述•UDP用户数据报UDP使用尽最大努力交付,只能提供不可靠的交付•UDP是无连接的,即发送数据之前不需要建立连接。可靠性判断标准:跟踪已发送的数据确认已收到的数据重传未确认的数据三项操作协议特点:快速、低开销可靠无需确认不重传丢失数据按接收顺序处理数据确认数据重传丢失数据按发送顺序处理数据TCPUDPTCP&UDP的对比UDP基于端口的复用和分用IP层UDP数据报发送端口2端口3端口1UDP分用IP层UDP数据报到达端口2端口3端口1UDP分用UDP基于端口的复用和分用17applicationtransportnetworkMP2applicationtransportnetworkreceiverHtHn分用:将接收到的段传递给正确的应用层进程segmentsegmentMapplicationtransportnetworkP1MMMP3P4segmentheaderapplication-layerdata复用:从多个应用进程获取数据,用首部(便于随后的分用)封装数据UDP基于端口的复用和分用发送方应用进程TCP复用UDP复用IP复用TCP报文段UDP报文IP数据报接收方应用进程TCP分用UDP分用IP分用TCP报文段UDP报文端口端口IP数据报IP网络UDP基于端口的复用和分用UDP在C/S模式的应用C1C2ServerDNS:port53RADIUS:port1812C1等待Server响应DNS返回port49152C2等待Server响应RADIUS返回port51152发送到UDP的Clients的Server响应使用随机port为目的portServerDNS响应:源port:53目的port:49152ServerRADIUS响应:源port:1812目的port:51152C1DNS请求C2RADIUS请求UDP基于端口的复用和分用UDP端口51000UDP端口69出队列入队列出队列入队列TFTP服务器TFTP客户UDP用户数据报应用层传输层UDP基于端口的复用和分用IP数据报的数据部分IP首部IP层UDP首部UDP用户数据报的数据部分运输层应用层报文应用层UDP报文首部结构22源端口目的端口长度校验和数据首部IP数据报数据首部UDP用户数据报源端口和目标端口定义发送方和接收方的通信进程长度字段定义UDP数据报的总长度(包括首部和数据)校验和用于数据传输的差错检查UDP报文首部结构伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报UDP报文首部结构伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报用户数据报UDP有两个字段:数据字段和首部字段。首部字段有8个字节,由4个字段组成,每个字段都是两个字节。伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报在计算检验和时,临时把“伪首部”和UDP用户数据报连接在一起。伪首部仅仅是为了计算检验和。计算UDP检验和的例子1001100100010011→153.190000100001101000→8.1041010101100000011→171.30000111000001011→14.110000000000010001→0和170000000000001111→150000010000111111→10870000000000001101→130000000000001111→150000000000000000→0(检验和)0101010001000101→数据0101001101010100→数据0100100101001110→数据0100011100000000→数据和0(填充)1001011011101011→求和得出的结果0110100100010100→检验和153.19.8.104171.3.14.1112字节伪首部8字节UDP首部7字节数据填充按二进制反码运算求和将得出的结果求反码全0171510871315全0数据数据数据数据数据数据数据全0使用16bit段反码运算填充部分仅参加计算计算16位二进制数的反码和•计算规则–从低位到高位逐列进行计算,0加0等于0,0加1等于1,1加1等于0同时产生一个进位,若最高位相加后产生进位,则最后得到的结果要加1。–例:1111001100110011011101010101010101110111011101110111101110111011110010100010001000011回卷检查和反码和UDP数据报重组UDP仅仅是将接收到的数据按照先来后到的顺序转发到应用程序总结•UDP是一个简单的面向用户数据报的传输层协议。应用进程的输出正好产生一个UDP数据报,并组装成一个待发送的IP数据报。•UDP只在IP的数据报服务之上增加了很少一点的功能,即端口的功能和有限的差错检测功能。•UDP不提供可靠性。总结•虽然UDP用户数据报只能提供不可靠的交付,但UDP在某些方面有其特殊的优点。–发送数据之前不需要建立连接–UDP的主机不需要维持复杂的连接状态表。–UDP用户数据报只有8个字节的首部开销。–网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。总结•UDP是无连接的,即发送数据之前不需要建立连接。•UDP使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。•UDP是面向报文的。UDP没有拥塞控制,很适合多媒体通信的要求。•UDP支持一对一、一对多、多对一和多对多的交互通信。•UDP的首部开销小,只有8个字节。UDP应用也使用端口号来标识特定的应用层进程并将数据报发送到正确的服务或应用基于UDP协议的编程1.UDP连接方式的通信规程UDP是面向无连接的协议,即在发送数据之前不必建立连接,只需要将Winsock绑定到一个端口上,其他无连接协议的Winsock如果向本机发送数据,就需要指出地址和端口号。基于UDP协议的编程2.A计算机UDP聊天程序设计PrivateSubForm_Load()WithwinSockA//设置Winsock控件的相关属性//.Protocol=sckUDPProtocol//设置UDP协议//.RemoteHost=wlgc-d3//设置远程计算机名//.RemotePort=8000//设置远程计算机端口号//.Bind9000//绑定本地端口号//EndWithEndSub基于UDP协议的编程2.A计算机UDP聊天程序设计PrivateSubtxtSend_Change()winSockA.SendDatatxtSend.Text//在键入文本时,立即发送出去//EndSubPrivateSubwinSockA_DataArrival(ByValbytesTotalAsLong)DimstrDataAsStringwinSockA.GetDatastrData//接收输入的数据//txtArr.Text=strData//在文本框显示接收的数据//EndSub基于UDP协议的编程2.A计算机UDP聊天程序设计PrivateSubCommand1_Click()winSockA.Close//关闭winsock控件,解除端口绑定//UnloadMe//退出程序//EndSub基于UDP协议的编程3.B计算机UDP聊天程序设计B端的的程序与A端的几乎一样,只是控件的名称不一样。另外特意在Winsock控件RemoteHost中使用了IP地址。各控件的源代码如下,各语句的作用与A端的程序中一样。PrivateSubCommand1_Click()winSockB.CloseUnloadMeEndSub基于UDP协议的编程3.B计算机UDP聊天程序设计B端的的程序与A端的几乎一样,只是控件的名称不一样。另外特意在Winsock控件RemoteHost中使用了IP地址。基于UDP协议的编程4.聊天程序设计将以上两个程序编译成EXE文件,分别安装到不同的机器上,即可进行两个计算机之间的通信。实际上在同一台计算机上也可以进行通信,只要使用不同的端口号就可以。40可靠传输协议概述可靠传输协议保证数据能够正确、按序的到达对方可靠传输协议可以用于数据链路层、网络层、传输层和应用层可靠传输协议属于网络前10位的重要课题讨论:如果物理信道100%可靠,还需要可靠传输协议吗?41停止等待协议SW(stopandwait)停止等待协议,发送方每发送一个报文,必须收到对方的回复后才能发送发送下一个报文可靠传输协议的讨论从SW协议开始42可靠协议开始起步rdt_send():可靠的数据传输处理函数,处理完将数据交给下层udt_send():不可靠的数据传输处理函数,将分组通过不可靠的信道传到接收方rdt_rcv():可靠的数据接收处理函数,deliver_data():向上层递交数据,由rdt调用43rdt1.0信道完全可靠前提:信道完全可靠数据不会出错数据不会乱序到达,也不会丢失可靠协议本身无需做额外的处理44rdt2.0信道可能出错前提:信道可能在分组数据中出现位错,但不会丢失讨论:需要解决的问题,如何查错,如何从错误中恢复从错误中恢复的办法:纠错机制(代价太大)使用确认(ACKs)和否认(NAKs)机制:当接收方正确收到分组,则向发送方发送确认信息,否则发送否认信息,当收到NAK时,发送方重传数据(发送方缓存数据,提高效率)45rdt2.0的运行(无错的情况)发送方FSM接收方FSM46rdt2.0运行(出错的情况)发送方FSM接收方FSM47rdt2.0存在的设计缺陷ACK/NAK报文出错?发送方将不会知道接收端发生了什么!讨论:当发送方发现ACK/NAK出错怎么办?对ACK/NAK本身再发送ACK/NAK(不可行)直接重传分组接收方可能收到重复分组重复分组的问题(接收方收到一个分组无法分清该分组是重传的分组还是新的分组):48rdt2.1:信道出错的可靠协议改进发送方给每个分组加上序号接收方丢弃重复分组,并再次对分组确认讨论:序号需要多少个?不用NAK,只用ACK是否可行,如何处理rdt

1 / 132
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功