• 运输层TCP-UDP复习


    1、运输层的端口号

    端口号有16位,共65536个端口,从0开始计数。

    系统端口号范围是0-1023;登记端口号范围是1024-49151;短暂端口号范围是49152-65535;

    可以计算出,系统端口号高六位一定是“000000”;短暂端口号高二位一定是“11”;其他是登记端口号。

    2、运输层协议

    传输控制协议TCP: Transmission Control Protocol

    用户数据报协议UDP: User Datagram Protocol

    TCP是面向连接的全双工通信,开销比UDP大

    UDP首部8字节,TCP的固定首部20字节、选项最长40字节

    UDP支持一对一、一对多、多对一、多对多的交互通信。

    UDP检验和检验首部和数据部分,TCP检验和只检验首部,检验和占2字节

    TCP报文的数据部分是字节流

     ---------------------------

    TCP传输

    1、停止等待协议。发送方发送的数据包必须排序,且按顺序发送数据包,接收方在接收到分组后发送确认分组。发送方每发送完一个分组报文,都必须暂时保留这个分组的副本,如果在规定时间内没有接受到接收方的确认,就需要进行超时重传。接收方在收到重复的分组时直接丢弃重复分组、发送方在收到重复的确认时直接丢弃重复确认(这是出于确认丢失、确认迟到的考虑)。

    缺点:信道利用率太低。

    2、连续ARQ。发送方需要维持一个发送窗口,位于发送窗口内的分组都可以连续发送出去而不必等待对方确认。接收方采用累积确认,对按序到达的最后一个分组发送确认。接收方会维护一个接受窗口。

    --------

    超时重传时间选择

    报文段往返时间RTT

    加权平均往返时间RTTs

    往返偏差加权平均值RTTd

    超时重传时间RTO

    RTTs=RTT

    RTTd=1/2*RTT

    新的RTTs=(1-a)*旧RTTs+a*新RTT

    新RTTd=(1-b)*旧RTTd+b*新RTTd

    RTO=RTTs+1/4*RTTd

    RFC2988建议a取值1/8,b取值1/4

    改进的Karm算法:报文没重传一次,RTO增大一些(2倍),不再发生重传时再按公式计算RTO

    -------------------

    选择确认SACK(Selective ACKnowledge)避免重复发送已接收分组,需要在链接建立时增加SACK选项

    --------------------------

    零窗口报文后的非零窗口丢失解决方式:发送端收到零窗口报文后设置持续计数器,定时发送零窗口探测报文段。

    -----------------数据传输效率:Nagle算法

    ----------------------------------------------------

    Java中TCP编程接口java.net.Socket;UDP编程接口java.net.DatagramSocket

  • 相关阅读:
    设计模式---组合设计模式
    BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [
    Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test
    Myeclipse6.0 的hibernate反向工程
    注册码
    Window.Open参数、返回值
    JS键盘上所有按键KeyCode
    使用Spring的JdbcTemplate访问数据库 转
    handlerbar.js
    java 遍历所有子节点
  • 原文地址:https://www.cnblogs.com/afraidToForget/p/6603804.html
Copyright © 2020-2023  润新知