目录

  • 概念
  • TCP三次握手

概念

在进入本篇文章正题之前,需要先了解一下关于TCP连接过程中使用的关键字含义。
序列号seq:标记数据段的顺序。
TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;
给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。
确认号ack:期待收到对方下一个报文段的第一个数据字节的序号;
序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。
同步SYN:连接建立时用于同步序号。
当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。
SYN=1表示这是一个连接请求,或连接接受报文。
SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0。
确认ACK:仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效。
终止FIN:表示释放一个连接。FIN=1,则表示发送方的报文段数据已经发送完毕,并请求断开连接。

TCP三次握手


第一次握手:客户端发送syn报文段;该报文段中不包含任何应用层数据,客户端将SYN置为1,随机产生报文段中第一个字节序列号seq=client_seq,并将该报文段封装到IP数据报中,发送到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn数据报;从该IP数据中提取SYN报文段。服务器将SYN置为1,ACK=1;其次,服务器设置确认号ack=client_seq+1;最后,服务器随机产生自己的初始序列号seq=server_seq,即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK数据报;客户端检查是否ack,ACK;如果正确,则客户端将ACK置为1,确认号ack=server_seq+1;序列号seq=client_seq+1;此时数据连接已经建立完成,将SYN=0;此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP连接都将被一直保持下去。

面试必备TCP三次握手相关推荐

  1. tcp滑动窗口_面试必备TCP(三):滑动窗口

    之前说过TCP协议头部的组成,不清楚可以点击这里,TCP滑动窗口技术通过动态改变窗口大小来调节两台主机间数据传输. 每个TCP/IP主机支持全双工数据传输,因此TCP有两个滑动窗口:一个用于接收数据, ...

  2. 淘宝二面,面试官居然把TCP三次握手问的这么详细

    TCP 的三次握手和四次挥手,可以说是老生常谈的经典问题了,通常也作为各大公司常见的面试考题,具有一定的水平区分度.看似是简单的面试问题,如果你的回答不符合面试官期待的水准,有可能就直接凉凉了. 本文 ...

  3. 串口发送tcp数据 源端口号_三分钟基础知识:用动画给面试官解释 TCP 三次握手过程...

    作者 |  小鹿 来源 |  小鹿动画学编程 写在前边 TCP 三次握手过程对于面试是必考的一个,所以不但要掌握 TCP 整个握手的过程,其中有些小细节也更受到面试官的青睐. 对于这部分掌握以及 TC ...

  4. java锁一次交互二次握手_Java后台开发面试实战(二):TCP三次握手四次挥手

    感谢牛客网网友提供的面试经验! 1. 解释一下TCP三次握手四次挥手 图片来源于微信公众号:码农求职小助手 答: 嗯(稍作思考)- 三次握手简单来说,在数据传输开始前: 第一次握手:客户端向服务端发送 ...

  5. 面试官,求你了别再问我TCP三次握手和四次挥手了(含面试题)

    少点代码,多点头发 三次握手建立链接,四次挥手断开链接.这个问题算非常经典的问题,也是面试官非常喜欢问的问题. 不夸张的说,龙叔在校招面试的时候每一家公司都问到过关于三次握手和四次挥手相关的问题,相信 ...

  6. 吊打面试官!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题

    作者 | 小林coding 来源 | 小林coding(ID:CodingLin) 不管面试 Java .C/C++.Python 等开发岗位, TCP 的知识点可以说是的必问的了. 任 TCP 虐我 ...

  7. 深度剖析TCP三次握手,面试官拍案叫绝

    在后端相关岗位的入职面试中,三次握手的出场频率非常的高,甚至说它是必考题也不为过.一般的答案都是说客户端如何发起 SYN 握手进入 SYN_SENT 状态,服务器响应 SYN 并回复 SYNACK,然 ...

  8. 网络 卧槽!牛皮了,面试官居然把TCP三次握手四次挥手问的这么详细

    TCP的定义 TCP全称为Transmission Control Protocol(传输控制协议),是一种面向连接的.可靠的.基于字节流的传输层通信协议.TCP是为了在不可靠的互联网络上提供可靠的端 ...

  9. TCP三次握手和四次挥手详解(面试常见问题)

    大概两个月前,一位朋友在面试360集团时,在面试过程中被问及TCP三次握手和四次挥手的相关知识,他当时只知道大概,但当时面试官问他TCP三次握手过程中发送的数字是多少,他一下子就懵住了,因为这也是他第 ...

最新文章

  1. Android静态变量的生命周期
  2. centos6 64位服务器的基本初始化
  3. kotlin开发经验谈3
  4. react-native 小米手机和 mac 安装
  5. 2020兰大计算机学硕线,兰州大学2020年硕士研究生招生复试分数线
  6. oracle 备份 无客户端,已解决: 备份linux oracle 突然不能备份了 - Dell Community
  7. Google Maps API 代码
  8. java库存导出_java生成导出excle文件
  9. 25 个精美的后台管理界面模板和布局
  10. 一分钟掌握Python字典的用法
  11. 系统学习深度学习(二十四)--WRN
  12. 【思路】2021认证杯思路、第十四届“认证杯”数学中国数学建模网络挑战赛
  13. 科学道德与学风-2021雨课堂答案-第5章
  14. 秋天的第一杯奶茶刷屏互联网,其背后又蕴含着哪些营销逻辑呢?
  15. [ZT]千兆光纤 GBIC和SFP接口规格介绍
  16. 透彻分析微信公众平台三大矛盾
  17. JAVA-仿微信九宫格头像
  18. 网络的可靠性是设计出来的
  19. Gym - 101612A 点亮数字
  20. P5:用统一的NLP框架建模推荐系统问题

热门文章

  1. 图灵成立七周年——经典回顾
  2. 转载一篇阅读文章(还算不错吧)
  3. 自动化运维的正确姿势,你试了也会上瘾 | 社区福利
  4. robo3t 连接服务器数据库_mongodb开启公共IP访问及Robo 3T连接远程mongodb服务器
  5. python部署到iis效率_IIS 部署 Python Django网站流程(受够了野路子)
  6. 理解PHP5中static和const关键字
  7. spring的事务回滚机制,事务原理
  8. php7垃圾回收机制l_PHP7 垃圾回收机制(GC)解析
  9. 快速理解设计模式六大原则
  10. 打开c语言运行不了_C语言——菜鸟和大神的分水岭:内存、线程、进程