zoukankan      html  css  js  c++  java
  • TCP简要讲解

        TCP被称为面向连接、面向流,可靠的传输层协议。它与UDP最大的不同在于它是可靠性的,所以需要可靠传输的时候就需要用到TCP,如果需要快速传输则选择UDP。

        TCP的连接又称为3次握手。

        1)、客户端向服务器发送一个SYN分段,表示我要向和你连接。

        2)、服务器收到该分段后,向客户端发送一个ACK+SYN分段,ACK表示回应我已经收到了你的SYN分段,SYN分段表示我想和你连接。

       3)、 客户端收到服务器的SYN分段后,向服务器发送ACK分段进行确认。此时、TCP的连接建立完成了。

       打个比方:

          甲说:你在吗?

          乙说:我在。你在吗?

          甲说:我在。

      TCP的关闭:

        TCP的关闭必须要在双方的数据都发送完毕才进行关闭。

        1)、甲方想关闭数据,则需要发送FIN分段,发送了FIN分段之后,甲方就不能再发送新的数据。而新发送的FIN分段排队在之前发的分段之后,就是说只有等之前的数据发送完后,FIN分段才会从系统缓存中发送到乙方。但是此时甲方还是可以收到数据,

        2)、乙方收到FIN分段后,知道甲方数据已经发送完毕,乙方则通知程序数据接收已经完毕,然后想甲方发送一个ACK分段。等数据发送完毕后,乙方发送FIN分段。

             3)、甲方收到乙方的FIN后,向乙方发送ACK。等一定时间过去后,甲方认为连接一个关闭了,则进入close状态。

        4)、乙方收到ACK后,立即进入close状态。

     TCP数据传输这一块的3个机制:确认机制,超时机制,重发机制。

      确认机制:一般现实中都是累计确认机制,为了省流量,比如甲方发送了4个分段1,2,3,4,乙方都接收成功了,会返回最大序列号4,表示4之前的都接收成功了。再比如乙只接收到1,2,4,则会返回2.

      超时机制:如果一段时间发现分段没有确认,则认为 该分段接收超时。

      重发机制:当发现分段丢失时,进行重发。此时如果甲方发送1,2,3,4,乙方接收了1,2,4,则会重发3和4吗。事实是不会,因为乙会发送一个SACK的分段,该分段会说明4分段未丢失,所以重发就需要重发3就可以了。

        TCP流量控制:

       一般通过发送的发送窗口根据接收方的窗口调整,或者通过当时的网络情况调整。避免资源浪费。

        拥塞控制:慢启动、拥塞避免、快速重发、快速恢复。

      当发现拥塞时,如果是超时则进行慢启动,如果是收到重复的确认,则进行快速重发和快速恢复机制。

      其中重复确认是指收到4,5,6,7分段时,假设4分段丢失,当收到5分段时,接收方会向发送方发送需要4分段的包,收到6,7亦是,到连续3次之后,就可以快速重发了。

     

  • 相关阅读:
    HDU 4865 Peter's Hobby --概率DP
    UVALive 6093 Emergency Room --优先队列实现的模拟
    UVALive 6665 Dragon’s Cruller --BFS,类八数码问题
    UVALive 6092 Catching Shade in Flatland --枚举+几何计算
    UVALive 6168 Fat Ninjas --二分小数+搜索
    九连环-递归解法
    一道题看bitset应用 --ZOJ 3642
    UVALive 6663 Count the Regions --离散化+DFS染色
    ZOJ 1111 Poker Hands --复杂模拟
    UVALive 6449 IQ Test --高斯消元?
  • 原文地址:https://www.cnblogs.com/jlyg/p/10217713.html
Copyright © 2011-2022 走看看