《计算机网络教程》第7章 运输层-2_第1页
《计算机网络教程》第7章 运输层-2_第2页
《计算机网络教程》第7章 运输层-2_第3页
《计算机网络教程》第7章 运输层-2_第4页
《计算机网络教程》第7章 运输层-2_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《计算机网络教程》电子教案第七章运输层

TCP2主要内容TCP和UDP协议(7.3)TCP服务TCP协议TCP连接管理TCP流量控制TCP拥塞控制TCP计时器UDP协议3TCP服务TCP在提供无连接尽力递交服务的IP层上向高层提供面向连接的、端到端的、可靠字节流服务面向连接在进行数据传输时首先必须建立一条运输连接,数据传输完成之后把连接释放掉。TCP连接标识套接字(Socket):主机的IP地址和一个16比特的端口号(Port)。255以下:assignedprotocolnumbers(publicapps)256~1023:well-known(saleableapplication)一条TCP连接是由发送方套接字和接收方套接字来唯一标识的,即TCP连接用四元组<源端IP地址、源端口号、目的IP地址、目的端口号>来唯一标识。4TCP服务面向字节流从高层接收用户数据时不保留边界,看成一个一个的字节,每个字节都有一个顺序号。端到端不支持组播、广播服务5TCP服务TCP服务的其他特征TCP数据传输服务是全双工的可以进行捎带确认可以关闭某个方向的连接TCP实体支持数据缓冲和立即发送PUSH机制要求不缓冲,尽快地把数据递交给对方TCP提供紧急数据功能紧急数据比正常数据优先发送和递交,没有顺序号6TCP协议:头部格式TCPPDU称为TCP数据段(Segment),由一个20字节的头部、一个可选部分(最多40字节)、和一个用户数据部分组成。源端口号目的端口号顺序号确认号(validifACKflagisset)窗口大小校验和紧急指针(ifURGset)选项(0个或多个字节)用户数据(可选)保留(6b)URGACKPSHRSTSYNFIN数据偏移32位填充头部长度7TCP协议字段TCP协议字段源端口号(SourcePort,16比特)和目的端口号(DestinationPort,16比特):分别表示发送方和接收方的端口号。顺序号(SequenceNumber,32比特):该TCP段中携带的用户数据中第一个字节的编号,编号是以字节为单位的。确认号(AcknowledgmentNumber,32比特):对顺序号之前的数据已可靠收到的确认,即下一个期望接收的字节的顺序号。数据偏移(DataOffset,4比特):指示TCP数据开始的位置,也即TCP头部长度,以32比特为单位。8TCP协议字段保留(Reserved,6比特)控制标志(ControlBits,6比特)URG:紧急数据标志ACK:确认字段有效标志PSH:要求马上发送数据RST:对TCP连接进行复位SYN:建立TCP连接FIN:连接释放窗口大小(WindowSize,16比特):指示接收方滑动窗口的大小,用于实现TCP流量控制和差错恢复。9TCP协议字段校验和(Checksum,16比特):实现对TCP数据段的校验。在计算检验和时包括TCP头部、用户数据以及一个TCP伪头部。伪头部格式检验和的计算:所有16位字以反码形式相加,然后对和取反。紧急指针(UrgentPointer,16比特):当URG位有效时,紧急指针指示紧急数据的位置。IP源地址32比特IP目的地址0协议TCP长度10TCP协议字段选项(Options,变长:0~40字节):提供了相应的扩展机制,用于实现除TCP基本头部指定功能外的扩展功能。填充(Padding,变长):总是以0作填充,可确保TCP头部以32比特边界结束。数据(Data,变长):数据部分用于传送TCP用户数据。由于IP分组长度的限制(最大64K),因此TCP最大有效数据载荷长度是65535-20-20=65495。整个TCP段的长度限制IP包64K-1(65535)字节长度限制;网络MTU(MaximumTransferUnit,最大传送单位)限制;TCP协议中用户数据大小受MSS(MaximumSegmentSize,最大分段大小)限制。11TCP连接管理:建立连接TCP连接建立是一个不对称的过程一方处于被动方式(listen),一方为主动方式(connect)。即主动方式的客户方要求和被动方式打开的服务方建立运输连接(通过一系列的消息交换)。建立连接的实际价值通知对方要求建立连接为了以后的数据传输同步初始顺序号(ISN)考虑:IP分组可能延迟、失序到达前一次连接的分组可能会在新的连接期间到达,要求新连接采用的顺序号不应该被老的连接使用过系统可能崩溃重启,无法记住前面连接使用的顺序号系统启动等待MSL(最大分段生存期)时间采用ISN生成器随机选取:ISN选取有规律带来IPSpoofing攻击12建立连接:三次握手TCP使用三次握手方法建立连接13建立连接:连接冲突使用三次握手,即使两台主机同时想在相同的套接字之间建立一条TCP连接而发生冲突,也可以正常工作。14建立连接:IPSpoofingEdYX.rhostsY1.Floodcontinuously3.TCPSYNACKACKspoofedYISNSendXISNPACKETDROPPED!2.SpoofTCPSYNfromYWithspoofedYISN6.RealacksdroppedsoYdoesnotresetconnection4.SendACKwithguessofX’sISNasifyoureceivedTCPSYNACK5.Sendpre-cannedrlogin/rshmessagesrshecho“Ed”>>.rhostsspoofacknowledgementsEd7.Doornowopen,rlogintoXfromEddirectly15释放连接TCP的正常的连接释放也采用了三次握手过程。把TCP连接看成由两个方向的单工连接组成:释放时,两个方向的连接都要关闭。两方发送一个FIN标志置为1的TCP段,表示没有数据要发送,当FIN被确认后,那个方向的连接就被关闭。只有当两个方向的连接均关闭后,该TCP连接才被完全释放。

