java网络原理(三)----三次握手四次挥手

news2024/9/28 13:23:56

三次握手

三次握手是建立连接的过程,四次挥手是断开连接的过程,三次握手发生在socket.accept()之前。
在这里插入图片描述
客户端和服务器尝试建立连接的时候服务器就会和客户端进行一系列的数据交换称为握手,这个过程建立完了后,连接就好了。
A和B完成建立连接的过程需要3次打招呼的数据交互。
在这里插入图片描述

三次握手是一种可靠性的机制。

tcp想要保证可靠性传输,可靠传输的前提是网络路径得通畅,tcp三次握手就是验证网路通信时候否通畅,以及验证每个主机发送能力和接收能力是否正常。
当我和女朋友连麦打游戏时得先验证麦克风和耳机是否正常。
在这里插入图片描述
第一次我发送喵喵喵,为了验证我的麦克风是否正常,也是在验证女朋友耳机是否正常,女朋友收到喵喵喵,他就知道我的麦克风和他的耳机是好的。
第二次女朋友发送喵喵,为了验证他的麦克风是否正常,也验证我的耳机收否正常,我收到喵喵,我就知道我的耳机是好的,他的麦克风也是好的。
第三次我发送喵。就是对上述的喵喵进行回应,他收到喵说明刚才他发的喵喵我收到了。也就意味着双方设备都正常,可以互相通信了。
三次握手为什么是三次呢?因为恰好3次就能验证双方的发送能力和接收能力是否正常,并且把这样的信息同步给双方。
四次是否可以?可以但是没有必要。
在这里插入图片描述

消息协商

三次握手还能起到消息协商的效果。通信的时候涉及到一些参数,需要双方保持一致,通过协商来确定具体的参数是多少。
Tcp通信过程中有很多信息需要协调,比如双方的序号从几开始(一般不会从0或者1开始),这样做主要是保证2次连接消息的序号能有较大的差异,从而判定出某个消息是否属于这个连接的。网路上传输的信息可能后发先至,极端情况下,某个信息迟到了很久。当消息到达对端的时候,服务器和客户端已经断开了上一个连接。这是重新建立的连接了。这个时候就可以通过序号,明显的识别出这是上一个连接的信息,就可以丢弃了。

综上三次握手:
1.投石问路。验证通信路径是否通畅,双方的发送接收能力是否正常。
2.协商必要的参数。使客户端和服务器使用相同的参数进行消息的传输。

四次挥手

通信过程中,通信双方都在内存中保存了对端的信息,如果不需要连接了就得及时释放上述存储空间。
四次挥手和三次握手非常相似,三次握手必然是客户端主动发起的,四次挥手不一定,服务器也可以主动发起,大多还是客户端发起的。
在这里插入图片描述
第一个FIN由内核控制,第二个FIN是应用程序来控制的,调用socket.close();或者结束进程,就会触发FIN,相比之下ACK则是内核控制的,收到FIN就会立马返回ACK。
如果服务器始终不进行close会咋样?客户端始终不关闭吗?当程序执行结束不进行close 操作,此时服务器的tcp状态就处于CLOSE_WAIT状态,此时虽然连接没有关闭,但是此时这个连接已经不能用了。针对当前的socket进行操作,如果数据从缓存区中没有读完,能正常读到。如果读完,此时就会抛出异常。无论如何此时已经不能使用了,关闭是唯一的选择。更严重的是比如代码写出bug了,close就忘记写了,此时站在客户端的角度收不到对方的fin,也会进行等待,等待一定的时间就会放弃连接。
如果重传过程中出现丢包了怎么办?
这里也是超时重传,如果重传多次失败也会单方面放弃连接。如果主机A第二次接收到FIN,并且发出ACK,站在A的角度四次挥手就结束了。如果A发出ACK主机B并没有收到,出现丢包,把A释放了会出现问题,无人能够ACK。因此就需要让A最后一次发出ACK后等待一定的时间,如果没有接到B重新发来的FIN说明没有出现丢包,让A释放掉,如果接收到,让A重新传ACK。

Tcp是如何实现可靠传输的?
确认应答,超时重传,三次握手,四次挥手
三次握手是探路的,一旦网络通畅,双方接收和发送能力正常,三次握手的任务就完成。确认应答才是真正保证每次传输可靠的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1538512.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【蓝桥杯嵌入式】四、各种外设驱动(九)ADC(1):软件触发与中断触发方式

温馨提示:本文不会重复之前提到的内容,如需查看,请参考附录 【蓝桥杯嵌入式】附录 目录 重点提炼: 一、需求分析 1、需要的外设资源分析: 2、外设具体分析: 比赛时ADC可能需要配置的部分:…

第十三届蓝桥杯物联网试题(省赛)

做后感悟: OLED显示函数需要一直显示,所以在主函数中要一直循环,为了确保这个检错功能error只输出一次,最好用中断串口进行接收数据,数据收完后自动进入中断函数中,做一次数据检查就好了,该开灯…

十三、MySQL基于GTID的半同步复制

目录 一、MySQL半同步复制 一、三种复制方式比较 1、异步复制 2、同步复制 3、半同步复制 4、半同步复制比较 5、半同步复制的特点 二、搭建半同步复制 1、如果不清楚Plugin的目录,用如下查找: 2、所有数据库服务器,安装半同步插件…

如何使用ospf (enps) 简单实践ospf协议

