当面试官问: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

相关文章

【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打开链接,服务器端

如何保证android程序进程不到万不得已的情况下,不会被结束

最近,做一个调用系统自带相机的那么一个功能,遇到的坑,在此记录一下。 设备:红米note4 问题起因 因为自定义的相机,很难满足客户的所有需要,比如:自拍杆的支持,优化方面等等。这些方面自定义的相机都不比系统自带的好,因为有些系统都是商家定制的,难免会出现一个奇葩的问题。比如:你在这款手机上运行,无任何问题,然而你换一款手机后,问题就出现了。 比如:小米的红米系列,你启用系统自带拍照功能后

【吊打面试官系列-Redis面试题】说说 Redis 哈希槽的概念?

大家好,我是锋哥。今天分享关于 【说说 Redis 哈希槽的概念?】面试题,希望对大家有帮助; 说说 Redis 哈希槽的概念? Redis 集群没有使用一致性 hash,而是引入了哈希槽的概念,Redis 集群有 16384 个哈希槽,每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽, 集群的每个节点负责一部分 hash 槽。

网络原理之TCP协议(万字详解!!!)

目录 前言 TCP协议段格式 TCP协议相关特性 1.确认应答 2.超时重传 3.连接管理(三次握手、四次挥手) 三次握手(建立TCP连接) 四次挥手(断开连接)  4.滑动窗口 5.流量控制 6.拥塞控制 7.延迟应答 8.捎带应答  9.基于字节流 10.异常情况的处理 小结  前言 在前面,我们已经讲解了有关UDP协议的相关知识,但是在传输层,还有

linux下TCP/IP实现简单聊天程序

可以在同一台电脑上运行,在一个终端上运行服务器端,在一个终端上运行客户端。 服务器端的IP地址要和本地的IP相同,并分配端口号,客户端的默认设置为本地,端口号自动分配。 服务器端: #include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <sys/types.

看完这个不会配置 logback ,请你吃瓜!

之前在 日志?聊一聊slf4j吧 这篇文章中聊了下slf4j。本文也从实际的例子出发,针对logback的日志配置进行学习。 logack 简介 logback 官网:https://logback.qos.ch/ 目前还没有看过日志类框架的源码,仅限于如何使用。所以就不说那些“空话”了。最直观的认知是: logback和log4j是一个人写的springboot默认使用的日志框架是

JAVAEE初阶第七节(中)——物理原理与TCP_IP

系列文章目录 JAVAEE初阶第七节(中)——物理原理与TCP_IP 文章目录 系列文章目录JAVAEE初阶第七节(中)——物理原理与TCP_IP 一.应用层重点协议)1. DNS2 .NAT3. NAT IP转换过程 4 .NAPT5. NAT技术的缺陷6. HTTP/HTTPS7. 自定义协议 二. 传输层重点协议 1 .UDP协议 2.1.1 UDP协议端格式 2.1.2 UD

深入理解TCP通信

这大概是自己博客上面第三次写TCP通信demo了,总是写同样的内容也不太好啊,不过每一次都比前一次进步一点。这次主要使用了VIM编辑工具、gdb调试、wireshirk、netstat查看网络状态。 参考《C++服务器视频教程》、《Unix网络编程》 一、VIM常用命令 vim server.cpp #打开一个文件:w 写入文件:wq 保存并退出:q! 不保存退出显示行号