zoukankan      html  css  js  c++  java
  • 传输层协议TCP和UDP

    本文力图简洁,让读者对TCP和UDP有个初步的认知。闲话少说,现在开始吧。TCP和UDP都是传输层的协议。TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送。UDP不建立连接而直接发送,对未送达的消息不管不顾,因而是不可靠的。

    TCP

    三次握手

    三次握手是发生在建立连接的时候,大致过程是这样的。首先由客户端发起请求,然后服务端对请求进行响应,最后客户端再告知收到响应。具体的过程列在了下面。

    1. > 客户端发送带SYN标志的数据包给对方,告知需要建立连接;

    2. > 服务端收到后,回传一个带有SYN/ACK标志的数据包,告知收到建立连接请求;

    3. > 客户端回传一个带有ACK标志的数据包,代表握手结束并且建立TCP连接。

    四次挥手

    四次挥手则是在断开连接的时候,过程如下。

    1. > 客户端发送带FIN标志的数据包给对方,告知需要断开连接;

    2. > 服务端收到后,回传一个带有ACK标志的数据包,告知收到断开连接请求;

    3. > 服务端再次回传一个带有FIN标志的数据包,告知同意断开连接请求;

    4. > 客户端回传一个带有ACK标志的数据包,代表挥手结束并且断开TCP连接。

    UDP

    UDP没有类似TCP的三次握手机制,而是直接把数据发送出去。因此传输不具备可靠性。但是在网络极差的时候,凭借其不需要三次握手和四次挥手特性,却能高效的把数据传输出去。

    词汇

    现在把上面出现的词汇分类整理一下吧。

    • 传输协议

      • TCP - Transmission Control Protocol - 传输控制协议
      • UDP - User Datagram Protocol - 用户数据协议
    • 握手状态

      • SYN - synchronous - 建立连接
      • ACK - acknowledgement - 确认收到
    • 挥手状态

      • FIN - final - 关闭连接

    参考

    这篇文章是我的读书笔记。综合了书中的知识以及参考了百度百科关于四次挥手的解释,总结出了对传输层协议TCP和UDP的浅显认知。其中,词汇的命名参考了园友azraelly的TCP的状态一文。

    关于TCP和UDP的应用场景,以及在传输时都带有那些状态和数据,文中都没有提及。改日有时间再专门写一篇这样的文章。

  • 相关阅读:
    [POJ3635]Full Tank? 题解
    洪水题解
    [HNOI2009]最小圈 题解
    Grazing on the Run 题解
    [BZOJ4237]稻草人 题解
    [POJ3783]Balls 题解
    [POI2005]Bank notes 题解
    字符串题解
    pyinstaller利用spec文件打包的使用模板
    Pycharm2020 永久激活
  • 原文地址:https://www.cnblogs.com/bergwhite/p/Transport-Layer-TCP-and-UDP.html
Copyright © 2011-2022 走看看