简述TCP的三次握手和四次挥手过程[通俗易懂]

简述TCP的三次握手和四次挥手过程[通俗易懂]①TCP是一种精致的,可靠的字节流协议。②在TCP编程中,三路握手一般由客户端(Client)调用Connent函数发起。③TCP3次握手后数据收发通道即打开(即建立了连接)。④简述三路握手过程:图.TCP三次握手(1)第一次握手:Client将标志位SYN置为1,随机产生一个值s…

大家好,又见面了,我是你们的朋友全栈君。

简述TCP的三次握手和四次挥手过程[通俗易懂]

 

①TCP是一种精致的,可靠的字节流协议。

②在TCP编程中,三路握手一般由客户端(Client)调用Connent函数发起。

③TCP3次握手后数据收发通道即打开(即建立了连接)。

④简述三路握手过程:

简述TCP的三次握手和四次挥手过程[通俗易懂]

                                         图 .TCP三次握手

(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
        
⑤SYN攻击:

  在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了。

使用如下命令可以让之现行:#netstat -nap | grep SYN_RECV

⑥TCP连接的建立:SYN分节

       终止:FIN(finish)分节

四次挥手

所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发。

简述TCP的三次握手和四次挥手过程[通俗易懂]

由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。
(1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态

(2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态
(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1Server进入CLOSED状态,完成四次挥手。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137310.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 写好代码的10个秘密

    写好代码的10个秘密

    2021年8月9日
    58
  • 开发微信公众号步骤_微信公众平台开发

    开发微信公众号步骤_微信公众平台开发磨刀不误砍柴工微信公众号大家肯定都用过。目前微信公众号主要分为订阅号和服务号,每种账号又分为未认证和已认证,它们的差别主要在于具有不同的接口权限,下图(引用自微信开发实战系列)是一些例子:不同类型公众号的权限总体来说,服务号权限>订阅号权限,认证账号权限>未认证账号权限。申请订阅号比较简单,服务号相对复杂点,另外要认证的话还要额外提交一些材料。我们可以根据不同的业务需求去申请不同类型的账号,基本上常用的权限列表已经可以满足大部分的场景。开发微信公众号本质上和通常.

    2022年9月28日
    4
  • 树莓派开发环境搭建(树莓派5)

    在本系列文章的第一部分中,我们将在一台树莓派Pi3ModelB上安装并运行一个以太坊区块链客户端。毫无疑问,区块链绝对是当前的热点。之所以会这样,很大程度上是因为比特币以及其他加密货币让很多人一夜暴富。但是,区块链的应用并不仅限于加密货币领域,考虑到其去中心化以及防篡改等特性,区块链技术还可以用到IoT应用中。因此,除了加密货币和安全交易之外,以太坊平台还可以提供一种分布式的计算平台。在这篇…

    2022年4月12日
    180
  • AbstractInterceptor和MethodFilterInterceptor的区别

    AbstractInterceptor和MethodFilterInterceptor的区别1.AbstractInterceptor是Interceptor的子类。2.MethodFilterInterceptor是AbstractInterceptor的子类,你需要实现的拦截器支持方法过滤性,就继承MethodFilterIntercepter这个类.默认的情况下,拦截器会拦截Action中的所有的方法,这里不包括setter或getter方法.这时就可以使用方法

    2022年5月14日
    41
  • iic通信协议是什么[通俗易懂]

    iic通信协议是什么[通俗易懂] iic通信协议是什么  IIC协议是二线制,信号线包含SDA和SCL,且信号线是双向的,开路结构,需要通过上拉电阻到VCC,具体的电阻值影响的是信号反应速度和驱动能力。  首先,IIC通信与UART,还有SPI统称为串行接口通信,不过它们之间还是有区别的,如UART的负电平逻辑,还有UART通信不需要时钟,只需要特定的波特率即可,SPI与IIC都可以有一个主机,多个从机的情况,…

    2022年6月9日
    50
  • px像素和dp像素密度区别[通俗易懂]

    px像素和dp像素密度区别[通俗易懂]px即像素,1px代表屏幕上一物理像素点。dp(dip)Densityindependentpixels.设备无关像素,与像素密度相关。像素密度:每英寸包涵的像素数

    2022年5月25日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号