首页 > 其他 > 详细

计算机网络

时间:2019-05-15 18:10:52      阅读:125      评论:0      收藏:0      [点我收藏+]

先了解下我们常说的TCP。

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。在因特网协议族中,TCP层是位于IP层之上,应用层之下的中间层。

 

TCP的三次握手和四次挥手?

TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接,与之相反的,采用四次挥手来断开连接。

TCP标志位有6种标志,即:SYN(建立联机)、ACK(确认)、PSH(传送)、FIN(结束)、RST(重置)、URG(紧急)。

三次握手步骤:

1、客户端采用TCP协议将带有SYN标志的数据包发送给服务器,等待服务器确认;

2、服务器端在收到SYN的数据包后,必须确认SYN,即发送ACK标志,同时,自己也将会向客户端发送一个SYN标志;

3、客户端在接收到服务器端的SYN+ACK包后,自己会向服务器发送ACK包,完成三次握手。那么客户端和服务器正式建立了连接,开始传输数据。

三次握手图如下:

技术分享图片

 

四次挥手:

四次挥手是用来断开服务器和客户端之间通信的,之所以要断开连接,是因为TCP/IP协议是要占用端口号的,而计算机的端口是有限的,不进行断开的话,势必会造成计算机资源的浪费。

1、在整个通信的过程中,谁先发起请求,谁就是客户端;

当客户端的数据传输到尾部时,客户端向服务器发送带有FIN标志的数据包,使其明白自己准备断开通信了。

2、因为TCP的通信是使用全双工通信的WebSocket,所以在断开连接的时候也应该是双向的;当服务器收到带有FIN标志的数据包时,不会直接发送FIN标志断开通信的请求,而是先发送一个带有ACK标志的应答信息,使客户端明白服务器还有数据要进行发送。

3、当服务器的数据发送完成后,向客户端发送带有FIN标志的数据包,通知客户端断开连接。

4、当客户端收到FIN后,担心网络上某些不可控的因素导致服务器不知道他要断开连接,会发送ACK进行确认,同时把自己设置成TIME_WAIT状态并启动定时器,如果在TCP的定时器到达后客户端并没有接收到请求,会重新发送;当服务器收到请求后就断开连接;当客户端等待2MLS(报文最大生存时间2倍)还没有收到请求重传的请求,客户端这边就断开连接,整个TCP通信就结束了。

四次挥手图如下:

技术分享图片

 

三次握手为什么不能改成两次握手?

三次握手中的每一次都是必须的。如果是两次握手,在第二次结束后,服务器并不能保证客户端已经收到了第二次的请求,如此一来的话,服务器会一直保存着这个通信进程,因为TCP通信都是占用端口的,造成了一定资源的浪费,所以,就一定要让客户端发送ACK的确认请求。

关闭的时候为什么会是四次挥手?

四次挥手不能像三次握手一样,三次握手可以将SYN+ACK一起发送,ACK用于确认信息,SYN却是用来建立联机的;四次挥手中ACK不能和FIN一起发送,ACK只是告诉客户端确认收到了,等我将数据发送完毕之后会向其发送FIN的标志,所以四次挥手是不能改变的。

 

计算机网络

原文:https://www.cnblogs.com/Rain1203/p/10863650.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!