tcp四次挥手

简述TCP的三次握手四次挥手过程及各种过程解析

天大地大妈咪最大 提交于 2019-12-01 19:38:39
TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; SYN:同步序列编号(Synchronize Sequence Numbers) 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手. 完成三次握手,客户端与服务器开始传送数据 A与B建立TCP连接时:首先A向B发SYN(同步请求),然后B回复SYN +ACK(同步请求应答),最后A回复ACK确认,这样TCP的一次连接(三次握手)的过程就建立了! 一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效

TCP三次握手,四次挥手异常情况

此生再无相见时 提交于 2019-12-01 19:38:30
1、三次握手   (1)、client第一个syn包丢失,没有收到server的ack,则client进行持续重传syn包。总尝试时间为75秒。参与文献《TCP/IP详解 卷1:协议》p178   (2)、server收到了client的syn,并发出了syn+ack包,syn+ack包丢失。     client方面,因为没收server的。将执行情况(1);     server方面,超时时间内没有收到client的ack包(或者数据包),会持续发送syn+ack包;   (3)、当Client端收到Server的SYN+ACK应答后,其状态变为ESTABLISHED,并发送ACK包给Server;     如果此时ACK在网络中丢失,那么Server端该TCP连接的状态为SYN_RECV,并且依次等待3秒、6秒、12秒后重新发送SYN+ACK包,以便Client重新发送ACK包,以便Client重新发送ACK包。   Server重发SYN+ACK包的次数,可以通过设置/proc/sys/net/ipv4/tcp_synack_retries修改,默认值为5。   如果重发指定次数后,仍然未收到ACK应答,那么一段时间后,Server自动关闭这个连接。   如果此时client向server发送数据包,server能正常接收数据。并认为连接已正常。参考:https:/

简述TCP协议的六个标志位和三次握手与四次挥手的过程及原理

对着背影说爱祢 提交于 2019-12-01 19:37:25
简述TCP协议的三次握手与四次挥手的过程及原理 今天,我们来分享一下TCP协议的六个标志位和三次握手与四次挥手的过程及原理。 先介绍一下TCP中的六个控制位, SYN表示建立连接; FIN表示关闭连接; ACK表示响应; PSH表示有 DATA数据传输; RST表示连接重置; URG表明紧急指针有效. URG标志表明紧急数据之后正常数据的起始位置,URG的序列号到紧急指针之间的数据为紧急数据,而紧急指针开始的数据才是正常数据。当URG=1时,表示分段中有紧急数据应当加速传送。 PSH标志 PSH 紧急位。当PSH=1时,要求发送方马上发送该分段,而接收方尽快的将报文交给应用层,不做队列处理。 URG=1,表示紧急指针指向包内数据段的某个字节(数据从第一字节到指针所指字节就是紧急数据),不进入接收缓冲,直接交给上层进程,而余下的数据都是要进入接收缓冲的。 而一般情况下,TCP是要等到整个缓存都填满了后再向上交付,但是如果PSH=1的话,就不用等到整个缓存都填满,直接交付,但是这里的交付仍然是从缓冲区中交付的。 所以PSH要经过缓冲区而URG不需要,千万要记住哦! 其次,SYN和FIN不能同时有效,当出现SYN和FIN同时有效的数据包时,可能有人在恶意攻击你的网络,要多多注意,并采取响应措施。 而RST用于异常终止一个链接,RST报文段不会导致另一端产生任何响应,另一端根本不进行确认

TCP的三次握手四次挥手

落花浮王杯 提交于 2019-12-01 19:37:07
一篇不错的TCP三次握手四次挥手解答,原文链接: 原文链接 建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示: 先来看看如何建立连接的。 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。 那如何断开连接呢?简单的过程如下: 【注意】中断连接端可以是Client端,也可以是Server端。 假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态

详解TCP三次握手与四次挥手

