TCP/IP协议的三次握手,四次挥手

 以上方框内容,一行代表一个字节。

第一行端口号:是由原端口号(本机端口号你自己家的门牌号)和目的端口(目的端口号就是你要去别人家的门牌号)号组成的,至于里面的内容是什么,就发挥想象力16位的二进制组成。

第二行32位序号:我们也叫seq,是客户端发送服务端的序号是多少这个是随机生成的,

第三行32位确认序号:我们也叫ack(注意是小写),作用是我上一条发送的信息进行一个确认。

第四行中间的6个标志位:分别是以下,此时我们有两个ack一个是确认序号位(ack)是32位,一个是确认标志位(ACK)只有1位而且智能表示0和1,位不同大小写不同,作用不同别弄混了

URG:紧急指针(urgent pointer)有效。
ACK:确认序号有效。为1时序号有效
PSH:接收方应该尽快将这个报文交给应用层。
RST:重置连接。
SYN:建立一个新连接。为1时确认一个链接
FIN:断开一个连接。为1时确认断开

接下来进入正题

客户端想要和服务端进行通信:

第一次握手:首先SYN=1与服务端确认新链接,并且发送seq序号这个是由计算机随机生成的发送数据包给服务器,告诉服务器我要和你进行通信,并且客户端进入SYN_SENT状态

第二次握手:这时候服务器收到客户端发过来的数据包并且响应客户端,发送SYN=1与客户端我要和你链接,并且发送一个随机生成的seq序号,此时ACK=1,目的是你给我发的消息我跟你确认我的确认消息是有效的,带着消息确认包我们也叫ack包 ack = seq+1此时要从ack=seq+1开始发否则就是不合法,服务器端进入SYN_RCVD状态,进入到第二次握手的时候就是此时客户端经过两次握手已经是确认与服务端收和发没问题的,但是服务器只确认了发没有问题收他还不知道,就要进行第三次握手。

第三次握手:客户端此时给服务发送一个ACK=1的确认信息包,跟一个ack = seq+1从而完成第三次握手让服务器也知道了我与客户端收发没有问题

补充:seq发送成功后 在发送报文需要从seq发送成的当前值往上发 比如seq=100 发报文就是101 102 103...中间如果有其他的数比如50 200 300  10 这些会被当作吧报文不合法直接被扔掉

补充:也就是说每有一个数据块产生就会经过一系列封装从而生成一个报文,比如聊微信的消息,

下载的视频,百度的信息。

补充:ACK即是确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。

四次挥手

第一次挥手:客户端给要想断开链接,首先给服务器发FIN=1,其次seq=(根据报文慢慢增长上来的就是说seq先=100此时经历了一些报文 就会按顺序的网上增加 比如增加到165这时候要求断开的数就seq等于的数)。

第二次挥手:服务器给客户端发一个ACK确认字符ack=seq+1,,告诉客户端你要请求断开的消息我收到了,但是服务端会先去处理其他的一些任务。

第三次挥手:服务端此时忙完了,处理完别的消息了,此时会给客户端发送一个FIN=1告知客户端我们可以断开了。

第四次挥手:服务器给客户端发一个ACK确认字符ack=第三次挥手的seq+1,

为什么要四次挥手三次不行吗 看下面

 你可以想象一下两对情侣吵架 男方客户端,女方服务端(打个比方别上升高度)

第一次挥手:客户端会先发给服务端一个报文FIN = 1和seq告诉服务端我要和你断开链接,也就是男方发消息给女方说我们分手吧 

第二次挥手:服务端收到消息后会发给客户端ACK和ack=seq+1 也就是女方也接收到了消息 并给你发一个哦,我知道了 也就是ACK = 1  表明女方收到了消息此时就是女方知道了男方要和我分手,男方肯定是不会对女方继续好的了,也就是客户端不会给服务端发送数据了,是男方准备好了分手,但女方呢?并不知道 他可能会哭会去干一些事情或者找舔狗哭诉,这个就是服务端会先去忙其他的事情,同时客户端会等着,服务端事情忙完了 

第三次挥手:会发给客户端FIN=1 服务端的事情忙完后告诉客户端我们俩可以断开了, 并跟着随机生成的seq,打个比方就是 此时女方找舔狗哭诉完了,澡洗完了,事情忙完了,情绪稳定了 给此刻正在等消息的男方说分就分谁怕谁。

第四次挥手:此时男方接收到了消息也会给女方回一句拜拜 你的消息我收到了 你是个好人 那我们就分手吧 也就是ACK=1和ack=seq+1,此刻客户端与服务端就断开链接了 ,一段感情也破裂了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值