tcp的三次握手,tcp三次握手的通俗理解
- 软件开发
- 2023-08-13
- 80
本篇文章给大家谈谈tcp的三次握手,以及tcp三次握手的通俗理解对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以...
本篇文章给大家谈谈tcp的三次握手,以及tcp三次握手的通俗理解对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
如何快速理解TCP三次握手,四次挥手
TCP面向连接
发送数据之前,首先先找到对方建立一个连接,相当于一个逻辑通道。可靠协议,效率低每收到一次数据,要进行确认,保证对方确定收到了这个数据。TCP三次握手
就好比打电话,需要经过拨号,振铃,接通。才能进行讲话
过程:
A:我要跟你建立连接
B:好的,我知道了,我也要跟你建个连接
A:我知道你收到了我的连接请求,我也收到了你的连接请求
滑动窗口:
主要为了避免一次性发送的数据过多,导致对方缓存溢出。
滑动窗口是动态协商,也就是说,在建立连接的时候,就会进行协商
同时,在缓冲区发生变化的时候,也会进行协商。
TCP四次挥手
主要为了避免当一方断开连接,而另一方不知道的情况下,需要耗费资源去维护本该断开的连接
过程:
假设三次连接已经建立完成
A:我要跟你断开连接了
B:好的,我知道你要断开连接了
B:我也要跟你断开连接
A:好的,那就断开连接把
TCP为什么是三次握手,而不是两次或四次
网上有很多文章讲TCP为什么建立连接时需要三次握手,关闭连接时需要四次握手,讲了很多原理,反而让很多人难以理解。
其实只有一句话:TCP连接是两个端点之间的事,由于TCP连接是可靠连接,所以不管是建立连接还是关闭连接,需要两个端点都要发送请求和收到确认
其次要理解TCP的通道是全双工的,是可以读和写数据的,理解这个之后就明白了为什么关闭连接时需要四次握手。
首先讲三次握手,建立连接时不涉及到读写通道,只是两个端点的请求和确认。要记住是两个端点之间的,两个端点是平等的关系。
从客户端的角度来说,它只需要发送一个请求syn,然后收到ack就能知道连接是可以建立的
从服务器端的角度,它也只需要发送一个请求syn,然后收到ack就能知道连接是可以建立的
所以建立连接时最少只需要三次握手即可,即服务器端收到客户端syn,之后向客户端发送ack的同时携带上自己的syn,这样就只需要三次握手就能使双方都发生syn和都收到ack.
当然你自己设计的时候也可以使用4次或者更多的握手,但是最少3次即可
关闭连接时也还是两个端点都要发送请求和收到确认。但是关闭连接时涉及到两个端点的读写通道的事。
从客户端的角度来说,它发送一个关闭请求FIn,然后收到ack就知道可以关闭连接的
从服务器的角度来说,它发送一个关闭请求Fin,然后收到ack就知道可以关闭连接的
但是由于是读和写通道,所以服务器端在收到客户端的关闭Fin时,可能还在往客户端发送消息,所以只能先发送ack确认客户端客户关闭写通道,这时候服务端不能使用通过一消息发送它的关闭Fin,只能过会等它自己写完了,才能重新发送一个关闭请求的Fin。
所以比建立连接时多了一次握手,关闭连接时最少需要4次握手。理解了为什么需要4次握手之后,就不难理解TCP半关闭的概念。
三次握手及四次挥手在TCP/ip模型的哪一层进行的最好有理由~
TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层。
三次握手和四次挥手发生在第三层:传输层。原因:三次握手四次挥手是tcp协议保证可靠全连接的手段,而tcp协议属于传输层协议,理所当然三次握手四次挥手是发生在第三层----传输层tcp三次握手和4次挥手的过程
1.TCP三次握手和四次挥手是网络通信中建立连接和断开连接的过程。2.三次握手是指客户端向服务器发送SYN包,服务器回复SYN+ACK包,客户端再回复ACK包,完成连接的建立。四次挥手是指客户端向服务器发送FIN包,服务器回复ACK包,服务器再发送FIN包,客户端回复ACK包,完成连接的断开。3.在TCP通信中,三次握手和四次挥手是非常重要的过程,能够保证数据的可靠传输和连接的正常断开。同时,了解这些过程也有助于网络工程师进行网络故障排查和优化。
TCP是三次握手的
TCP握手协议:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。1、第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
SYN:同步序列编号(SynchronizeSequenceNumbers)2、第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
3、第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据。
tcp每次发送数据都要三次握手吗
tcp每次发送数据都要三次握手!
假设A就是客户程序,B就是TCP服务器程序
第一次握手:A的TCP客户端给服务器端TCP会发送一个特殊的TCP数据段,其是不包含应用层数据的,单它需要一个数据段头部的一个标记字段,SYN=1(该信号是指请求和服务器端计算机的序号同步),并会发送一个初始顺序号。
第二次握手:B收到A的连接请求报文后,如果同意就会向A回复确认信息。SYN依旧为1,此事确认信息seq+1(意思应该是我收到了,我确认了你的初始序号),并且发送自己的序列号seq=y(sever_isn)。这时也是不允许携带应用层数据的。(虽然被授予连接了,但是没有获得服务器的允许连接分配缓冲区和变量)
第三次握手:A收到B的回复,允许连接数据后发送回复确认ACK置1,ack=y+1,自己为seq=x+1(不携带信息,不消耗序列号,自己本身不用确认,序列号不变)。客服也会给连接分配缓冲区合和变量,其次因为连接已经建立,所以SYN=0。
关于tcp的三次握手的内容到此结束,希望对大家有所帮助。
本文链接:http://xinin56.com/ruanjian/7092.html