面试可能会被问计算机网络方面知识
由于后天就要面试了,自己也考试收罗大量的面试经验,避免到时答非所问,故此收集相关模块的只是,写到博客便于查看。
关于三次握手与四次挥手这个感觉讲的不错,或网络通信原理书籍225页,一幕一样。
http://www.cnblogs.com/xuhj001/p/3409104.html
经过刚刚的看书,觉得书上的讲的更加的生动,更加的明白,
三次握手个人感悟:首先客户端发送SYN=1(建立连接),发送序列号小写seq=x; 完成一次。
服务端收到后发出SYN=1,大写ACK=1(确认),ack=x+1(确认码);服务端的seq=y;(序列号),第二次。
客户端接受到后表示连接建立成功,后发送ACK=1(确认),seq=x+1(序列号);ack=y+1(确认码);第三次。
总的来说是确认码(ack=接收到的seq+1);之后即可传输数据了。
四次挥手(释放连接):
客户端(主动关闭)发送:FIN=1(数据传输结束),seq=u; 第一次。
服务端接收到发送:ACK=1,seq=v,ack=u+1; 第二次。
数据传输
服务端发送: FIN=1;ACK=1;seq=w,ack=u+1;第三次
客户端接收到后发送:ACK=1;seq=u+1;ack=w+1;第四次
紧接着,客户端等待2Msl,服务端被应用程序关闭,紧接着客户端关闭连接。
ack确认码作用在于确认接收方是否接受到,如果正确接受则其发送方的下一个序列号(上一次发送seq+1)与ack相同。
其次须得注意IO的阻塞问题。