您好,欢迎访问三七文档
计算机网络-第4章运输层目录运输层的功能和服务应用进程寻址:端口机制UDP数据报的格式和差错检测TCP报文段格式、TCP通信过程、可靠数据传递、流量控制和拥塞控制原理运输层的功能和服务传输层要为应用层建立一个“端到端”的逻辑连接,这个连接是跨越网络的。从应用层的角度看,传输层为其提供了一条端到端的数据通道,通过这个通道,数据可以从一方到达另一方传输层可以为应用层提供两类服务,可靠的服务和不可靠的服务运输层提供的服务Internet应用层运输层网络层数据链路层物理层datadataH4应用层运输层网络层数据链路层物理层datadataH4主机主机H3dataH4H5H3dataH4H5T2H20110100000...0011010101010110100000...001101010101H3dataH4H5T2H2H3dataH4H5运输层的功能应用进程寻址提供数据的可靠传递流量控制拥塞控制应用进程寻址运输层则需要提供应用进程的寻址,以确保数据交给正确的应用进程。运输层数据报运输层数据报应用层网络层应用层网络层主机A主机B运输层数据报应用层/运输层接口运输层/网络层接口逻辑通道AP1AP2AP3AP4AP5AP6发AP1收AP4发AP1收AP4发AP2收AP5发AP2收AP5发AP3收AP6发AP3收AP6提供数据的可靠传递由于网络层在转发分组时,可能会出现分组乱序和分组丢失的现象,所以运输层要能够检测到这些错误,并能处理这些错误,为应用层提供一条无错的通信通道。流量控制两个应用进程A和B进行通信。A产生数据,将数据发给B。连接A—B的每一端都会为这个连接分配一定数量的缓存。当收到正确的字节后,就会将数据放入缓存,等待应用进程将其取走。如果发送方继续快速地发送数据,那么缓存就会被充满,最后溢出。所以,需要有一种机制来控制发送方发送数据的速度,保证接收缓存不溢出,从而确保接收进程能够顺次地处理所有的数据。缓存缓存缓存缓存缓存满了,再来就溢出了!发送数据块H1,你发的太快了!拥塞控制如果分组网络中涌入大量的数据,加在网络上的负载超过网络的存储和处理能力,就会出现分组传递时延增加,分组丢失,服务质量下降的情况,这种现象称为拥塞。如果不采取有效的检测和控制手段,则拥塞情况就会加重,最终导致网络崩溃。因此,运输层需要能够检测拥塞并控制拥塞。应用进程寻址随着各种各样的应用不断增多,应用层协议也会不断地增多。而在TCP/IP协议体系中,运输层协议只有两个,这样会出现多个应用层协议使用同一个运输层协议的情况。这就涉及到了应用进程寻址的问题。应用进程寻址——端口机制TCP/IP提供端口机制。端口是运输层协议和应用层协议交互时的接口,每个端口有唯一的端口号,并且有相应的输入和输出缓存。一个应用进程通过系统调用可以绑定到运输层协议(UDP或TCP)的一个端口上,这样通过端口号就能确定对应的应用进程,端口和应用进程是一一对应的端口机制——多路复用/分解WebTCP熟知端口号:80服务器端E-mailFTPSNMPDNS熟知端口号:25熟知端口号:20/21熟知端口号:161熟知端口号:53UDPIPWebTCP临时端口号E-mailFTPSNMPDNS临时端口号临时端口号临时端口号临时端口号UDPIP互联网客户端UDP协议概述用户数据报协议(UDP)是TCP/IP协议体系中运输层协议之一。UDP协议只实现了运输层可以完成的4项功能中的一部分,就是应用进程的寻址。应用程序报文UDP用户数据报数据部分UDP首部IP数据分组的数据部分IP首部应用层运输层网络层UDP协议特点UDP是无连接的,即发送数据之前不需要建立连接。UDP使用尽力而为的服务方式,也就是不能保证可靠的传输。UDP是高效的传输协议。UDP对应用层交下来的报文,既不合并,也不拆分,这可使应用层的数据被迅速、及时地发送出去。UDP没有拥塞控制。使用UDP的应用层协议应用应用层协议运输层协议域名解析DNSUDP网络管理SNMPUDP路由信息交换RIPUDP简单文件传输TFTPUDP网络文件系统NFSUDPIP电话专有协议UDP流式多媒体专有协议UDPUDP数据报格式UDP数据报由UDP首部和其封装的应用层数据组成,是UDP协议的传输单元。UDP的首部比较简单,只有8个字节。UDP首部各字段意义源端口:发送方应用进程对应的端口号目的端口:接收方应用进程对应的端口号,利用源端口和目的端口可以实现多路复用和多路分解。长度:UDP用户数据报的长度。检验和:检测UDP用户数据报在传输中是否有错。有错就丢弃。UDP的差错检测UDP提供首部校验和字段来检测UDP数据报在传输过程中的错误。在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。“伪首部”只是在计算检验和时,临时添加在UDP用户数据报前面,得到一个临时的UDP用户数据报。伪首部既不向下传送也不向上递交,而仅仅是为了计算检验和。UDP数据报添加的伪首部伪首部中含有源IP地址和目的IP地址。伪首部中的17是分配给UDP的协议编号。UDP长度是指UDP报文的长度(包括首部和数据)。校验和的计算例子UDP用户数据报的长度是15字节。源端口是“1087”,目的端口是“13”。IP源地址是“153.19.8.104”,目的地址是“171.3.14.11”。应用层数据(7字节)UDP首部(8字节)UDP数据报伪首部(12字节)UDP长度(15)0目的IP地址(171.3.14.11)源IP地址(153.19.8.104)17为计算校验和临时添加的伪首部44112字节长度(15)源端口(1087)目的端口(13)UDP首部2222字节校验和(待定)校验和的计算过程4字节长153.19.8.104171.3.14.11全0171510871315全0数据数据数据数据数据数据数据全0转换成二进制10011001000100110000100001101000101010110000001100001110000010110000000000010001000000000000011100000100001111110000000000001101000000000000111100000000000000000101010001000101010100110101010001001001010011100100011100000000153.198.104171.314.11全0/171510871315全0(校验和)数据数据数据数据/全0按二进制反码运算求和结果0110100100010010将求和的结果再求反码校验和(发送UDP数据报时写入到首部中的校验和字段)100101101110110112字节伪首部8字节UDP首部7字节数据填充计算前填入全0TCP概述TCP(传输控制协议)是专门为了在不可靠的互联网络中提供一个可靠的端到端的通信而设计的,是TCP/IP协议体系中运输层的重要协议。TCP为应用层提供面向连接的、可靠的数据传递服务。TCP协议最主要的特点TCP是面向连接的运输层协议。每一条TCP连接只能是点对点的。TCP提供可靠的数据传输服务。TCP提供全双工通信。TCP面向字节流的。字节流的流动(1)发送方接收方应用进程应用进程TCPTCPTCP连接准备发送的数据字节字节流的流动(2)发送方接收方应用进程应用进程2103TCPTCP字节流x表示序号为x的数据字节TCP连接字节流的流动(3)发送方接收方应用进程应用进程TCPTCP字节流x表示序号为x的数据字节TCP连接把字节写入发送缓存321045字节流的流动(4)发送方接收方应用进程应用进程TCPTCP字节流H表示TCP报文段的首部x表示序号为x的数据字节TCP连接把字节写入发送缓存54210H加上TCP首部构成TCP报文段3678发送TCP报文段字节流的流动(5)发送方接收方应用进程应用进程TCPTCP字节流H表示TCP报文段的首部x表示序号为x的数据字节TCP连接把字节写入发送缓存加上TCP首部构成TCP报文段91054H876210H3发送TCP报文段字节流的流动(6)发送方接收方应用进程应用进程TCPTCP字节流H表示TCP报文段的首部x表示序号为x的数据字节TCP连接把字节写入发送缓存加上TCP首部构成TCP报文段54H109876H111213210H3发送TCP报文段字节流的流动(7)发送方接收方应用进程应用进程TCPTCP字节流H表示TCP报文段的首部x表示序号为x的数据字节TCP连接把字节写入发送缓存加上TCP首部构成TCP报文段从接收缓存读取字节3210109H131211171615181454H876H发送TCP报文段发送TCP报文段发送方接收方把字节写入发送缓存从接收缓存读取字节应用进程应用进程1230181716151419202145131211H加上TCP首部构成TCP报文段TCPTCP字节流字节流H表示TCP报文段的首部x表示序号为x的数据字节TCP连接字节流的流动(8)109H876H发送TCP报文段发送方接收方把字节写入发送缓存从接收缓存读取字节应用进程应用进程451817161514131211H加上TCP首部构成TCP报文段TCPTCP字节流H表示TCP报文段的首部x表示序号为x的数据字节TCP连接字节流的流动(9)109H876H212019发送TCP报文段发送方接收方从接收缓存读取字节应用进程应用进程1817161514131211H加上TCP首部构成TCP报文段TCPTCP字节流H表示TCP报文段的首部x表示序号为x的数据字节TCP连接字节流的流动(10)109H876212019H发送TCP报文段发送方接收方从接收缓存读取字节应用进程应用进程1817161514加上TCP首部构成TCP报文段TCPTCP字节流H表示TCP报文段的首部x表示序号为x的数据字节TCP连接字节流的流动(11)H109212019H131211发送TCP报文段发送方接收方从接收缓存读取字节应用进程应用进程加上TCP首部构成TCP报文段TCPTCP字节流H表示TCP报文段的首部x表示序号为x的数据字节TCP连接字节流的流动(12)212019H1312111817161514发送方接收方从接收缓存读取字节应用进程应用进程TCPTCP字节流x表示序号为x的数据字节TCP连接字节流的流动(13)1516171418212019发送方接收方应用进程应用进程TCPTCP字节流x表示序号为x的数据字节TCP连接字节流的流动(14)212019发送方接收方应用进程应用进程TCPTCPTCP连接字节流的流动(15)接收到的数据字节4.4.2TCP报文段TCP报文段是TCP的传输单元。TCP在应用层数据前添加TCP首部,形成TCP报文段。一个TCP报文段分为首部和数据两部分。应用层数据TCP首部TCP应用层应用层数据TCP报文段的首部TCP报文段的首部源端口和目的端口:分别写入源端口号和目的端口号TCP报文段的首部序号:在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。TCP报文段的首部确认号:是期望收到对方下一个报文段的第一个数据字节的序号序号和确认号TCP报文段的首部数据偏移:表示TCP报文段中的数据部分距离TCP首部的起始位置有多少字节。TCP报文段的首部保留字段:保留为今后使用,但目前应置为0TCP报文段的首部标志字段:每个比特都代表特定的含义。当其值为1时称为置位。TCP报文段的首部URG=1,则表示TCP报文段中存有紧急数据。TCP报文段的首部ACK=1,表示确认号是有效的。如果ACK=0,则该数据段不包含确认信息。TCP报文段的首部发送方PSH=1,报文段发送出去。接收方TCP收到报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。TCP报文段的首部RST用于重置一个已经混乱
本文标题:第4章运输层
链接地址:https://www.777doc.com/doc-234758 .html