zoukankan      html  css  js  c++  java
  • 传输控制协议TCP

    TCP主要特点:

    (1)面向连接

    (2)只能是点到点

    (3)可靠的传输协议

    (4)全双工通信,各自各自的读写缓冲区,应用层吧数据交给发送缓冲区,tcp合适就发送了,接受的时候tcp写入接受缓冲区,应用程序方便的时候就去缓冲区读入数据了

    (5)面向可以拆分字节流

    TCP的连接

    我们说的每一个tcp连接有两个端口,这个端口是socket(ip&&端口号),套接字是个很抽象的概念,注意同一个ip地址可以有多个不同的tcp连接,同一个·端口号可以出现在不同的tcp连接之中

    TCP可靠的传输原理:

    tcp的报文发送给了ip层,但是下面ip层只是尽最大努力交付。并不是安全的,理想的安全是

    (1)发送的分组不会有差错(解决:如果出现错误,重新发送)

    (2)无论速度多块,接收端都可以收到(如果接收端不能即时收到,告诉发送方降低速度到

    停止等待协议

    1无差错传输

    A向B发送一个分组,等待B确认后再发送下一个分组

     2:出现差错

    如果在A向b发送的中途出现了问题丢弃了,A超过了一段时间没有收到,则会重新发送一个,这就是超时重传,要实现就需要设置一个超时计时器,A为每一个分组都设置了一个超时计时器,只要A的每一个分组收到了,就撤销可以了

    注意3点:

    (1)A在发送了一个分组后会保留一个备份(如果收到确认分组的时候,才会删除)

    (2)对每一分组编号,知道哪一个分组收到了

    (3)超时计时器的设置时间会比往返时间长一些

    3:确认丢失和确认迟到

    如果确认分组没有收到,那么A会向B继续发送分组,B收到后会丢弃,但是仍然向A发送确认分组,如果A收到多个确认分组,只对第一个有用,后面的收到但是什么都不做

    上面就属于自动重传请求ARQ协议,重传的请求是自动的,不需要B向A发分组

    4:信道利用率

    非常低,为了提高传输效率,可以采用流水线传输,就是一次连续发送多个分组

    那么就需要采用连续ARQ协议个滑动窗口协议

    发送方每次收到一个确认,就将窗口向前移动,比如收到第5个分组的,就移动到底6个

    接收方采用累积确认的方式,不必对所有的分组都发送,只对按顺序到达的最后一发送就可以了,表示这个之前的都受到了

    如果发送5个,接收方只收到了2个,那么发送发需要对后三个重新发送,这叫做回退n协议,退回去把没陈宫的n个重新发送

  • 相关阅读:
    abstract关键字
    方法重写
    对象初始化过程
    访问修饰符
    super关键字
    继承
    转发和重定向的区别
    tomcat中乱码问题解决
    jsp执行过程
    web程序常见错误及解决方法
  • 原文地址:https://www.cnblogs.com/13224ACMer/p/6412805.html
Copyright © 2011-2022 走看看