第4章传层输协议4.1传输层协议的功能及端口4.2UDP协议4.3TCP协议4.4SOCKET接口4.1传输层协议的功能及端口功能:向上面的应用层提供通信服务,它属于通信部分中的最高层,同时也是用户功能中的最低层。特点:多数主机都是多任务的,当多个任务同时访问网络时,需要区分是哪个任务的.完成进程-进程的寻址.在提供所需要的服务时是高效的。运输层提供应用进程间的逻辑通信应用进程5432154321IP层应用进程AP1AP2()()AP1AP2()()AP1AP1AP2AP2主机A主机BLAN1LAN2WAN路由器1路由器24.1传输层协议的功能及端口4.1传输层协议的功能及端口端口(Port):应用程序标识,用于对所收的报文分用(Demultiplexing)复用与分用(MultiplexingandDemultiplexing)在网络的各个层次都用.物理层复用:同一物理介质上传输多路数据。FDM,TDM,WDM,CDMA….数据链路层复用:同一物理网络支持多种网络协议(IP,IPX…)4.1传输层协议的功能及端口EthernetIPXIPXNSAppleTalk……UDPTCPtftpdnstelnetftpsmtphttp4.1传输层协议的功能及端口EthernetIPXIPXNSAppleTalk……UDPTCPtftpdnstelnetftpsmtphttp帧类型4.1传输层协议的功能及端口起始定界符目的MAC地址源MAC地址类型46~1500字节数据CRC结束定界符Ethernet帧:0x06000x08000x08050x08060x8035XNSIDPIPX.25PLPARPRARP类型协议Ethernet类型举例4.1传输层协议的功能及端口EthernetIPXIPXNSAppleTalk……UDPTCPtftpdnstelnetftpsmtphttp帧类型包协议4.1传输层协议的功能及端口版本首部长度服务类型总长度标识标志片偏移量生存时间协议首部校验和源IP地址目的IP地址IP选项填充……协议UDP(17),TCP(6),ICMP(1),GGP(3),EGP(8),IGP(9),OSPF(89),ISO-TP4(29)。4.1传输层协议的功能及端口EthernetIPXIPXNSAppleTalk……UDPTCPtftpdnstelnetftpsmtphttp帧类型包协议报文端口端口如何分配?固定分配,只适合于局域网动态分配,一个应用程序如何知道网上其它进程监听的端口?固定分配+动态绑定.对常用的服务其端口固定下来,对客户端的进程使用的端口在使用时临时分配,用完收回.固定端口由ICANN(InternetCorporationforAssignedNamesandNumbers)分配,早期规定小于256,现在为小于1024.常用端口(UDP)6Echo回送9Discard丢弃13Daytime37Time53DomainServer67Bootps引导协议服务器68Bootpc引导协议客户端69Tftp简单文件传输161SNMPSNMP监控程序162SNMP-trapSNMP陷阱常用端口(TCP)6Echo回送9Discard丢弃13Daytime37Time20ftpdata21ftpcontrol23telnet25smtp53DomainServer80http110Pop3SocketSocket=IPaddress+PortNumber4.2UDP协议1.UDP封装及特点IPheaderUDPheaderUDPdataUDPMessageIPPacket•UDP提供不可靠的数据报服务,不保证按序,不保证数据数据报一定能达到目的端.•每个UDP数据报(报文)对应一个IP数据报(包).4.2UDP协议2.UDP报文格式sourceportnumberdestinationportnumberUDPlengthUDPchecksumdata(ifany)0151631sourceportnumberanddestinationportnumberidentifythesendingprocessandthereceivingprocess.UDPlengthisthelengthofUDPheaderandUDPdata.2.UDP报文格式UDPchecksumcoversUDPheaderandUDPdata;theheaderincludesa12-bytepseudo-headerfromIPheader.UDPchecksumisoptional.Whenthechecksumfieldnotuseditissetbyzero.Ifthecalculatedchecksumiszero,itisstoredasallonebits(0xffff).sourceIPaddresssourceportnumberdestinationportnumberdata0151631destinationIPaddresszeroUDPlengthprotocol(17)UDPlengthUDPchecksumpadbyte(0)UDPpseudoheaderUDPheader3.关于checksum的试验Mogul(CompaqComputerCorp.WesternResearchLab)曾经在一个繁忙的NFS服务器上做过时间持续了40天的试验,统计所发生的不同检验和差错的统计结果。层次校验和出错单元数大约的总的单元数EthernetIPUDPTCP446145350170000000170000000140000000300000004.3TCP协议1.TCP封装及特点:特点•可靠的数据传输•全双工•面向连接,连接建立与折除时均采用三方握手•流式协议IPheaderTCPheaderTCPdataTCPsegmentIPPacket2.TCP报文格式sourceportnumberdestinationportnumbersequenceno.headerlength(4bits)0151631URGACKPSHRSTSYNFINreserved(6bits)windowsizeacknowledgmentno.data(ifany)options(ifany)TCPchecksumurgentpointer2.TCP报文格式源端口:同udp的端口:同udp发送序号:发送的报文段的字节序号。其初始值(ISN,initialsequencenumber)在连接建立时,由发出连接请求的主机选择。应答序号:希望收到的报文段的字节序号头部长度:以32位为单位的头部长度码位:URG:加急指针(urgentpointer)字段有效ACK:应答(acknowledgmentno.)字段有效PSH:本报文段请求急迫操作RST:连接复位SYN:同步,连接建立时使用SYN=1,ACK=0;连接建立请求SYN=1,ACK=1;连接建立应答,同意SYN=1,ACK=0;连接建立应答,不同意FIN:发送方字节流结束连接断开窗口尺寸:接收方还可以接收的字节数2.TCP报文格式1024204802.TCP报文格式1024204802.TCP报文格式1024204802.TCP报文格式1024204802.TCP报文格式1024204802.TCP报文格式1024204802.TCP报文格式1024204802.TCP报文格式TCP检查和:包括TCP报文段(TCPheader+TCPdata)。在TCP中该字段是强制的(mandatory)。计算方法与UDP相同,也包含相同的伪头部(只是协议字段由17改为6).加急指针:本报文段中,加急数据的最后一个字节的编号(只有URG位设为1时,该字段才有效)TCP选项:TCP头部中可以包括选项,目前可用的选项有5种.Endofoptionlist:Kind=01byteNooperation:Kind=11byteMaximumsegmentsize:Kind=21bytelen=41bytemms2bytelen=41byteWindowscalefactor:Kind=31bytelen=31byteshiftcount1byteTimestamps:Kind=21bytelen=41bytetimestampvalue4bytelen=101bytetimestampechoreply4byteTCP选项MSS(MaximumSegmentSize),告诉对方的tcp,我的缓存所能收的报文段的最大长度是MSS。MSS的选择并不简单,MSS太小,网络利用率降低,极端情况下,数据只有1字节,开销至少为40字节(ip头+tcp头),利用率只有1/41.但tcp报文段太大时,在ip层由于物理网络的限制,就会分片,分片也分造成额外的开销.一般情况下,应让MSS尽量大,但不使ip分片为好.建立连接时,双方都将自己能够支持的最大报文段长度写入MSS,在以后的传送中,取双方较小的.默认值是536字节净负荷。TCP选项Windowscale:TCPwindowsize字段的长度为16位,默认情况下,最大TCP段长为64k字节.若使用T3(44.736Mbps)光纤传输,则报文段的传送时间为12ms;端-端传输延时50ms(典型值),发送端将有2/3的时间处于等待状态.速度越高,等待的时间越长。设n为scalecount值(0~14),则真正的windowsize值为:(windowsize字段值)*2。Windowscale的值为连接建立时确定。一旦连接建立起来后,该值就能确定。nTCP选项Timestamps:在TCP数据传输过程中,具有差错控制功能,当发送端在一段时间τ内没有得到应答,就认为该报文段出错,便进行重发。但τ的值很难确定(局域网情况下可能小于1ms,广域网情况下,则可能超过去100ms)。Timestamps选项便是用于估计τ的值。在发送端发送的每个TCP报文段中,在Timestamps选项中放上timestamps的值,接收端收到后,在应答中,再给发回来,这样发送到就能估计出τ的值。3.Tcp的编号与确认交互式telnt连接:a-b20+20+1(数据)b-a20+20(确认)共81字节如果再有回显,还有81字节,总共162字节.当线路带宽并不宽裕时,这种传送的效果可想而知.为了提高效率,广泛使用Nagle算法.Nagle算法若数据是逐个字节的到达发送端,则发送端就将第一个字符先发送出去,后面到达的都缓存起来;当收到对第一个字符的确认后,再将缓冲中的所有字符装成一个报文段发送出去,同时继续对达到的字符进行缓存,只有在收到确认后才继续发送下一个报文段,当字符达到较快,而网速较慢时,用这样的方法可以明显地减少所用网络带宽.算法还规定,当到达的字符已达到窗口一半时,或达到报文段的最大长度时,就立即发送下一报文段.糊涂窗口综合症:有时上述算法会使tcp的性能变坏.如接收端的缓存已满,交互应用程序每次只读一个字符,然后向发端发确认.解决的办法是接收端等待一段时间.4.TCP的连接管理连接的建立:连接建立阶段主要解决三个问题:•要使每一方能够确切知道对方的存在;•允许双方协商一些参数(mss,windowsize,QoS等);•分配传输实体所使用的资源(缓存、连接表项目等)。连接的建立采用三次握手:连接的建立连接的建立采用三次握手:主机A主动打开主机B被动打开连接的释放连接的释放采用三次握手:主机A应用进程释放连接主机B通知应用进程应用进程释放连接5.TCP有限状态机TCP连接表连接状态本地IP地址本地端口目的IP地址目的端口连接1连接2……连接n4.TCP有限状态机CLOSEDLISTENSYN_SENTSYN_RCVDESTABLISHED主动打开主动打开收到SYN,ACK发送ACK收到SYN发送SYN,ACK收到RST发送SYN被动打开关闭收到SYN,发送SY