总结:三次握手和四次挥手是TCP/IP协议中建立和终止连接的过程。
** 三次握手(Three-way Handshake)**:
- 第一次握手:客户端向服务器发送一个连接请求报文段(SYN),并指明客户端的初始序列号(Seq=X)。
- 第二次握手:服务器收到客户端的连接请求报文段后,如果同意连接,则会发送一个确认报文段(SYN+ACK)作为应答,同时也会指定自己的初始序列号(Seq=Y),并且在报文段中还会包含确认序号(Ack=X+1)。
- 第三次握手:客户端收到服务器的确认报文段后,还要向服务器发送一个确认报文段(ACK),并且在报文段中也包含一个确认序号(Ack=Y+1),表示收到了服务器的确认。当服务器收到这个确认报文段后,连接就建立了。
四次挥手(Four-way Handshake):
- 第一次挥手:客户端向服务器发送一个连接释放请求报文段(FIN),并且停止发送数据,但是仍然可以接收数据。
- 第二次挥手:服务器收到客户端的连接释放请求报文段后,会向客户端发送一个确认报文段(ACK),表示已经收到了客户端的连接释放请求。
- 第三次挥手:服务器关闭与客户端的连接,向客户端发送一个连接释放请求报文段(FIN),并且停止发送数据,但是仍然可以接收数据。
- 第四次挥手:客户端收到服务器的连接释放请求报文段后,会向服务器发送一个确认报文段(ACK),表示已经收到了服务器的连接释放请求。当服务器收到这个确认报文段后,连接就终止了。
通过这样的三次握手和四次挥手过程,TCP连接的建立和终止都可以得到有效地完成,保证了数据的可靠传输。
tcp连接通信细节,故事版本
故事:小明和小红的通信之旅
小明和小红住在不同的城市,但是他们想要通过书信互相沟通。他们决定使用一种特殊的传输方式来确保他们的信件能够准确地传递并保证通信的可靠性。
好的,让我们通过一个故事来描述三次握手和四次挥手的过程:
三次握手(Three-way Handshake):
故事背景:小明想要和小红通过电话建立通话连接。
- 第一次握手:小明拨打了小红的电话号码,并且说:“喂,小红,我是小明,我想和你通话!”(SYN)。
- 第二次握手:小红收到了小明的电话,想了一会儿后说:“嗯,小明,我也想和你通话!”。于是,她拿起电话回复:“好的,小明,我们开始通话吧!”(SYN+ACK)。
- 第三次握手:小明收到了小红的回复,于是说:“好的,小红,我收到了你的消息,我们开始通话吧!”(ACK)。通话连接建立成功,他们可以开始交流了。
四次挥手(Four-way Handshake):
故事背景:小明和小红通话结束,准备挂断电话。
- 第一次挥手:小明说:“小红,我和你说完了,我要挂断电话了。”(FIN)。
- 第二次挥手:小红收到了小明的消息后,表示理解并且说:“好的,小明,我也说完了,我也要挂断电话了。”(ACK)。
- 第三次挥手:小红挂断了电话,但仍然在听着电话。她说:“好的,小明,我已经挂断了,再见!”(FIN)。
- 第四次挥手:小明收到了小红的消息后,表示理解并且说:“好的,小红,我也挂断了,再见!”(ACK)。电话连接完全关闭,他们结束了通话。
通过这个故事,我们可以更加形象地理解三次握手和四次挥手的过程,这就像是两个人建立和结束一次通话的场景一样。
TCP和UDP的特性
TCP和UDP
TCP协议:传输控制协议
1.使用TCP协议前,须先建立TCP连接,形成传输数据通道
2.传输前,采用"三次握手"方式,是可靠的
3.TCP协议进行通信的两个应用进程:客户端、服务端
4.在连接中可进行大数据量的传输
5.传输完毕,需释放已建立的连接,效率低
(如果不释放连接,别人也用不了)
UDP协议:用户数据协议
1.将数据、源、目的封装成数据包,不需要建立连接
2.每个数据报的大小限制在64K内,不适合传输大量数据
3.因无需连接,故是不可靠的
4.发送数据结束时无需释放资源(因为不是面向连接的),速度快
5.举例:通知,发短信