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

原创 2016年05月30日 10:00:25

    此文的内容包括:

    ·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的接收意味着接收端应用进程在相应连接上再无额外数据可接收。
版权声明:本文为博主原创文章,未经博主允许不得转载。

网络编程之TCP协议为啥是三次握手和四次挥手?

在学习TCP协议的时候,总是在强调三次握手,那么为什么是三次?而不是两次或者四次?(强迫症表示黑人问号????) 今天我们就来分析一下为什么是三次,下图是一次TCP通讯的时序 在这个例子中...
  • qq_29695087
  • qq_29695087
  • 2016年08月06日 20:54
  • 1086

TCP协议的三次握手和四次挥手以及断开时各阶段的状态分析

我们知道,https协议是在http协议之上封装了SSL协议,为了完成客户端和服务端的双向认证和可靠传输,需要在通信之前双方进行多次的握手协商。TCP协议与https协议类似。 1.TCP的连接(俗称...
  • sszgg2006
  • sszgg2006
  • 2017年02月20日 16:26
  • 984

TCP/IP协议 三次握手与四次挥手

一、TCP报文格式         TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图: 图1 TCP报文格式         上图中有几个字段需要重点介绍下: ...
  • renzhenhuai
  • renzhenhuai
  • 2013年09月27日 17:39
  • 25071

tcp三次握手四次挥手(及原因)详解

TCP(Transmission Control Protocol,传输控制协议)是 面向连接的协议,也就是说在收发数据之前,必须先和对方建立连接, 一个TCP连接必须要经过三次“对话”才能建立起来,...
  • xulu_258
  • xulu_258
  • 2016年04月13日 21:02
  • 8227

计算机网络——TCP协议中的三次握手四次挥手以及11种状态转换

TCP的传输连接分为3个阶段:连接建立(三次握手)、数据传送和连接释放(四次挥手)。TCP传输连接的管理就是使传输连接的建立和释放都能正常地进行。...
  • a987073381
  • a987073381
  • 2016年08月14日 20:37
  • 11441

TCP协议中为什么三次握手,四次挥手(详解)!!!

建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示: 先来看看如何建立连接的。 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为...
  • msdnwolaile
  • msdnwolaile
  • 2016年03月18日 15:18
  • 2010

TCP三次握手四次挥手过程详解

TCP头部: 其中 ACK   SYN  序号  这三个部分在以下会用到,它们的介绍也在下面。 暂时需要的信息有: ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的...
  • imilli
  • imilli
  • 2016年02月01日 18:38
  • 2757

TCP协议的学习(四)TCP四次挥手及解释

发起断开连接请求可以是客户端也可以是服务器,即主机1,主机2可以是客户端也可以是服务器。 为什么四次挥手 TIME_WAIT 2MSL close shutdown...
  • qq_34501940
  • qq_34501940
  • 2016年04月11日 11:23
  • 4028

TCP协议中的三次握手和四次挥手(socket状态图扭转)

TCP协议中的三次握手和四次挥手
  • chenlycly
  • chenlycly
  • 2016年06月13日 13:50
  • 1901

Tcp为什么要三次握手四次挥手

client:黄河,server:长江 第一次:长江长江,我是黄河,听到请回答? 第二次:黄河黄河,我是长江,我听到你了,你能听到我吗? 第三次:长江长江,俺是黄河,我也能听到你,我要开始吐了。 其...
  • alan00000
  • alan00000
  • 2016年06月06日 14:47
  • 578
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Chp6 TCP连接中的三次握手四次挥手协议
举报原因:
原因补充:

(最多只允许输入30个字)