前几天面试某电商被问住了,问的很细,我就说了说连接过程,必然凉凉。在csdn上找了一篇很详细的博客。https://blog.csdn.net/hyg0811/article/details/102366854

看之前先给解释一下ACK、SYN等缩写的含义。

SYN: 同步序列编号(Synchronize Sequence Numbers)。是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。是TCP连接的第一个包。

ACK: ACK (Acknowledge character)即是确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。

ESTABLISHED:已连接的

MSS: 能被接收的最大报文段长度

为什么需要三次握手,两次不行吗?(经典第一问)
弄清这个问题,我们需要先弄明白三次握手的目的是什么,能不能只用两次握手来达到同样的目的。

第一次握手:客户端发送网络包,服务端收到了。
这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
第二次握手:服务端发包,客户端收到了。
这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。
第三次握手:客户端发包,服务端收到了。
这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。
因此,需要三次握手才能确认双方的接收与发送能力是否正常。

最新文章

  1. [ASP.NET 5]终于解决:Unable to load DLL 'api-ms-win-core-localization-obsolete-l1-2-0.dll'
  2. 常用的yum命令
  3. MVC之前的那点事儿系列(7):WebActivator的实现原理详解
  4. Python对整形数字进行加密和解密
  5. PowerDesigner中导出设计说明文档
  6. HTML5 规范
  7. mkinitrd 与 mkinitramfs
  8. C#学习笔记(三):值类型、引用类型及参数传递
  9. Appium Android 屏幕滑动
  10. RedHat7配置IdM server
  11. URL 路由访问报错
  12. [转]MySQL数据库备份和还原的常用命令小结
  13. 安装ecshop出错
  14. memcached + php 扩展 for ubuntu
  15. 团队作业4——第一次项目冲刺(Alpha版本) Day2
  16. vue-----表单与组件
  17. python3 图片文字识别
  18. Qt+QGIS二次开发:开发环境搭建(超级详细)
  19. 整理备忘一波liunx命令(持续更新)
  20. 关于页面的跳转添加参数(比如id啥的)

热门文章

  1. A convenient way to recognize and handwrite multidimensional arrays in Numpy
  2. (最详细)JAVA如何连接虚拟机的HBASE和hadoop(JAVA如何远程访问虚拟机HBASE)
  3. java 循环节长度
  4. P 1041 考试座位号
  5. Asp.net mvc项目分页功能
  6. JPA#实体属性转换器
  7. 121-PHP类成员函数(二)
  8. python中的__code__
  9. opencv+python实时人脸检测、磨皮
  10. 第十八篇 admin组件