喜你入骨 提交于 2019-12-01 19:36:14
一、TCP三次握手和socket详解 1.TCP 连接 第一次:cli发送SYN包(SYN = j)到ser,并且进入SYN_SEND状态,等待服务器确认; 第二次:ser收到SYN包,必须确认客户的SYN(ACK = j+1),同事自己也发送一个SYN包(SYN = k),即SYN+ACK,此时ser进入SYN_RECV状态; 第三次:cli收到ser的SYN+ACK包,向ser发送确认包ACK(ACK = k+1),此包发送完毕,ser和cli进入ESTABLISHED状态,完成三次握手。 握手过程中传送的包里不包含数据,三次握手完毕之后,cli与ser才开始传送数据。 2.三次握手状态详解: 3.图解三次握手: 从图中可以看出,当客户端调用connect时,触发了连接请求,向服务器发送了SYN包,这时connect进入阻塞状态;服务器监听到连接请求,即收到了SYN J包,调用accept函数接收请求 向客户端发送SYN K,ACK J+1,这时accept进入阻塞状态;客户端收到服务器的SYN K,ACK J+1之后,这时connect返回,并且对SYN K进行确认;服务器收到ACK K+1,accept返回,至此三次握手完毕,连接建立。 客户端的connect在三次握手的第二次返回,而服务器端的accept在三次握手的第三次返回 。 套接字之间的连接过程分为三个步骤

TCP协议的三次握手四次挥手

与世无争的帅哥 提交于 2019-12-01 19:35:55
点击上方“ 程序员大咖 ”,选择“置顶公众号” 关键时刻,第一时间送达! IP协议、HTTP协议、TCP协议、TCP/IP 协议我们经常遇到,而且初学的时候容易弄混。那么他们之间有什么关系呢?重点内容 1、什么是TCP/IP 协议 TCP/IP不是一个协议,而是一个协议族的统称。里面包括IP协议、HTTP协议、TCP协议等。而三次握手四次挥手就发生在TCP协议中。 TCP/IP协议栈主要分为四层:应用层、传输层、网络层、数据链路层。每层都有相应的协议,具体如下图: 下面是从网络上找到的TCP/IP通信数据流 2、TCP协议 TCP是一个属于传输层的面向连接的、可靠的、基于字节流的传输层通信协议。 为了确保信息能够确保准确无误的到达,TCP采用了著名的三次握手策略。 TCP报文格式图: 上图中有几个字段需要重点介绍下: (1) 序号 :Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 (2) 确认号 :Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。 (3) 标志位 :共6个,即URG、ACK、PSH、RST、SYN、FIN等,在三次握手中建立连接时出现。 具体含义如下: (A)URG:紧急指针(urgent pointer)有效。 (B)ACK:确认序号有效。 (C)PSH

关于常见面试题TCP三次握手和四次挥手

南笙酒味 提交于 2019-12-01 19:30:50
TCP三次握手和四次断开 TCP三次握手和四次挥手是一道面试官常问的问题,其实这个问题可以有很多种角度的回答,当面试官问起你时,你要用的理解把这段通信和断开给他解释明白,你只要能把一个不懂的it的人说的都能听懂了什么是三次握手四次断开,那么恭喜你,你终于学会了。 首先,我们上一张TCP报文段的首部格式图, 我们先简单介绍一下控制位(图中六个缩写单词)中的几个重要的,首先是 ACK(确认序号位):为1时表示确认号有效,为0时表示没有确认信息,忽略确认号字段 SYN(同步序号位):在建立连接请求时,此位置为1 FIN(断开位):释放连接时,发送fin=1表示已经没有数据发送了,即要关闭数据流 长话短说,进入主题 三次握手 首先三次握手的含义是主机电脑向服务器发送的建立连接请求,它们之间有三次互动,因为TCP传输协议是双向的可靠传输协议,所以它要在通信前进行多次确认。 第一次握手 :首先PC1向PC2发送建立连接请求,发送SYN报文,所以自己的SYN同步序号位置为1,SYN=1,同时还需要带上自己的随机序列号x,以便验证自己的身份,所以Seq=x。 第二次握手 :PC2接收到PC1的请求,向PC1进行回复,它要回复的内容是SYN和ACK报文,首先ACK=1,是因为PC2确定收到建立连接请求,Ack=x+1,这里是确定对PC1 x序列号的确定,确定我是收到的PC1的连接请求

