当前位置: 首页 > news >正文

企业移动网站建设商广告公司经营范围

企业移动网站建设商,广告公司经营范围,品牌推广方案思维导图,电商网站构建预算方案文章目录1、通俗语言理解1.1 三次握手1.2 四次挥手2、进一步理解三次握手和四次挥手2.1 三次握手2.2 四次挥手1、通俗语言理解 1.1 三次握手 C:客户端 S:服务器端 第一次握手: C:在吗?我要和你建立连接。 第二次握手&#xff…

文章目录

  • 1、通俗语言理解
    • 1.1 三次握手
    • 1.2 四次挥手
  • 2、进一步理解三次握手和四次挥手
    • 2.1 三次握手
    • 2.2 四次挥手

1、通俗语言理解

1.1 三次握手

C:客户端 S:服务器端

第一次握手:
C:在吗?我要和你建立连接。

第二次握手:
S:在的呢!来吧,确定要连接吗?

第三次握手:
C:非常确定!咱们建立连接吧。

为什么要三次握手?好麻烦!两次握手不就可以了吗?我想知道为什么。

:如果是;两次握手,S告诉C你来吧,同时S就打开了一个连接,这个时候如果C已经挂了,那S一直等C同时还开启了一个连接。
就像你和你朋友约会,你给他准备了一个惊喜,但是他却没来。

1.2 四次挥手

C:客户端 S:服务器端

第一次挥手:
C:我的数据已经传完了,我想和你断开连接。

第二次挥手:
S:好的,我知道了,但是我这边还有数据给你,你先不要和我断开。

第三次挥手:
S:我的数据已经传送完了,你可以和我断开连接了!

第四次挥手:
C:我已经收到你的让我断开连接的信息了,可以断开了。

为什么要四次挥手?好麻烦!三次挥手不就可以了吗?我想知道为什么。

:当S端收到断开连接的信息时,S端可能还有数据要乡C端发送,使用确认状态(ACK)和结束状态(FIN)要分开发送


2、进一步理解三次握手和四次挥手

2.1 三次握手

首先很多人会先讲下握手的过程:

1、第一次握手:客户端给服务器发送一个 SYN 报文。

2、第二次握手:服务器收到 SYN 报文之后,会应答一个 SYN+ACK 报文。

3、第三次握手:客户端收到 SYN+ACK 报文之后,会回应一个 ACK 报文。

4、服务器收到 ACK 报文之后,三次握手建立完成。

作用是为了确认双方的接收与发送能力是否正常。

这里解释一下为啥只有三次握手才能确认双方的接受与发送能力是否正常,而两次却不可以:

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

因此,需要三次握手才能确认双方的接收与发送能力是否正常。

这个过程的我们应该要描述的更详细一点,因为三次握手的过程中,双方是由很多状态的改变的,而这些状态,也是面试官可能会问的点。所以我觉得在回答三次握手的时候,我们应该要描述的详细一点,而且描述的详细一点意味着可以扯久一点。加分的描述我觉得应该是这样:

刚开始客户端处于 closed 的状态,服务端处于 listen 状态。然后

  • 1、第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN(c)。此时客户端处于 SYN_Send 状态。

  • 2、第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s),同时会把客户端的 ISN + 1 作为 ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_REVD 的状态。

  • 3、第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 establised 状态。

  • 4、服务器收到 ACK 报文之后,也处于 establised 状态,此时,双方以建立起了链接。

模型参考1
在这里插入图片描述
模型参考2
在这里插入图片描述

提示:

  • (1) SYN=1 表示该报文不携带数据,但消耗一个序号 seq=x,seq=x是客户端的初始化序列号,因为tcp是面向字节流的
  • (2) SYN=1 表示该报文不携带数据,但消耗一个序号 seq=y,seq=y是服务器的初始化序列号,ACK=1是一个确认号
    ack=x+1,表示服务器下次接收到的序号希望是x+1。然后服务器进入到SYN-RCVD等待的状态
  • (3) ACK=1是一个确认号,seq=x+1是上一次服务器回应的序号要求,ack=y+1表示客户下一次接收到的序号希望是y+1

2.2 四次挥手

  • 1、第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态。

  • 2、第二次握手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT状态。

  • 3、第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。

  • 4、第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态

  • 5、服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。

模型参考1
在这里插入图片描述

模型参考2
在这里插入图片描述

这里特别需要主要的就是TIME_WAIT这个状态了,这个是面试的高频考点,就是要理解,为什么客户端发送 ACK 之后不直接关闭,而是要等一阵子才关闭。这其中的原因就是,要确保服务器是否已经收到了我们的 ACK 报文,如果没有收到的话,服务器会重新发 FIN 报文给客户端,客户端再次收到 ACK 报文之后,就知道之前的 ACK 报文丢失了,然后再次发送 ACK 报文。
至于 TIME_WAIT 持续的时间至少是一个报文的来回时间。一般会设置一个计时,如果过了这个计时没有再次收到 FIN 报文,则代表对方成功就是 ACK 报文,此时处于 CLOSED 状态。

参考资料:三次握手和四次挥手(面试必问)

http://www.tj-hxxt.cn/news/11741.html

相关文章:

  • 动态网站与静态网站的区别网络营销推广流程
  • 留言板网站怎么做百度网站排名优化价格
  • 源代码做网站网络推广的调整和优化
  • 网站素材设计框架企业seo职位
  • 企业网站托管外包方式营销型网站建设团队
  • 深圳做网站优化的公司杭州专业seo公司
  • 上海莱布拉网站建设如何看待百度竞价排名
  • 新疆哪里做网站怎样做网络推广
  • 网站首页布局seo网络推广100种方式
  • 温州58同城怎么做网站惠州seo网站排名
  • 网站面板爱站网域名查询
  • 有哪些做软件的网站网站alexa排名查询
  • 上海青浦做网站凡科建站多少钱
  • 做网站的费用入什么科目千锋教育和黑马哪个好
  • 网站怎么做下载连接seo研究协会网
  • 邢台网站制作地方运营培训班学费大概多少
  • 哈尔滨房地产网站建设舆情通
  • 网站建设 软件开发广州网站运营专业乐云seo
  • win系统和mac那个做网站好今日油价92汽油价格
  • 毕业设计做网站怎么样介绍产品的营销推文
  • 介绍做网站的标题企业营销策划有限公司
  • iis部署网站提示建设中湖南网站建设工作室
  • 直播网站开发源码软件开发公司简介
  • 合肥网站制作前3名的站长域名查询工具
  • 引用网站资料怎么注明沪深300指数
  • asp网站怎么做404页面跳转百度开户怎么开
  • 12306网站 谁做的nba实力榜最新排名
  • 网店设计公司网站seo完整seo优化方案
  • 自己建网站需要备案吗成都网站推广经理
  • 网站制作建实体店引流推广方法