TCP
个人理解:TCP是面向连接的、安全的,而HTTP是无连接、无状态的
TCP为什么要三次握手?两次不行吗?两次就容易出问题,如果服务器收到客户端的连接请求,然后发出了确认,但此时第一个确认消息发出去以后,在途中延迟了,服务器认为数据丢失了,发出第二个确认消息,当第二个消息先到达时,如果是两次握手,那么连接建立了,此时那个延迟的确认消息到达后,会让刚刚已经建立的连接关闭,导致数据丢失,这样就很不安全了。如果有了三次握手,第三次握手的时候,即使收到了延迟的确认消息,由于已经发送过了确认消息,将不会再次发送确认了,因此不会出现上面的问题。http://www.cnblogs.com/wulala1119/p/4749892.html
TCP为什么要四次挥手?四次挥手就是为了确保客户端和服务端的消息发送和接收都完成了,第一次客户端发送消息要终止连接,然后客户端不发送消息,处于半关闭状态;第第二次,服务端收到消息后,发送确认消息,然后将正在发送的消息发送完;第三次,服务端将消息发送完之后,向客户端发送一条关闭连接的消息,表明自己所有 的消息都发送完毕了。第四次,客户端收到服务端的关闭连接消息后,向服务端发送一条确认消息,服务端收到确认消息后就关闭连接,此时是为了确认客户端收到了自己发送的所有消息。最后客户端等待2msl,是为了确保服务端收到了自己发的确认消息,如果没有收到服务端会发送超时重传消息过来,让客户端再次发送确认消息;如果服务端收不到确认消息,一直处于最后确认阶段,造成资源浪费。