目录
一、👋🏻前言
二、🤝🏻握手时的快递单
1.👫第一次握手(发送方)
2.👫第二次握手(收件方)
3.👫第三次握手(发件方)
三、📦️发送数据时的快递单
1.第一次发数据(发件方)
四、🧑🏼❤🧑🏽握手时机器的状态
1.我们打电话时的状态
2.TCP的状态
五、🏁结语
一、👋🏻前言
大家好,我是菌菌巧乐兹~书接上回,我们讲到TCP的“快递单”如何填写
本篇文章,大家一起来填一填“快递单”
二、🤝🏻握手时的快递单
快递原单如下图所示:
源端口和目的端口均和程序及电脑有关,我们先略过,从序号开始。
案例:我们现在有19本书要发
1.👫第一次握手(发送方)
序号:这个序号不一定从0开始,是根据当前实际情况,愿意多少都可以,假设我打算从520开始,那我需要告诉对方,这里就填写520
确认号:此时不是收件方,这里不需要填,随便填都可以,也可以全0
数据偏移(就是首部长度):略
保留:全0
URG:不是紧急消息,填0
ACK:因为不是收件方,所以确认号无效,填0
PSH:不需要快速回复,填0
RST:没出现问题,填0
SYN:现在正在连接,填1
FIN:现在不需要断开连接,填0
后面都略
2.👫第二次握手(收件方)
序号:此时我不仅是收件方,我也是发件方,我马上要发消息了,那边说打算从520开始发信息,那这边也随便设置一个,那就从1314开始发信息吧,于是填1314
确认号:此时是收件方,前面收到了发过来的520,此时希望下次收到的是521,所以填521
数据偏移(就是首部长度):略
保留:全0
URG:不是紧急消息,填0
ACK:是收件方,所以确认号有效,填1
PSH:不需要快速回复,填0
RST:没出现问题,填0
SYN:现在正在连接,填1
FIN:现在不需要断开连接,填0
截止到握手二,连接已经初步达成了,第三次握手只是为了更保险,所以第三次握手已经可以发数据了,看它想不想。
3.👫第三次握手(发件方)
序号:此时我不仅是发件方,我也是收件方,上一次发的是520,现在该发521了,所以填521
确认号:此时是收件方,前面收到了发过来的1314,此时希望下次收到的是1315,所以填1315
数据偏移(就是首部长度):略
保留:全0
URG:不是紧急消息,填0
ACK:是收件方,所以确认号有效,填1
PSH:不需要快速回复,填0
RST:没出现问题,填0
SYN:现在连接已经建立好了,填0
FIN:现在不需要断开连接,填0
三、📦️发送数据时的快递单
1.第一次发数据(发件方)
序号:如果握手三时,已经开始发书(数据)了,假设发了5本(5字节),握手三的序号写的521,所以现在521+5=526,填526
如果握手三时,还没发数据,握手三的序号写的521,现在还填521
确认号:如果握手到现在没有接过其他数据,和之前保持一致填1315
数据偏移(就是首部长度):略
保留:全0
URG:不是紧急消息,填0
ACK:是收件方,所以确认号有效,填1
PSH:不需要快速回复,填0
RST:没出现问题,填0
SYN:现在连接已经建立好了,填0
FIN:现在不需要断开连接,填0
四、🧑🏼❤🧑🏽握手时机器的状态
1.我们打电话时的状态
在探讨机器之前,我们先思考一下我们打电话的状态。
事情 | 状态 |
打电话前 | 没有打电话的状态 |
拨通了电话号码 | 开始听彩铃 |
对方接听 | 开始打电话 |
事情 | 状态 |
电话响了 | 等待我点接听键 |
我点了接听键 | 开始打电话 |
2.TCP的状态
找了好多图,就觉得这个写的比较好~
五、🏁结语
我是菌菌巧乐兹~希望用通俗易懂的语言来讲解程序知识~
如果觉得写的还行,请点个赞💛再走吧~