TCP

作者: yz_wang | 来源:发表于2018-08-24 16:07 被阅读0次

    OSI七层网络


    1. TCP提供什么功能?
      Transmission Control Protocol,缩写为TCP。
      在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据包协议(UDP)是同一层内另一个重要的传输协议。

    传输层:端对端连接


    应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。

    1. TCP 三次握手和四次挥手


      建立连接
    • 什么是可靠连接
    • 服务器被动打开
    • SYN:很小的数据包
    • ACK:
    断开连接

    2.1 为什么三次握手?
    采用三次握手是为了防止已连接的请求报文段又传送到服务器,造成服务器崩溃。
    假设只有两次握手,连接时,第二次丢失,服务器认为连接成功,而客户端认为连接失败,继续发送连接请求,服务器就会收到SYN的洪水攻击。

    2.2 为什么建立连接是三次握手,关闭连接是四次握手?
    全双工:指可以同时(瞬时)进行信号的双向传输(A→B且B→A)。指A→B的同时B→A,是瞬时同步的。
    半双工:指一个时间内只有一个方向的信号传输(A→B或B→A)。
    因为TCP是全双工模式,因此每个方向都需要一个FIN和ACK,当一端发送了FIN包之后,处于半关闭状态,此时仍然可以接收数据包。
    在建立连接时,服务器可以把SYN和ACK放在一个包中发送。
    假设在断开连接时,如果一端收到FIN包,但此时仍有数据未发送完,此时就需要先向对端回复FIN包的ACK。等到将剩下的数据都发送完之后,才能向对端发送FIN,断开这个方向的连接。
    因此很多时候FIN和ACK需要在两个数据包中发送,则需要四次握手。

    2.3 2MSL等待时间( Maximum Segment Life)
    第四个消息:A发出ACK,用于确认收到B的FIN当B接收到此消息,即认为双方达成了同步:双方都知道连接可以释放了,此时B可以安全地释放此TCP连接所占用的内存资源、端口号。
    所以被动关闭的B无需任何wait time,直接释放资源。
    但,A并不知道B是否接到自己的ACK,A是这么想的:

    • 1)如果B没有收到自己的ACK,会超时重传FiN那么A再次接到重传的FIN,会再次发送ACK.
    • 2)如果B收到自己的ACK,也不会再发任何消息,包括ACK无论是1还是2,A都需要等待,要取这两种情况等待时间的最大值,以应对最坏的情况发生,这个最坏情况是:去向ACK消息最大存活时间(MSL) + 来向FIN消息的最大存活时间(MSL)。这恰恰就是2MSL( Maximum Segment Life)。
    1. TCP为什么能保证可靠传输?
    • 确认和重传机制
      • 建立连接时三次握手同步双方的“序列号 + 确认号 + 窗口大小信息”,是确认重传、流控的基础
      • 传输过程中,如果Checksum校验失败、丢包或延时,发送端重传
    • 数据排序
      • TCP有专门的序列号SN字段,可提供数据re-order
    • 流量控制
      • 窗口和计时器的使用。TCP窗口中会指明双方能够发送接收的最大数据量
    • 拥塞控制
    1. 套接字是什么?
      为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)的接口,区分不同应用程序进程间的网络通信和连接。
      为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)的接口,区分不同应用程序进程间的网络通信和连接。
    1. TCP和UDP的区别
    • TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
    • 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
    • TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
    • TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付
    • TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
      UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
    • TCP首部开销20字节;UDP的首部开销小,只有8个字节

    相关文章

      网友评论

          本文标题:TCP

          本文链接:https://www.haomeiwen.com/subject/jsbriftx.html