当面试官问:TCP三次握手会吗?不会回去等通知吧

2023-10-23 19:40

本文主要是介绍当面试官问:TCP三次握手会吗?不会回去等通知吧,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

“我回来了..”舍友小曼推开门,一脸垂头丧气,让人一眼就看出了不对劲!

“你今天参加面试了,结果如何?”舔狗舍友小妍一向不会察言观色,笑嘻嘻的就凑过去。

“别提了!我看你俩都开始往这个通信行业走,我也去试了试,没想到面试官问我三次握手是什么,我支支吾吾的没答出来,就直接让我回来等通知了!”

“这可是面试经典题目!你没答出来这不就凉凉了!我前几天刚学过,要不我给你补补!”小妍十分热情地跑上去(其实是想装逼一次,所以薄荷遂了她的心愿,这次的文章给她一点镜头)

TCP是什么?

TCP是传输控制协议,是一种面向连接的、可靠的、具有流量控制的运输层通信协议,UDP是同一层内另一个重要的传输协议。

TCP有哪些报文,分别用在什么地方?

1、URG紧急指针

2、ACK确认序号

3、SYN同步序号,用来发起连接

4、RST重建链接

5、FIN结束链接

6、PSH接收方应将这个报文尽快交给应用层

TCP三次握手是什么?

三次握手其实是建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常,需要注意的是,传输时指定自己的初始化序列号是为了实现后面的可靠性传输。

 

TCP三次握手详解:

第一次握手:客户端给服务端发一个 SYN(syn=1) (同步序列编号)报文,并指明客户端的初始化序列号seq= x。

第二次握手:服务器收到客户端的 SYN 报文之后,必须确认客户的SYN,此时ACK确认号为1,ACK的值为x+1,并且指定了自家的初始化序号y,发送ACK+SYN包,在确认报文段中SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y。

第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 y+ 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时随机序列号seq=x+1(初始为seq=x,第二个报文段所以要+1)双方已成功建立起了连接。

在面试中,我们在问到TCP三次握手之后,常常还会被问到TCP四次挥手,那么TCP四次挥手又是什么呢?

第一次挥手:客户端发送一个FIN,用来请求关闭客户端到服务器数据传送,此时FIN位置1,初始序号seq=x

第二次挥手:服务器收到FIN后,发送一个ACK给客户端,确认序号ACK为收到序号X+1(与SYN相同,一个FIN占用一个序号),此时ACK位置1,ack=x+1

第三次挥手:服务器发送一个FIN包,用来请求关闭服务器到客户端的数据传送,此时FIN位为1,seq为y.

第四次挥手:客户端收到FIN后,接着发送一个ACK给服务器,确认序号为收到序号+1,服务器进入关闭状态,完成四次挥手,此时ACK位为1,ack=y+1

为什么TCP握手需要三次,挥手需要四次?

因为当服务器端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文,SYN用来同步连接,ACK课直接进行确认,但是关闭连接时,当服务器端收到FIN报文时,很可能并不会立即关闭连接,所以只能先回复一个ACK报文,当所有报文都发送完毕了再进行关闭连接。

喜欢的请支持我哟~你的三连是我创作的动力呀

这篇关于当面试官问:TCP三次握手会吗?不会回去等通知吧的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/270042

相关文章

如何关闭Mac的Safari通知? 3招教你关闭Safari浏览器网站通知的技巧

《如何关闭Mac的Safari通知?3招教你关闭Safari浏览器网站通知的技巧》当我们在使用Mac电脑专注做一件事情的时候,总是会被一些消息推送通知所打扰,这时候,我们就希望关闭这些烦人的Mac通... Safari 浏览器的「通知」功能本意是为了方便用户及时获取最新资讯,但很容易被一些网站滥用,导致我们

Java 的 Condition 接口与等待通知机制详解

《Java的Condition接口与等待通知机制详解》在Java并发编程里,实现线程间的协作与同步是极为关键的任务,本文将深入探究Condition接口及其背后的等待通知机制,感兴趣的朋友一起看... 目录一、引言二、Condition 接口概述2.1 基本概念2.2 与 Object 类等待通知方法的区别

SpringBoot快速搭建TCP服务端和客户端全过程

《SpringBoot快速搭建TCP服务端和客户端全过程》:本文主要介绍SpringBoot快速搭建TCP服务端和客户端全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录TCPServerTCPClient总结由于工作需要,研究了SpringBoot搭建TCP通信的过程

嵌入式Linux驱动中的异步通知机制详解

《嵌入式Linux驱动中的异步通知机制详解》:本文主要介绍嵌入式Linux驱动中的异步通知机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、异步通知的核心概念1. 什么是异步通知2. 异步通知的关键组件二、异步通知的实现原理三、代码示例分析1. 设备结构

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

一文详解Java Condition的await和signal等待通知机制

《一文详解JavaCondition的await和signal等待通知机制》这篇文章主要为大家详细介绍了JavaCondition的await和signal等待通知机制的相关知识,文中的示例代码讲... 目录1. Condition的核心方法2. 使用场景与优势3. 使用流程与规范基本模板生产者-消费者示例

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

图解TCP三次握手|深度解析|为什么是三次

写在前面 这篇文章我们来讲解析 TCP三次握手。 TCP 报文段 传输控制块TCB:存储了每一个连接中的一些重要信息。比如TCP连接表,指向发送和接收缓冲的指针,指向重传队列的指针,当前的发送和接收序列等等。 我们再来看一下TCP报文段的组成结构 TCP 三次握手 过程 假设有一台客户端,B有一台服务器。最初两端的TCP进程都是处于CLOSED关闭状态,客户端A打开链接,服务器端