关于java中的一些基础的知识,是非常的多的,而且涉及的方面也是非常的广阔的。相信大家在日常的学习中也会遇到很多这些令人疑惑的问题,今天就来为大家介绍一下,一起来看看吧。

首先说一下,java中三次握手四次挥手是什么?

握手的理由是为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据,如下图所示:

⑴ 客户端先发送FIN,进入FIN_WAIT1状态,用来关闭Client到Server的数据传送

⑵ 服务端收到FIN,发送ACK,进入CLOSE_WAIT状态,客户端收到这个ACK,进入FIN_WAIT2状态

⑶ 服务端发送FIN,进入LAST_ACK状态,用来关闭Server到Client的数据传送

客户端收到FIN,发送ACK,进入TIME_WAIT状态,服务端收到ACK,进入CLOSE状态(等待2MSL时间,约4分钟。主要是防止最后一个ACK丢失。)

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了,但是,此时主动关闭方还可 以接受数据。

第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。

第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。

第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。示意图如下:

总体上结合图文来说的话还是非常好理解的,也是很好掌握的。大家要是有兴趣的话可以多了解一下相关的知识。如果你想学习更多java基础知识的话,敬请关注奇Q工具网。

推荐阅读:

java实现四次挥手_java中三次握手四次挥手是什么?图文详解相关推荐

  1. java list转set去重_Java中List去重的四种方法

    Java中List去重的四种方法 package com.lxz.test; import java.util.ArrayList; import java.util.HashSet; import ...

  2. Python面试总结(四)ip正则与三次握手四次挥手

    1.请简述值传递和引用传递的区别? 值传递仅仅传递的是值 引用传递,传递的是内存地址,修改后会改变内存地址对应储存的值. 2.请手写一个匹配ip的正则表达式? 第一种方法: ((2[0-4]\d|25 ...

  3. TCP/IP详解--TCP/IP中三次握手 四次握手状态分析

    TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标 ...

  4. java适配器有哪些_Java中适配器模式(Adapter)是什么? 适配器模式(详解)

    本篇文章给大家带来的内容是Java中适配器模式(Adapter)是什么? 适配器模式(详解).有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所助. 目的:把源类型适配为目标类型,以适应客户端 ...

  5. java长连接心跳包_socket中的短连接与长连接,心跳包示例详解

    TCP连接简介 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接, 当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接, 连接的建立是需要三 ...

  6. java 窗体添加背景图片_Java Swing实现窗体添加背景图片的2种方法详解

    本文实例讲述了java Swing实现窗体添加背景图片的2种方法.分享给大家供大家参考,具体如下: 在美化程序时,常常需要在窗体上添加背景图片.通过搜索和测试,发现了2种有效方式.下面分别介绍. 1. ...

  7. java spring mvc 上传_Java Spring MVC 上传下载文件配置及controller方法详解

    下载: 1.在spring-mvc中配置(用于100M以下的文件下载) 下载文件代码 @RequestMapping("/file/{name.rp}") public Respo ...

  8. java android消息推送_Android中使用socket通信实现消息推送的方法详解

    原理最近用socket写了一个消息推送的demo,在这里和大家分享一下. 主要实现了:一台手机向另外一台手机发送消息,这两台手机可以随时自由发送文本消息进行通信,类似我们常用的QQ. 效果图: 原理: ...

  9. java读取服务器图片大小,SpringMVC中MultipartFile上传获取图片的宽度和高度详解

    SpringMVC一般使用MultipartFile来做文件的上传,通过MultipartFile的getContentType()方法判定文件的类型(MIME) ".doc":& ...

最新文章

  1. 关于命令行窗口输入pip list出错的一些解决办法
  2. Android .classpath文件的作用
  3. OpenKruise 2021 规划曝光:More than workloads
  4. 软考广东有哪几个考点
  5. 【Ray Tracing in One Weekend 超详解】 光线追踪1-7 Dielectric 半径为负,实心球体镂空技巧...
  6. 小程序员的大梦想 与盖茨像哥们儿
  7. oracle将字段nullable设为Y,从DB模型中消除NULLable列的选项(为了避免SQL的三值逻辑)?...
  8. oracle dd if=/dev/zero of=/dev,【转】dd if=/dev/zero of=的含义是什么?Linux 下的dd命令使用详解...
  9. 视觉中国再度开盘跌停 网站仍旧无法打开
  10. Security+ 学习笔记25 硬件与数据安全
  11. [C语言数据存储深度解析]-内存数据搞不懂?三千字长文带你走进数据类型及其存储
  12. 一枚前端开发-页面重构方向的招聘信息
  13. android studio 登录与注册,Android Studio登录/注册系统构想
  14. Atitit 知识的来源于生产方式大总结与机器学习分类 目录 1.1. 知识来源四个渠道 dna,经验,文化交流聚会,pc互联网等 1 1.2. 未来世界上大多数知识都将被机器提取,且将留存在机器
  15. 蓝桥杯JAVA版答案汇总
  16. Arduino通过HX1838红外接收模块控制红色发光LED
  17. VMware虚拟文件(.vmdk)瘦身(宿主为Windows)
  18. 计算机找不到ie浏览器,ie浏览器不见了,教您ie浏览器不见了怎么办
  19. 计算机自动关机启机唤醒设置,电脑设置自动关机和自动开机
  20. 上了一堂健身课,27岁程序员尿尿像酱油!

热门文章

  1. 老男孩教育 | 销售转行做网安,完美逆袭,进入国企!
  2. Studio One 6 V6.0.1 音乐编曲工具
  3. SqlZoo错题整理
  4. 如何利用pip在指定版本的python环境下安装库
  5. 在树莓派3B+上安装大疆EP的SDK全纪录
  6. 信息网络时代网络营销与传统市场营销的差异有哪些?
  7. Day 21-30 :Web前端概述
  8. 【一周AI新鲜事】“擎天柱”霸气登场/全球创新指数中国排名11位/摩尔定律死了,又活了?...
  9. TSP问题——Hopfield神经网络
  10. PHP构造函数是什么