1. OSPF的基本概念 OSPF(Open Shortest Path First,开放式最短路径优先)是一种广泛应用于TCP/IP网络中的内部网关协议(Interior Gateway Protocol, IGP),主要用于在同一自治系统(Autonomous Sys…

Django的forms组件

divmod(被除数, 除数)传入两个参数之后得到一个元组,元组中的第一个值是商,第二个是余数 forms组件 写一个注册功能,获取用户名和密码,利用form表单提交数据,在后端判断用户名和密码是否符合一定的条件:用户名必须超过3个字,密码最多6位.最后将验证信息返回到前端页面 1.手动…

【Algorithms 4】算法(第4版)学习笔记 21 - 5.2 单词查找树

文章目录 前言参考目录学习笔记0:前置介绍0:前置介绍1:单词查找树 R-way tries1.1:介绍1.2:查找操作1.2.1:成功命中1.2.2:未命中1.3:插入操作1.4:Java 实现1.5&#xff1…

刷题DAY31 | LeetCode 455-分发饼干 376-摆动序列 53-最大子序和

455 分发饼干(easy) 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并…

惠普EliteBook使用VirtualBox安装ISO镜像

实验环境 虚拟机软件:Oracle VM VirtualBox 6.1.16镜像文件:CentOS-7-x86_64-Minimal-2009.iso笔记本:惠普EditBook操作系统:Window10 BIOS开启虚拟化技术 一遍笔记本都不会开启虚拟化技术的,但是在window里使用虚拟…

二叉树|257.二叉树的所有路径

力扣题目链接 class Solution { private:void traversal(TreeNode* cur, vector<int>& path, vector<string>& result) {path.push_back(cur->val); // 中&#xff0c;中为什么写在这里&#xff0c;因为最后一个节点也要加入到path中 // 这才到了叶子节…

Qt实现TFTP Server和 TFTP Client(一)

1 概述 TFTP协议是基于UDP的简单文件传输协议&#xff0c;协议双方为Client和Server.Client和Server之间通过5种消息来传输文件,消息前两个字节Code是消息类型&#xff0c;消息内容随消息类型不同而不同。传输模式有三种&#xff1a;octet,netascii和mail&#xff0c;octet为二…

nodejs安装使用React

1、react安装 首先&#xff0c;确保电脑上具备nodejs环境&#xff0c;之后用 winr 呼出控制台&#xff0c;输入 cmd 命令弹出cmd控制台&#xff08;小黑框&#xff09;之后在默认路径输入如下代码 npm i -g create-react-app //全局安装react环境无需选择特定文件夹安装成功后…

代码随想录--排序算法

912.排序数组 快速排序 思路&#xff1a; 1. 设置一个pivot2. 将小于nums[pivot]的值 放在左边3. 将 大于nums[pivot]的值 放在 右边4. 递归调用注意&#xff1a;必须先比较nums[high] 与pivot 代码&#xff1a; class Solution {int partition(vector<int>&nu…

论文解读:Frozen Feature Augmentation for Few-Shot Image Classification

文章总结 动机 通过各种图像增强手段和冻结特征(已经训练好的特征)结合起来训练轻量级模型。 最终得到的最佳设置顺序 亮度&#xff0c;对比度FroFA (C)和后置cFroFA (Pc) 这三种连续的数据增强操作(具体这三种数据增强操作是干了什么&#xff0c;得去附录找) 这里三种FroFA…

国内IP地址格式的多样性与规范化

在当今数字化时代&#xff0c;IP地址作为互联网通信的基本要素之一&#xff0c;在网络通信中扮演着至关重要的角色。了解国内IP地址的格式、规范以及不同类型的IP地址对网络通信的影响&#xff0c;对于构建高效稳定的网络环境至关重要。虎观代理小二将深入探讨国内IP地址的格式…

Centos虚拟机忘记密码;重置虚机密码

虚拟机是一个好用的工具&#xff0c;在本地搭建的虚拟机可以给我们提供测试&#xff0c;但时间长了也会忘记密码&#xff1b;因此这里以centos系统的虚机为例&#xff0c;提供一个重置虚机密码的方法 1.在开机页面按“E”进入编辑模式 进入后长这样&#xff1a; 2.找到ro cras…

iOS模拟器 Unable to boot the Simulator —— Ficow笔记

本文首发于 Ficow Shen’s Blog&#xff0c;原文地址&#xff1a; iOS模拟器 Unable to boot the Simulator —— Ficow笔记。 内容概览 前言终结模拟器进程命令行改权限清除模拟器缓存总结 前言 iOS模拟器和Xcode一样不靠谱&#xff0c;问题也不少。&#x1f602; 那就有病治…

Tensorflow 2.0 常见函数用法(一)

文章目录 0. 基础用法1. tf.cast2. tf.keras.layers.Dense3. tf.variable_scope4. tf.squeeze5. tf.math.multiply 0. 基础用法 Tensorflow 的用法不定期更新遇到的一些用法&#xff0c;之前已经包含了基础用法参考这里 &#xff0c;具体包含如下图的方法&#xff1a; 本文介…

使用PDFBox调整PDF每页格式

目录 一、内容没有图片 二、内容有图片 maven依赖&#xff0c;这里使用的是pdfbox的2.0.30版本 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.30</version></dependency>…

基于python+vue 的一加剧场管理系统的设计与实现flask-django-nodejs-php

二十一世纪我们的社会进入了信息时代&#xff0c;信息管理系统的建立&#xff0c;大大提高了人们信息化水平。传统的管理方式对时间、地点的限制太多&#xff0c;而在线管理系统刚好能满足这些需求&#xff0c;在线管理系统突破了传统管理方式的局限性。于是本文针对这一需求设…

vue 消息左右滚动(前后无缝衔接)

演示效果 封装的组件 <!--* Author:* Date: 2024-03-21 19:21:58* LastEditTime: 2024-03-21 20:31:50* LastEditors: Please set LastEditors* Description: 消息左右滚动 --> <template><divid"textScroll"class"text-scroll"mousemove&…