彩票网站建设维护,汽车4s店网站模板,杨浦做网站公司,网站上的图片带店面是怎么做的http://blog.csdn.net/li0978/article/details/52598121 前言 昨天晚上被一位师傅问到了TCP/IP的工作机制#xff0c;心里很清楚三次握手#xff0c;然而对于四次挥手却忘了#xff0c;这是大学习里学过的#xff0c;奋而翻阅书籍和网络对之前所学的做一个温顾#xff0c;… http://blog.csdn.net/li0978/article/details/52598121 前言 昨天晚上被一位师傅问到了TCP/IP的工作机制心里很清楚三次握手然而对于四次挥手却忘了这是大学习里学过的奋而翻阅书籍和网络对之前所学的做一个温顾算是夯实自我吧。 TCP(Transmission Control Protocol)网络传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议数据传输前建立连接的工作要经过三次握手数据传输后断开连接的工作要经过四次挥手。 工作过程 TCP标志位 TCP共有6个标志位分别是
SYN(synchronous),建立联机。ACK(acknowledgement),确认。PSH(push),传输。FIN(finish),结束。RST(reset),重置。URG(urgent),紧急。 图解三次握手和四次挥手的过程 三次握手建立连接阐述 第一次握手客户端要和服务端进行通信首先要告知服务端一声遂发出一个SYN1的连接请求信号,”服务端哥哥我想给你说说话”。 第二次握手当服务端接收到客户端的连接请求此时要给客户端一个确认信息”我知道了ACK,我这边已经准备好了你现在能连吗SYN”。 第三次握手当客户端收到了服务端的确认连接信息后要礼貌的告知一下服务端“好的咱们开始联通吧ACK”。 到此整个建立连接的过程已经结束接下来就是双方你一句我一句甚至同时交流传递信息的过程了。 四次挥手断开连接阐述 第一次挥手双方交流的差不多了此时客户端也已经结尾了接下来要断开通信连接所以告诉服务端“我说完了FIN”此时自身形成等待结束连接的状态。 第二次挥手服务端知道客户端已经没话说了服务端此时还有两句心里话要给客户端说“我知道你说完了ACK我再给你说两句*……%”。 第三次挥手此时客户端洗耳恭听继续处于等待结束的状态服务器端也说完了自身此时处于等待关闭连接的状态并对告诉客户端“我说完了咱们断了吧FIN”。 第四次挥手客户端收知道服务端也说完了也要告诉服务端一声ACK因为连接和断开要双方都按下关闭操作才能断开客户端同时又为自己定义一个定时器因为不知道刚才说的这句话能不能准确到达服务端网络不稳定或者其他因素引起的网络原因默认时间定为两个通信的最大时间之和超出这个时间就默认服务器端已经接收到了自己的确认信息此时客户端就关闭自身连接服务器端一旦接收到客户端发来的确定通知就立刻关闭服务器端的连接。 到此为止双方整个通信过程就此终结。这里要声明一下断开链接不一定就是客户端谁都可以先发起断开指令另外客户端和服务端是没有固定标准的谁先发起请求谁就是客户端。 问题 1.为什么断开链接的时候客户端设置的定时器时间等待要2MSL(两个通信报文的最大时间) 这个问题也很好理解当客户端最终告诉服务器端断开确认的时候他不知道自己的发出的指令是否能准确的一次性被服务器接收。假如服务器没有接收到这已经耗费了一个报文的最大通信时间了服务器端将会重新发起一个结束通话的指令FIN到客户端客户端又接收到了服务器发来的结束通信指令将继续给服务器进行一个确认有人会说那要是客户端发出的确认信息服务端没收到而服务端重发的断开指令客户端也没收到怎么办说实话我也无奈遇到这种情况咱们干脆认为网确实不行了。 2.为什么建立连接要三次握手而断开连接要四次挥手? 说起这个打一个比喻目前祖国正在高速发展高铁建立连接的过程正如上海到北京打通一条高铁线TCP通信过程是一个全双工模式即在这条高铁线上要有两个轨道即能从上海发车到北京又能从北京发车到上海甚至两边可以同时发车。所以断开连接前提就是要保证两条轨道都没有车然后双方才能各自发起断开动作。 双方各自工作流程图 客户端工作流程 注意在TIME_WAIT状态中如果TCP client端最后一次发送的ACK丢失了它将重新发送。TIME_WAIT状态中所需要的时间是依赖于实现方法的。典型的值为30秒、1分钟和2分钟。等待之后连接正式关闭并且所有的资源(包括端口号)都被释放。 服务器端工作流程 附加 SYN网络攻击 原理 在三次握手过程中Server发送SYN-ACK之后收到Client的ACK之前的TCP连接称为半连接half-open connect此时Server处于SYN_RCVD状态当收到ACK后Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址并向Server不断地发送SYN包Server回复确认包并等待Client的确认由于源地址是不存在的因此Server需要不断重发直至超时这些伪造的SYN包将产时间占用未连接队列导致正常的SYN请求因为队列满而被丢弃从而引起网络堵塞甚至系统瘫痪。 检测 SYN攻击时一种典型的DDOS攻击检测SYN攻击的方式非常简单即当Server上有大量半连接状态且源IP地址是随机的则可以断定遭到SYN攻击了。windows下打开cmd,输入命令”netstat -n -p TCP“查看是否有大量的”SYN_RECEIVED“状态。 以下图片是表明正常的。