Web浏览器向Web服务器发送请求命令,其中包含:
【可信身份认证系统 可信网站验证】Web服务器向Web浏览器发送响应数据,包括:
然后Web服务器关闭连接 。
这些是基本的http请求 。在这个过程中,http建立连接,Tcp经过三次握手 。先说三次握手的具体过程 。首先,我们来看一张图:
1:客户端向服务器发送一个带有SYN的Tcp消息,这是三次握手的开始 。表示客户端希望与服务器建立连接 。2:服务器收到客户端的请求,返回客户端的消息,用SYN和ACK标记,询问客户端是否准备好了 。3:客户端再次用ACK响应服务器,表示我准备好了 。
那么为什么要三次握手呢?有人说握两次手就好 。的确,为什么?这个可以从电脑网络来回答 。举一个例子:无效的连接请求消息段 。客户端发送了第一个连接请求消息 。但是由于网络不好,这个请求并没有马上到达服务器,而是停留在一个网络节点,直到一定时间才到达服务器 。本来,这已经是一条无效消息了 。但是,在收到这个请求消息后,服务器仍然会向客户机发送一个确认消息,表明它同意连接 。如果不使用三次握手,只要服务器发送确认,新的连接就会被连接 , 但实际上这个请求是无效的 。客户端会忽略服务器的确认信息,不会向服务器发送确认请求 。但是,服务器认为新的连接已经建立,并一直在等待客户端发送的数据 。这样服务器的很多资源都没有浪费 。三次握手用于防止这种情况发生 。服务器将知道客户端没有建立连接,因为它无法接收确认消息 。这就是三次握手的作用 。
当协议终止时,tcp进行了四次握手 。这四次握手是怎么回事?
因为Tcp连接以全双工方式工作,所以每个方向都必须单独关闭 。这个原理是,当一方完成发送其数据时,它发送一个FIN来终止这个方向的连接 。收到这个FIN意味着这个方向没有数据流,TCP连接收到这个FIN后可以发送消息 。执行关闭的第一方将主动关闭,而另一方将被动关闭 。1: TCP发送FIN关闭客户端和服务器之间的连接 。2:当服务器收到这个FIN时,发回一个ack,确认收到的序列号是收到的序列号+1 。像SYN一样,一个鳍会占用一个序列号 。3:服务器向客户端发送FIN,服务器关闭客户端的连接 。4:客户端发送ACK消息进行确认,确认的序列号为+1,关闭完成 。
那么为什么要挥手四次呢?可能有人会奇怪,为什么我和tcp握手的时候ACK和SYN是一起发的?为什么挥手就分开发?原因是TCP的全双工模式 。接收FIN表示没有发送数据,但是可以继续发送数据 。
3次握手过程的状态:listener:这个很好理解,就是服务器的一个套接字处于监听状态,可以接收连接 。
Syn _ SEND state执行connect时,先发送SYN消息 , 所以也进入Syn_send状态,等待服务器发送的消息 。syn_send表示客户端已经发送了syn消息 。Syn_rcvd:这个状态类似于Syn_SEND状态,表示已经收到SYN消息 。这个状态是建立tcp连接的三次握手中服务器端套接字的一个中间状态,非常短暂 。当客户端收到ACK消息时 , 表示连接已建立,并进入建立状态 。
4波的状态:FIN_WAIT_1:这个状态需要好好解释一下 。其实FIN_WAIT_1和FIN_WAIT_2状态的真正意义是在等待对方的FIN消息 。这两种状态的区别在于,FIN_WAIT_1状态实际上是指当SOCKET处于建立状态时,想要主动关闭连接 , 并向对方发送FIN消息 。此时,套接字进入FIN_WAIT_1状态 。当对方响应ACK消息时,进入FIN_WAIT_2状态 。当然,在实际正常情况下,对方应该会立即响应ACK消息,所以FIN_WAIT_1状态一般很难看到,而FIN_WAIT_2状态往往可以被netstat看到 。(主动方)
FIN_WAIT_2:这个状态已经在上面详细解释过了 。其实FIN_WAIT_2状态的SOCKET就是半连接的意思,也就是一方要求关闭连接,但也告诉对方我暂时还有一些数据要传输给你(ACK信息),以后再关闭连接 。(主动方)
TIME_WAIT:表示已经收到对方的FIN消息,ACK消息已经发送,2MSL后可以返回关闭可用状态 。如果处于f in_WAIT_1状态,当收到对方同时带有FIN标志和ACK标志的报文时 , 可以不经过FIN_WAIT_2状态直接进入TIME_WAIT状态 。(主动方)
关闭(比较少见):这种状态比较特殊,实际情况下应该很少见,所以属于比较少见的例外状态 。一般情况下,当你发送FIN报文时,先收到(或同时收到)对方的ACK报文,再收到对方的FIN报文是合理的 。但是关闭状态表示你发送FIN报文后,没有收到对方的ACK报文,但是你也收到了对方的FIN报文 。什么情况下会出现这种情况?其实仔细想想,不难得出一个结论:如果双方几乎同时关闭一个SOCKET,那么就会出现双方同时发送FIN消息的情况,即会出现关闭状态,表示双方都在关闭SOCKET连接 。
推荐阅读
- 怎么自查眼睛近视度数 怎么测视力
- 丰乐亭记表达的思想 丰乐亭记表达了作者怎样的思想
- 刺客信条奥德赛火箭怎么放 刺客信条奥德赛火箭释放介绍
- 买房不建议买这5个楼层 怎么选楼层
- 自然晒干的杏干可以保存多久 晒好的杏干怎样保存
- 微信朋友圈相册封面怎么换成视频
- 司马昭之心歇后语 司马昭之心歇后语下一句
- 梦见自己跟人打架出血 梦见自己跟人打架
- 周公解梦梦到升职是什么意思呀 周公解梦梦到升职是什么意思