TCP三次握手和四次挥手详解

一个人想着一个人 提交于 2019-12-01 19:30:19
TCP(Transmission Control Protocol)网络传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议,数据传输前建立连接的工作要经过三次握手,数据传输后断开连接的工作要经过四次挥手。 工作过程 TCP标志位: TCP共有6个标志位,分别是: SYN(synchronous),建立联机。 ACK(acknowledgement),确认。 PSH(push),传输。 FIN(finish),结束。 RST(reset),重置。 URG(urgent),紧急。 图解三次握手和四次挥手的过程: 三次握手建立连接阐述: 第一次握手:客户端要和服务端进行通信,首先要告知服务端一声,遂发出一个SYN=1的连接请求信号,”服务端哥哥,我想给你说说话”。 第二次握手:当服务端接收到客户端的连接请求,此时要给客户端一个确认信息,”我知道了(ACK),我这边已经准备好了,你现在能连吗(SYN)”。 第三次握手:当客户端收到了服务端的确认连接信息后,要礼貌的告知一下服务端,“好的,咱们开始联通吧(ACK)”。 到此整个建立连接的过程已经结束,接下来就是双方你一句我一句甚至同时交流传递信息的过程了。 四次挥手断开连接阐述: 第一次挥手:双方交流的差不多了,此时客户端也已经结尾了,接下来要断开通信连接,所以告诉服务端“我说完了(FIN)”,此时自身形成等待结束连接的状态。

TCP三次握手与四次挥手

北战南征 提交于 2019-12-01 19:28:07
TCP三次握手与四次挥手 1、TCP通信 TCP是面向连接的协议。运输连接是用来传送TCP报文的,而运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。可以类比传统的电话网,拨通号码,开始通话,挂断电话。 用户进程和服务器进程 需要完成一次通信都需要完成三个阶段: 1 连接建立 2 数据传送 3 连接释放 TCP协议中,主动发起请求的一端称为客户端,被动连接的一端称为服务端。由于全双工,不管是客户端还是服务端,TCP连接建立完后都能发送和接收数据。 2、序列号、确认号及标志位等 1 序列号seq: 占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生,给字节编上序号后,就给每一个报文段指派一个序号,序列号seq就是这个报文段中的第一个字节的数据编号。 2 确认号ack: 占4个字节,期待收到对方下一个报文段的第一个数据字节的序号,序列号表示报文段携带数据的第一个字节的编号,而确认号指的是期望接受到下一个字节的编号,因此挡墙报文段最后一个字节的编号+1即是确认号。 3 确认ACK: 占1个比特位,仅当ACK=1,确认号字段才有效。ACK=0,确认号无效。 4 同步SYN: 连接建立时用于同步序号。当SYN=1,ACK=0表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使用SYN=1,ACK=1.因此,SYN

TCP三次握手和四次挥手

99封情书 提交于 2019-12-01 19:27:55
参考: https://www.cnblogs.com/Andya/p/7272462.html https://blog.csdn.net/whuslei/article/details/6667471/ 目录 TCP传输全过程 三次握手 (1)三次握手的详述 (2)总结三次握手过程 (3)为什么A还要发送一次确认呢?可以二次握手吗? (4)Server端易受到SYN攻击? 四次挥手 (1)四次挥手的详述 (2)总结四次挥手过程 (3)为什么A在TIME-WAIT状态必须等待2MSL的时间? (4)为什么连接的时候是三次握手,关闭的时候却是四次握手? (5)为什么TIME_WAIT状态需要经过2MSL才能返回到CLOSE状态? TCP传输全过程 三次握手 (1)三次握手的详述 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。 最初两端的TCP进程都处于CLOSED关闭状态,A主动打开连接,而B被动打开连接。 (A、B关闭状态CLOSED——B收听状态LISTEN——A同步已发送状态SYN-SENT——B同步收到状态SYN-RCVD——A、B连接已建立状态ESTABLISHED) B的TCP服务器进程先创建传输控制块TCB