本文力图简洁,让读者对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的应用场景,以及在传输时都带有那些状态和数据,文中都没有提及。改日有时间再专门写一篇这样的文章。

最新文章

  1. 网页制作中在头部固定悬浮table表头(thead)的方法
  2. SQL 存储过程 分页查询
  3. Entity framework code first
  4. 串口控RGB三色灯
  5. React Native开发技术周报1
  6. linux下mysql基础从安装到基本使用
  7. linux学习中遇到的各种故障与解决方法
  8. ApkDec android反编译工具
  9. MySQL备份的shell脚本
  10. PAT-乙级-1018. 锤子剪刀布 (20)
  11. 完美解决Android完全退出程序(转)
  12. linux 下apache2 安装
  13. 基于Appium1.6.X的WebDriverAgent编译、安装
  14. 拷贝JAR包
  15. 【BZOJ5250】[九省联考2018]秘密袭击(动态规划)
  16. Asp.Net WebApi Post请求整理(一)
  17. 在textarea中鼠标指定的位置插入字符或表情
  18. 三,memcached服务的两种访问方式
  19. 拦截TextBox 双击消息
  20. web项目不能链接数据库

热门文章

  1. div的显示和隐藏以及点击图标的更改
  2. 手动获取spring的ApplicationContext和bean对象
  3. BaseAdapter的抽取
  4. 股指的趋势持续研究(Hurst指数)
  5. ahjesus在asp.net中还可以通过设置HttpCookie对象的过期时间为DateTime.MinValue来指定此Cookies为跟随浏览器生效
  6. codis集群安装
  7. RequireJS+JQueryMobile
  8. Linux(Centos)之安装Nginx及注意事项
  9. JS高程3.基本概念(2)
  10. 用原生javascript实现在页面动态显示时间