专栏首页算法其实很好玩基础知识-网络-TCP三次握手

基础知识-网络-TCP三次握手

一 为什么搞这个?

    从今天开始,尽量再多更一篇基础知识,基本都是面试时的高频基础知识问题,会包括网络+操作系统+组成原理,一来帮大家回忆,二来通过面试。毕竟作为一名工程师,底子要深厚,生产时出了错,知道原理,就会有底气得多~而原理,都是来源于我们学习的基础知识~

二 今天先来网络的,TCP三次握手

    网络协议中,TCP是多么地重要,不用我多说,今天先给大家讲一下三次握手~

从网上找一张图:

三 开讲!

    1.先解释下名词:

    SYN,同步序号,是1,它表示建立连接。TCP规定SYN=1时不能携带数据,但要消耗一个序号。因此随机选取一个seq=x的数据包。

    ACK,确认序号,是1,它表示响应。都响应了,那么上一次连接就是成功的

    seq,序列号,发送端数据包的初始序号,表示发送端数据包的初始序列号为x,为第x号帧。

    ack,确认号,表示对收到数据包的确认,以及对下次收到数据包的期待。ack=x+1,表示我方对到x为止的数据包都收到了,且告知对方:我期待你下次给我发送的数据包的序列号为x+1。

    为了方便理解,大家可以认为,SYN和ACK是协议层面的标记、seq和ack是数据方面的标记

    2.三次握手

        (1)第一次握手

客户端建立连接,SYN=1

此时客户端进入syn_sent状态,表示等待服务端的回复。

(2)第二次握手

       服务端确认,并,建立连接

        所以ACK=1,SYN=1

        (3)第三次握手

四 经典面试题

Q:为什么TCP需要三次握手,而不是两次握手?

答:谢希仁版《计算机网络》中,是这样解释的:

    主要是为了防止已失效的连接请求报文段,突然又传到了服务端。

    对于客户端A和服务端B

    我们假定出现了这样一种异常情况:即客户端A发出的,第一个连接请求报文段,并没有丢失,而是在某些网络节点长时间滞留了,一直到,连接释放之后的某个时间,才到达服务端B。本来这是一个早已失效的报文段,但B就会认为,这是A发出的一次新的连接请求,于是向A发送了确认连接。对于两次握手来说,B发送了确认连接,就建立起了TCP连接,这样B一直等待A发送数据包,服务端的很多资源就白白浪费了。

五 总结

明天预告:二叉树+四次挥手

本文分享自微信公众号 - 算法其实很好玩(AlgorithmBUPTrenyi),作者:BUPTrenyi

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Day15-递归&回溯-无重复数组的子集

    本来昨天题的代码都写完了,但pm姐姐说,这个需求明天必须上,没办法,昨天就没时间写文章了

    BUPTrenyi
  • Day17-递归&回溯-N皇后

    国际象棋8x8的棋盘,皇后棋子的该行,该列,两条对角线上,均不能再放置皇后棋子。那么放置8个皇后,最多有多少种摆法?

    BUPTrenyi
  • Day16-递归&回溯-有重复数组的子集

    其实今天这道题本应该在昨天的,第二篇文章中的,奈何需求多而紧,着实没时间写第二篇文章了,你们可不要以为我是划水啊

    BUPTrenyi
  • 机器学习必知必会10大算法

    预测建模主要关注的是在牺牲可解释性的情况下,尽可能最小化模型误差或做出最准确的预测。我们将借鉴、重用来自许多其它领域的算法(包括统计学)来实现这些目标。

    Datawhale
  • 机器学习必学10大算法

    预测建模主要关注的是在牺牲可解释性的情况下,尽可能最小化模型误差或做出最准确的预测。我们将借鉴、重用来自许多其它领域的算法(包括统计学)来实现这些目标。

    刀刀老高
  • 【机器学习】一文了解机器学习必学10大算法

    预测建模主要关注的是在牺牲可解释性的情况下,尽可能最小化模型误差或做出最准确的预测。我们将借鉴、重用来自许多其它领域的算法(包括统计学)来实现这些目标。

    yuquanle
  • 机器学习必学10大算法

    预测建模主要关注的是在牺牲可解释性的情况下,尽可能最小化模型误差或做出最准确的预测。我们将借鉴、重用来自许多其它领域的算法(包括统计学)来实现这些目标。

    小小詹同学
  • 机器学习必学10大算法

    本文介绍了 10 大常用机器学习算法,包括线性回归、Logistic 回归、线性判别分析、朴素贝叶斯、KNN、随机森林等。

    机器之心
  • 面试必备 | 机器学习这十大算法你确定会了吗?

    本文介绍了 10 大常用机器学习算法,包括线性回归、Logistic 回归、线性判别分析、朴素贝叶斯、KNN、随机森林等。

    zenRRan
  • 互联网行业哪个职位最有前途?

    大部分互联网公司的本质,是吸引更多的商户(B)或用户(C)来使用自己的产品(P),并使得他们愿意为其花钱买单。基于这个特性,我们可以把一家互联网公司比作一家餐馆...

    华章科技

扫码关注云+社区

领取腾讯云代金券