服务器编程和客户端编程的大致流程如下:
三次握手是在客户端中的connect中完成的,具体如下:
那么上述说到的SYN ACK这些是什么东西呢?
上述的截图取自《Linux高性能服务器编程》电子版的截图!+
根据书中所提到的在客户端对服务器端connect的时候,由客户端对服务器端发出一个SYN的请求连接的报文,值为i是32位序列号,然后服务器收到客户端SYN之后,会反馈给客户端一个自身服务器端的SYN报文和确认号报文ACK,其中ACK的值为客户端和服务器端的SYN序列号+1,客户端收到服务器端SYN和ACK之后,客户端会给服务器端反馈一个确认号ACK 该ACK的值为服务器端的SYN序列号+1,然后三次握手就完成了!!!
下面来看四次挥手!!!!!!
三次握手就是客户端和服务器连接过程,而四次挥手就是客户端和服务器端断开连接的过程。
上图的过程可以这样理解:
客户端给服务器端发送FIN结束报文,相当于客户端通知服务器端,我要关闭了,然后服务器回复一个确认报文ACK,这时候客户端已经关闭,进程结束了,但是链接系统没释放会维持一段时间,像端口,地址,等信息还在,客户端的这种状态会维持一段固定时间用来四次挥手中的第四次中给服务器端回复ACK确认报文。这段维持时间之内要是没有收到服务器端的FIN的话,客户端这个进程就彻底释放了,那么就自然断开连接了(相当于打电话期间手机关机了,那么通话自然就断开了)!!!
上述就是我对三次握手和四次挥手的理解,大家有什么不同的想法,可以来评论区交流!