谈谈TCP的四次挥手】的更多相关文章

“挥手”是为了终止连接,TCP四次挥手的流程图如下: (在socket编程中,可以由客户端或服务端进行close操作来进行) 下面的图是由客户端主动关闭连接 MSL是什么?最长报文段寿命 ------> if793 定义了MSL是2分钟 linux 的MSL 是30s 问题:为什么TIME-WAIT会有这个状态呢?为什么不直接FIN-WAIT-2之后马上就closed呢? ----->1.确保有足够的时间让对方收到ACK包(如果被动端没有收到ACK的话,就会触发重发FIN包,一来一去正好2个M…
tcp四次挥手,由于TCP连接是全双工的,因此每个方向都必须单独进行关闭. 由于TCP连接是全双工的,因此每个方向都必须单独进行关闭.这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接.收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据.首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭. (1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4). (2)服务器B收到这个FIN,它发回一个ACK,确认序号…
四次分手: 由于TCP连接是全双工的,因此每个方向都必须单独进行关闭.这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接.收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据.首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭. (1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4). (2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5).和SYN一样,一个FIN将占用一个…
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭.这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接.收到一个 FIN只意味着这一方向上没有数据流动, 一个TCP连接在收到一个FIN后仍能发送数据.首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭. (1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4). (2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5).和SYN一样,一个FIN将占用一个序号. (…
TIME_WAIT状态存在有两个原因.<1>可靠终止TCP连接.如果最后一个ACK报文因为网络原因被丢弃,此时server因为没有收到ACK而超时重传FIN报文,处于TIME_WAIT状态的client可以继续对FIN报文做回复,向server发送ACK报文.<2>保证让迟来的TCP报文段有足够的时间被识别和丢弃.连接结束了,网络中的延迟报文也应该被丢弃掉,以免影响立刻建立的新连接.    …
参照: http://course.ccniit.com/CSTD/Linux/reference/files/018.PDF http://hi.baidu.com/raycomer/item/944d23d9b502d13be3108f61 建立连接: 理解:窗口和滑动窗口TCP的流量控制 TCP使用窗口机制进行流量控制 什么是窗口? 连接建立时,各端分配一块缓冲区用来存储接收的数据,并将缓冲区的尺寸发送给另一端 接收方发送的确认信息中包含了自己剩余的缓冲区尺寸 剩余缓冲区空间的数量叫做窗口…
TCP包结构 一个TCP包结构如下: 一个TCP包主要由TCP包头和数据部分组成,包头固定部分为20字节,选项和数据部分根据实际情况设置为4N(N可以为0)字节. 1.16bit源端口和目的端口号,它可以确认数据的传输方向(暂不考虑更底层的包) 2.32bit序号,它是为TCP包中数据部分进行编号的部分.假设要发送的数据有100M,由于受MSS( Maximum Segment Size 最大报文段长度)限制,一个TCP包是不可能传输完这100M的数据,于是需要将数据拆分,为了确保拆分传输后的数…
转载 http://www.cnblogs.com/zmlctt/p/3690998.html 相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助. 而且对于有网络协议工程师之类笔试,几乎是必考的内容.企业对这个问题热情之高,出乎我的意料:-).有时上午面试前强调这个问题,并重复讲一次,下午几乎每一个人都被问到这个问题. 因此在这里详细解释一下这两个过程. TCP三次握手 所谓三次握手…
1.TCP常见的定时器 在TCP协议中有的时候需要定期或者按照某个算法对某个事件进行触发,那么这个时候,TCP协议是使用定时器进行实现的.在TCP中,会有七种定时器: 建立连接定时器(connection-establishment timer) 重传定时器(retransmission timer) 延迟应答定时器(delayed ACK timer) 坚持定时器(persist timer) 保活定时器(keepalive timer) FIN_WAIT_2定时器(FIN_WAIT_2 ti…
TCP三次握手和四次挥手 首先我们知道HTTP协议通常承载于TCP协议之上,HTTPS承载于TLS或SSL协议层之上 通过上面这张图我们能够知道.     在Http工作之前,Web浏览器通过网络和Web服务器建立链连接,该连接是通过Tcp来完成的,该协议和Ip共同组成了Internet,即著名的Tcp/Ip协议族,.     TCP 被称为"面向连接"的传输层协议.关于它的具体细节,就不展开了.你只需知道:传输层主要有两个协议,分别是 TCP 和 UDP.TCP 比 UDP 更可靠.…
三次握手四次挥手的原理   TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接.在TCP/IP协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的.三次握手的目的是同步连接双方的序列号和确认号 并交换 TCP窗口大小信息. 1.第一次握手:建立连接.客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认; 2.第二次握手:服务器收到SYN报文段.服务器收到客户端的SY…
序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生:给字节编上序号后,就给每一个报文段指派一个序号:序列号seq就是这个报文段中的第一个字节的数据编号. 确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号:序列号表示报文段携带数据的第一个字节的编号:而确认号指的是期望接收到下一个字节的编号:因此当前报文段最后一个字节的编号+1即为确认号. 确认ACK:占1位,仅当ACK=1时,确认号字段才有效.AC…
1.TCP常见的定时器 在TCP协议中有的时候需要定期或者按照某个算法对某个事件进行触发,那么这个时候,TCP协议是使用定时器进行实现的.在TCP中,会有七种定时器: 建立连接定时器(connection-establishment timer) 重传定时器(retransmission timer) 延迟应答定时器(delayed ACK timer) 坚持定时器(persist timer) 保活定时器(keepalive timer) FIN_WAIT_2定时器(FIN_WAIT_2 ti…
TCP三次握手和四次挥手的全过程   TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种表示: SYN(synchronous建立连接) ACK(acknowledgement 表示响应.确认) PSH(push表示有DATA数据传输) FIN(finish关闭连接) RST(reset表示连接重置) URG(urgent紧急指针字段值有效) 三次握手:   第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEN…
tcp三次握手: TCP是因特网中的传输层协议,使用三次握手协议建立连接.当主动方发出SYN连接请求后,等待对方回答SYN+ACK[1],并最终对对方的 SYN 执行 ACK 确认.这种建立连接的方法可以防止产生错误的连接.[1] TCP三次握手的过程如下: 客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态. 服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态. 客户端收到服务器端的SYN报文,回应一个ACK(ACK…
TCP 三次握手 TCP 连接是通过三次握手进行初始化的.三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程: 1. 客户端向服务器发送一个SYN置位的TCP报文,其中包含连接的初始序列号x和一个窗口大小(表示客户端上用来存储从服务器发送来的传入段的缓冲区的大小). 2. 服务器收到客户端发送过来的SYN报文后,向客户端发送一个SYN和ACK都置位的TCP报文,其中包含它选择的初始序列号y.对客户端的序列号的确认x…
相对应socket开发者,TCP创建过程和连接拆除过程是由TCP/IP协议栈自动创建的,因此开发者并不需要控制这个过程,但是对于理解TCP底层运作机制,相当有帮助 TCP三次握手 所谓三次握手,是指建立一个TCP连接时,需要客户端和服务器总共发送三个包 三次握手的目的是连接服务器指定的端口,建立TCP连接,并同步连接双方的序列号和确认号并交换TCP窗口大小的信息,在socket编程中,客户端执行connect()时,将触发三次握手 第一次握手: 客户端发送一个TCP的SYN标志位置1的包指明客户…
转自:(http://www.cnblogs.com/Jessy/p/3535612.html) 参照: http://course.ccniit.com/CSTD/Linux/reference/files/018.PDF http://hi.baidu.com/raycomer/item/944d23d9b502d13be3108f61 建立连接: 理解:窗口和滑动窗口TCP的流量控制 TCP使用窗口机制进行流量控制 什么是窗口? 连接建立时,各端分配一块缓冲区用来存储接收的数据,并将缓冲区…
TCP三次握手和四次挥手 首先我们知道HTTP协议通常承载于TCP协议之上,HTTPS承载于TLS或SSL协议层之上 通过上面这张图我们能够知道.     在Http工作之前,Web浏览器通过网络和Web服务器建立链连接,该连接是通过Tcp来完成的,该协议和Ip共同组成了Internet,即著名的Tcp/Ip协议族,Http是比Tcp更高的应用层协议,一般Tcp接口的端口好是80.     TCP 被称为“面向连接”的传输层协议.关于它的具体细节,就不展开了.你只需知道:传输层主要有两个协议,分…
TCP 三次握手 示意图 Wireshark 抓包注意事项 为了演示一个TCP三次握手建立连接的过程,我们通过 Chrome 访问一个网页. 已知 HTTP 协议就是建立在TCP链接上的 比如访问以下的网址: http://toutiao.newmedia139.net/ 通过 Cmd 的 ping 命令获取 这个网站对应的 IP地址 183.136.236.13 确定 这个IP 有一个非常重要的好处,就是我们只需要 电脑 -> 网站 的数据包 网站->电脑 的数据包 所以,可以使用Wires…
TCP的三次握手: LISTEN:表示服务器端的某个socket处于监听状态,可以接收连接了. SYN_SENT:当客户端SOCKET执行connect连接时,它首先发送syn报文,随即会进入到此状态,表示客户端已发送syn报文,等待服务器端回应报文. SYN_RCVD:表示服务器端接收到了SYN报文.(此报文用nestat很难观察到,很短暂) ESTABLISHED:表示连接已经建立. 服务端在第二次握手时分配资源,客户端在第三次握手时分配资源. TCP规定SYN=1时不能携带数据,但要消耗一…
建立连接: 理解:窗口和滑动窗口TCP的流量控制 TCP使用窗口机制进行流量控制 什么是窗口? 连接建立时,各端分配一块缓冲区用来存储接收的数据,并将缓冲区的尺寸发送给另一端 接收方发送的确认信息中包含了自己剩余的缓冲区尺寸 剩余缓冲区空间的数量叫做窗口 2. TCP的流控过程(滑动窗口) TCP(Transmission Control Protocol) 传输控制协议 三次握手 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种…
1.什么是TCP/IP协议 TCP/IP 是一类协议系统,它是用于网络通信的一套协议集合. 传统上来说 TCP/IP 被认为是一个四层协议 1) 网络接口层: 主要是指物理层次的一些接口,比如电缆等. 2) 网络层: 提供独立于硬件的逻辑寻址,实现物理地址与逻辑地址的转换. 在 TCP / IP 协议族中,网络层协议包括 IP 协议(网际协议),ICMP 协议( Internet 互联网控制报文协议),以及 IGMP 协议( Internet 组管理协议). 3) 传输层: 为网络提供了流量控制…
TCP三次握手 1主机A发送消息请求与主机B连接 2主机B回复消息同意与主机A连接 3主机A确认主机B的同意连接,并建立连接 TCP的四次挥手 1客户端发送FIN到服务器,请求关闭与服务器的连接(意思是客户端没有数据要传输了) 2服务器收到FIN,它发回一个ACK,确认序号为收到的序号加1(服务器告诉客户端你的请求我收到了,我这边可能还有数据没传输完,请等我消息) 3服务器发送FIN到客户端(意思是我这边已经没有数据要传输,可以关闭连接了) 4客户端发送送ACK确认消息, *如果客户端两分钟之后…
TCP三次握手和四次挥手 TCP有6种标示:SYN(建立联机) ACK(确认) PSH(传送) FIN(结束) RST(重置) URG(紧急) 一.TCP三次握手   第一次握手 客户端向服务器发出连接请求报文,这时报文首部中的同部位SYN=1,同时随机生成初始序列号 seq=x,此时,TCP客户端进程进入了 SYN-SENT(同步已发送状态)状 态.TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序号.这个三次握手中的开始.表示客户端想要和服务端建立连接. 第二次握…
上文链接: 详解TCP连接的"三次握手"与"四次挥手"(上) 四.TCP的四次挥手(Four-Way Wavehand) 0.前言 对于"三次握手"我们耳熟能详,因为其相对的简单.但是,我们却不常听见"四次挥手",就算听过也未必能详细地说明白它的具体过程.下面就为大家详尽,直观,完整地介绍"四次挥手"的过程. 1."四次挥手"的详解 所谓的四次挥手即TCP连接的释放(解除).连接的释放必…
作者 | Jeskson 来源 | 达达前端小酒馆 轻松了解HTTP协议 为什么要学习网络协议呢?为什么要学习计算机完了呢?显然这很重要,至少能够帮助你找到工作的原因之一,学习网络知识点太多太多,没有那么快就能记住. 理解的网络协议,应该从背景原理去着手.那么从现在开始请认真阅读了哦!适合人群,对计算机有相应的了解,入门软件技术的朋友. 从客户端发送请求,会是神马结果?正常情况的状态码为2xx,错误的状态码为4xx,或是5xx等情况. 报错404: 了解Web,了解网络基础,了解HTTP协议,如…
TCP的三次握手与四次挥手笔记 TCP Flags URG: 紧急指针标志 ACK:确认序号标志 PSH:push标志 RST:重置连接标志 SYN:同步序号,用于建立连接过程 FIN: finish标志,用于释放连接 TCP三次握手流程文字解析: 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握手:服务器收到SYN包,必须确认客户的SYN(ac…
目录 TCP的三次握手与四次挥手 TCP报文段的首部格式 TCP的工作原理 TCP 的流量控制 TCP的拥塞控制 拥塞控制与流量控制的关系 拥塞控制所起的作用 慢开始和拥塞避免 慢开始算法的原理 三次握手建立TCP连接 四次挥手释放TCP连接 常见面试题 为什么TCP连接的时候是三次握手,关闭的时候却是四次握手? 为什么不能用两次握手进行连接? 如果已经建立了连接,但是客户端突然出现故障了怎么办? 为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态? TC…
首先,咱们先来熟悉下经典的tcp/ip模型. tcp/ip 模型为了方便使用,将osi七层模型划分成了四层,分别为网络接口层,网络层,传输层,应用层. 他们作用分别为: 1)网络接口层:主要作用是将ip地址和计算机的物理地址互相绑定,并实现二进制流和计算机硬件的高低电位的转换. 2)网络层:主要作用是通过ip地址将两台物理机链接起来,实现ip数据包的传输: 3)传输层:使源端主机和目标端主机上的对等实体可以进行会话.在传输层定义了两种服务质量不同的协议.即:传输控制协议TCP(transmiss…