把一个FIN和ACK合并,就是三次握手过程。TCP连接管理:释放连接16释放连接这样,实际上就有多种释放连接的顺序:稳妥关闭(“两军问题”)最后的ACK可能丢失带来的问题主动关闭的一端要进入TIME-WAIT状态,需要维护连接状态2*MSL时间在C/S模式中应该由客户方来主动关闭连接FINACKFINACKFINACKFINACKFINACKFINACKFINFIN,ACKACK17TCP连接管理:连接状态TCP连接状态状态描述Closed无TCP连接,也不在建立连接Listen用户开始LISTEN,等待对方的呼入连接SYNReceivedSYN收到,等待ACKSYNSentSYN发出,开始与对方建立连接Established连接建立成功,可以传送数据FINWait1用户释放连接,已经发出FINFINWait2对方同意释放连接Closing双方同时开始释放连接TimedWait等待全部TCP段传送完毕CloseWait等待用户释放连接LastAck用户释放连接,等待对方最后同意18连接状态:TCPConnectionEstablishCLOSEDSYNRCVDESTABLISTENactiveOPENcreateTCBsndSYNcreateTCBpassiveOPENdeleteTCBCLOSEdeleteTCBCLOSEsndSYNSENDsndSYNACKrcvSYNsndFINCLOSErcvACKofSYNsndACKRcvSYN,ACKrcvSYNsndACKDDOS攻击SYNSENT19连接状态:TCPConnectionTear-downCLOSINGCLOSEWAITFINWAIT-1ESTABTIMEWAITsndFINCLOSEsndFINCLOSErcvACKofFINLAST-ACKCLOSEDFINWAIT-2sndACKrcvFINdeleteTCBTimeout=2mslsndFINCLOSEsndACKrcvFINsndACKrcvFINrcvACKofFINsndACKrcvFIN+ACKrcvACK(activeclose)(passiveclose)(simultaneousclose)20TCP流量控制为了防止发送方的数据发送得过快,以致接收方来不及处理的情况。TCP采取一种可变大小的滑动窗口机制来进行流量控制。接收方维护一个可变的接收窗口,这是接收方向发送方指出的目前剩余接收缓冲区的大小(数据段中的窗口大小字段)。RecvWindow网络来的数据空缓冲区缓冲的TCP数据RecvBuffer用户进程读取21TCP流量控制接收缓冲区是环形、循环使用的。接收窗口大小满足:其中LastByteRead和LastByteRcvd是接收方定义的两个指针,满足:发送方定义变量LastByteSent和LastByteAcked用于发送控制,满足:LastByteSent-LastByteAcked即发送方发送的但是没有得到确认的数据的大小。22TCP流量控制探测(probe)消息:防止死锁X23TCP拥塞控制TCP通过拥塞控制来防止网络过载。TCP拥塞控制采用慢启动(slow-start)和拥塞避免(congestionavoidance)的策略。TCP连接维护两个变量:拥塞窗口CongWindow 反映了网络的容量,限制发送方向网络注入数据的速度,这样发送方发送的尚未得到确认的数据大小必须小于接收窗口和拥塞窗口,即:慢启动阈值ssthresh 当拥塞窗口小于该阈值时进入慢启动阶段,而大于时进入拥塞避免阶段。24TCP拥塞控制:慢启动慢启动TCP慢慢探测以决定网络的容量。初始时CongWindow设置为一个MSS(最大分段大小);慢启动阈值ssthresh设置为一个较高的值(比如接收窗口的大小)。每收到一个确认ACK时,就把拥塞窗口大小加1个MSS大小:CongWindow+=MSS。这样实际的结果是:拥塞窗口的增加是成指数增加的。当拥塞窗口超过慢启动阈值ssthresh时,就进入拥塞避免阶段。25TCP拥塞控制:拥塞避免拥塞避免不是每收到一个ACK,就把拥塞窗口增加一个MSS,而是每个往返传输时间(Round-TripTime,RTT)才把拥塞窗口增加一个MSS。RTT是动态变化的,在TCP的实现中通常采用一种变通的方法,每收到一个不重复的ACK时,拥塞窗口按照如下公式增加:这样拥塞窗口缓慢、线性地增加,直到出现拥塞。26TCP拥塞控制:出现拥塞出现拥塞发送方TCP段超时,需要重传。这时,慢启动阈值ssthresh缩减为拥塞窗口的一半,并且拥塞窗口恢复到原来的初始窗口大小,然后进入慢启动过程,重新探测目前网络的状况。空闲后的拥塞窗口TCP连接空闲较长一段时间后,在重新开始传输数据时进入如同拥塞后的慢启动过程。27TCP拥塞控制CongWindow超时ssthresh空闲间隔时间tTCP拥塞窗口机制示意图28TCP计时器:重传超时重传计时器(RetransmissionTimer)一般情况下,一个TCP段发送后启动这个计时器,如果在计时器超时前收到这个TCP段的确认,则停止该计时器,否则,重新发送该TCP段。超时应该多久呢?太长:低效(延时长,带宽利用率低)太短:造成不必要的重传(占用额外的带宽)TCP采用的是一种自适应的重传计时策略。29重传计时器:RTT估计TCP重传计时器基于RTT

对于每一条TCP连接,TCP维护一个变量EstimatedRTT,用于存放所估计的到目的端的往返传输时间。每次发送一个TCP段时记录下这个时刻,当对TCP段的确认回来后就可以计算该段的往返传输时间SampleRTT,然后修正EstimatedRTT: 其中为修正因子,决定了以前估计的RTT的权重,一般取值为7/8。30TCP计时器:重传超时一个问题:如果TCP段超时并重传时怎么办?Karn方法:不对重传段进行采样,超时为原来一倍Jacobs

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论