博客
关于我
TCP三次握手,四次挥手过程
阅读量:329 次
发布时间:2019-03-04

本文共 897 字,大约阅读时间需要 2 分钟。

ACK:
TCP
格式中的控制位由6个标志比特构成,其中一个就是ACK,ACK为1表示确认号有效,表示发来的数据已确认接收无误。为0表示报文中不包含确认信息,忽略确认号字段。
暂时需要的信息有:
ACK
 : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1
SYN
(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此,  SYN置1就表示这是一个连接请求或连接接受报文。
FIN 
(finis)即完,终结的意思, 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。
三次握手过程
一,TCP规定,SYN = 0时,是不能携带数据的,但要消耗一个序号,因此声明自己的序号为seq= x;
二,服务器收到请求后,会回复客户端ACK报文,并开始分配连接资源。
三,客户端再次发送报文确认后,客户端开始分配连接资源。这时就不需要SYN了。然后就建立连接
四次挥手过程
一,client 向 server 发送 FIN 报文,表示 “
我已经没有数据再发过来了,但如果你还有数据要发给我,
你可以继续发。”
二,当server 收到后,因为不确定自己的数据发完了没有,所以会先发一个 ACK 报文,表示“
我收到了
你的 FIN 报文,但我还没准备好,请你继续等我消息”
此时,client 会进入 FIN_WAIT 状态。等待
server 的FIN 报文
三,当server 确认已经发完数据后,会向 client 发送 FIN 报文,告诉client “好了,我已经准备好了,
可以准备关闭 连接了”
四,当 client 收到 FIN 报文后,会发送 ACK报文给 server,告诉 server现在就可以关闭连接。
然后 client 会进入 TIIME_WAIT 状态,等待2MSL 后,依然没有收到回复,
证明 server
已经关闭了,那我client 也可以关闭了
你可能感兴趣的文章
NHibernate动态添加表
查看>>
NHibernate学习[1]
查看>>
NHibernate异常:No persister for的解决办法
查看>>
Nhibernate的第一个实例
查看>>
NHibernate示例
查看>>
nid修改oracle11gR2数据库名
查看>>
NIFI1.21.0/NIFI1.22.0/NIFI1.24.0/NIFI1.26.0_2024-06-11最新版本安装_采用HTTP方式_搭建集群_实际操作---大数据之Nifi工作笔记0050
查看>>
NIFI1.21.0_java.net.SocketException:_Too many open files 打开的文件太多_实际操作---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_插入时如果目标表中已存在该数据则自动改为更新数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0058
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>