关闭

Chp6 TCP连接中的三次握手四次挥手协议

标签: tcp网络协议服务器计算机
216人阅读 评论(0) 收藏 举报
分类:

    此文的内容包括:

    ·HTTP是什么

    ·三次握手协议

    ·四次挥手协议



    1.HTTP是什么
    HTTP是超文本传输协议(HyperText Transfer Protocol),是一种面向事物的应用层协议
,它定义了浏览器怎么向服务器请求资源,以及服务器怎么把资源传输给浏览器。HTTP协议是无连接的,通信的双方在交换HTTP报文时不需要先建立HTTP连接;HTTP协议是无状态的,同一个客户第二次访问同一服务器上的页面时,服务器的响应与第一次相同。

    2.三次握手协议
    在发送数据的准备阶段,客户端和服务器端需要进行三次交互来建立TCP连接,成功后客户端和服务器之间才开始进行数据传输。
    ·其中每一次交互可以形象地比喻成一次握手:

    第一次握手:客户端发送SYN包(syn=j)给服务器,之后进入SYN_SEND状态,等待服务器确认;
    第二次握手:服务器收到客户端的SYN包,确认客户的SYN包(ack=j+1),自己也发送一个SYN包(syn=k),即SYN+ACK包给客户端,之后服务器进入SYN_RECV状态,等待客户端确认;
    第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK包(ack=k+1),此包发送成功后,客户端和服务器都进入ESTABLISHED状态,完成三次握手,TCP连接建立成功。
    ·一些重要的概念:
    未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于SYN_RECV状态,当服务器收到客户端的确认包时,删除该条目,服务器进入ESTABLISHED状态。
    SYN-ACK重传次数:服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户端确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除(每次重传等待的时间不一定相同)。
    半连接存活时间:是指半连接队列的条目存活的最长时间,即服务器从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和,也称半连接存活时间为TIMEOUT时间、SYN_RECV存活时间。

    3.四次挥手协议
    也叫连接终止协议,终止一个TCP连接要经过四次挥手,这是因为TCP连接是全双工模式,所以要终止连接时,每个方向都必须单独进行关闭。
    ·TCP连接的终止:

    第一次挥手:当某一端数据发送完毕时,这端首先调用CLOSE,发送一个FIN分节来终止这个方向的连接,执行“主动关闭”;
    第二次挥手:接收到这个FIN的对端,发回一个ACK包(确认序号为收到的序号加1),来终止这个方向的连接,执行“被动关闭”;
    第三次挥手:一段时间后接收到这个文件结束符的端在自己的数据传送完毕后,将调用CLOSE关闭它的套接字,向请求终止连接的那一端也发送一个FIN;
    第四次挥手:接收这个最终FIN的原发送端(即执行主动关闭的那一端)发回ACK包(确认序号为收到的序号加1)确认,表示已经收到这个FIN,连接终止。
    ·注意:收到一个FIN只意味着这一方向上没有数据流动,一个服务器在收到一个FIN后仍能向客户端发送数据;和SYN一样,一个FIN将占用一个序号,既然每个方向都需要一个FIN或一个ACK,因此通常需要4个分节;FIN的接收也作为一个文件结束符传递给接收端应用进程,放在已排队等候该应用进程接收的任何其他数据之后,因为FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1676次
    • 积分:130
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条