计算机网络体系结构
1:OSI参考模型与TCP/IP参考模型
2:三次握手与四次挥手
图不好画,网上找了一张。
9.23更新,发现了一张更全的图
三次握手
1:发起方只能是客户端
2:发送的标志:ACK
3:第一次握手,客户端向服务器发送SYN包(带有SYN标记,seq=x),此时客户端进入SYN_SEND状态,等待服务端的接收;
第二次握手,服务器接收到了这个数据包,并且发送一个ACK包(ack=x+1)+接收的SYN包(seq=y)给客户端,告知客户端,包我已经收到啦,此时服务端进入SYN_RECEV状态;
第三次握手,客户端收到了服务端发来的确认的包之后,回传一个标记ACK的确认包(ack=y+1),之后服务器与客户端都进入了ESTABLISHED状态。
4:三次挥手之后,客户端与服务器建立了连接,可以进行通信。
四次挥手
1:发起方可以是客户端或者是服务器
2:发送的标志:FIN
3:
第一次挥手,发起端发送FIN包(带有FIN标记,seq=z,ACK=y),意思就是我不给你发消息了,等待接收端发送确认包,并且发送了这个包之后,发起方就不会再发送包了(当然,在这个之前发送的包,没收到确认包的情况,还是会继续重发包的)
第二次挥手,接收方收到包之后,发送一个确认包,(ACK=z+1),表示,我收到你的包啦,等我准备一下。然后接收方开始进行关闭的处理操作。
第三次挥手,接收方发送包,(带有FIN标记,且seq=y),告知发送端,我这边操作已经处理完了,我的数据发送完了,不会再给你发送数据了,可以关闭了。
第四次挥手,发送端发送确认包,告知接收端,我已经收到你的包了,然后发送端也关闭连接。
至此,连接通道断开,连接关闭。
4:在第二次挥手之后第三次挥手之前,接收方可能会继续发送数据包,进行还没有处理完的数据的传送。
5:第四次挥手的意义是,发起端接收到了接收方发送的关闭包,告知已经关闭了,但是不相信网络,所以再发送一次确认包,等待几秒,发现接收方确实没有返回确认包,那么接收方是真的关闭了,所以此时,发起方就很安稳的自己关闭了。
四次挥手比三次握手多一次:
三次握手中,第二次是服务器直接把确认信息和数据包分在一次里面进行发送(ACK+Seq);
而四次挥手,接收方收到发起方的请求关闭的要求后,可能手上有部分数据未完成传输,那么就得分两次发送,先发送一个ACK包,表示,我收到你的请求了,但是等我处理一下手上的东西,处理完后,再发送FIN包,告知我处理完了,我关闭了。
图的引用地址:https://blog.csdn.net/whuslei/article/details/6667471
https://baijiahao.baidu.com/s?id=1618114723935605183&wfr=spider&for=pc