计网-三次握手和四次挥手

TCP建立和断开连接的过程(三次握手和四次挥手)

TCP通信的过程:

问题:tcp是如何保证数据在客户端和服务端之间通信传输的?
分为三个步骤:三次握手,传输数据确认,四次挥手。三次握手是建立连接,而四次握手是断开连接的过程。

Tcp的概念

传输层协议,提供host-to-host数据的可靠传输,支持全双工,是一个连接导向的协议。
主机到主机(host-to-host):一台主机通过tcp发送数据给另一台主机。

Tcp/ip 5层模型

Tcp协议往上是应用到应用的协议。–应用层
Tcp上层的应用层协议使用tcp时,需要知道端口号----用于区分应用–传输层
主机与主机之间通信,需要知道主机们的网络地址(ip地址),但是tcp不负责把实际地址到地址的传输,tcp把ip交给了底层的互联网层进行处理–网络层
互联网层,也叫网络层,提供地址到地址之间的通信。但不负责信号在具体两个设备之间的传递–链路层,当信号在两个设备之间传递时,又需要物理层封装最底层的物理设备,传输介质等提供最底层的传输能力–物理层
综合以上的5层被称为互联网协议群,也称作tcp/ip协议群总结下,主机到主机为应用提供到应用间通信的能力。

什么是连接和会话?

连接–数据传输双方都在线,数据收发双方的内存中都建立一个用于维护数据传输状态的对象,连接是网络行为状态的记录。客户端需要与服务器建立连接。
会话:数据双方聊天窗口,是应用的行为。在有些系统中,会话会自动重连,或帮助创建连接,会话也负责在多次连接中保存状态,比如HTTP session在多次http请求(连接)间保存状态(如用户信息)。

双工和单工

  • 单工:数据只能单向发送,至少一条线路
  • 半双工:某时刻数据向一个方向传输,也可以反方向传输(交替进行),至少一条线路
  • 全双工:任何时刻数据都可以双向收发,需要大于一条线路
    注:这里的线路抽象,并发的处理信号。
    Tcp是一个双工协议,数据在任何时候都可以双向传输。

什么是可靠性?

Tcp是可靠性传输。
可靠性指数据保证无损(原顺序)传输。如果发送方把数据发送给多个接收方—多播,那么所有的接收方都必须收到这个相同的副本。

Tcp的握手和挥手(建立和断开连接)

Tcp的基本操作

  • 如果一个host主动向另一个host发起连接,称为SYN,请求同步
  • 如果一个host主动主动断开请求,称为FIN,请求完成
  • 如果一个host给另一个host发送数据,称为PSH,数据推送

以上3种,接收方收到数据后需要给发送方一个ACK响应,若没有,发送方可能认为自己需要重发这个请求。请求/响应模型是可靠性的要求。

建立连接的过程(三次握手)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
为什么要三次握手而不是两次握手?
这是为了防止因为已失效的请求报文,突然又传到服务器,引起错误, 这是什么意思?
假设采用两次握手建立连接,客户端向服务端发送一个syn包请求建立连接,因为某些未知的原因,并没有到达服务器,在中间某个网络节点产生了滞留,为了建立连接,客户端会重发syn包,这次的数据包正常送达,服务端发送syn+ack之后就建立起了连接。
但是第一包数据阻塞的网络突然恢复,第一包syn包又送达到服务端,这时服务端会认为客户端又发起了一个新的连接,从而在两次握手之后进入等待数据状态,服务端认为是两个连接,而客户端认为是一个连接,造成了状态不一致,如果在三次握手的情况下,服务端收不到最后的ack包,自然不会认为连接建立成功。
所以三次握手本质上来说就是为了解决网络信道不可靠的问题,为了在不可靠的信道上建立起可靠的连接,经过三次握手之后,客户端和服务端都进入了数据传输状态。

断开连接的过程(四次挥手)

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python | Leetcode Python题解之第232题用栈实现队列

题目: 题解: class MyQueue:def __init__(self):self.A, self.B [], []def push(self, x: int) -> None:self.A.append(x)def pop(self) -> int:peek self.peek()self.B.pop()return peekdef peek(self) -> int:if self.B: return self.B[-1…

如何找回误删的文件?4个常用文件恢复方法!

对于许多用户来说,误删文件是一种常见而令人懊恼的情况。恢复误删文件的重要性在于,它可以帮助用户找回宝贵的数据,避免因数据丢失带来的各种不便和损失。 如何找回不小心删除的文件? 误删数据不知道怎么恢复,会给我…

OS Copilot:新手测评体验

文章目录 前言一、OS Copilot(阿里云操作系统智能助手)简介二、测评体验总结OS Copilot 产品体验评测OS Copilot 产品功能反馈 前言 本文简单分享一下自己使用OS Copilot测评体验。 一、OS Copilot(阿里云操作系统智能助手)简介 …

一个极简的 Vue 示例

https://andi.cn/page/621516.html

【BUG】已解决:JsonMappingException

已解决:JsonMappingException 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 概述: 没有getter方法的实体的序列化,并解决Jackson引发的JsonMappingException异常。 默认情况下,Jackson 2只会处理公有字段或具有公有get…

vue 自定义滚动条同步拖动(移动端)

实现效果&#xff0c;拖动左右箭头实现图片区域同步滚动&#xff0c;到边缘停止拖动。 HTML代码 <template><div touchstart"onClick"><!--使用draggable组件 图片列表区域--><draggablev-model"select_list"end"onEnd"cl…

比赛获奖的武林秘籍:06 5 分钟速通比赛路演答辩,国奖选手的血泪经验!

比赛获奖的武林秘籍&#xff1a;06 5 分钟速通比赛路演答辩&#xff0c;国奖选手的血泪经验&#xff01; 摘要 本文主要介绍了大学生电子计算机类比赛和创新创业类比赛常见雷点、要点和精髓&#xff0c;并对路演的定义和基本概念进行了说明&#xff0c;结合自身经历对路演答辩…

【提交ACM出版 | EIScopus检索稳定 | 高录用】第五届大数据与社会科学国际学术会议(ICBDSS 2024,8月16-18)

第五届大数据与社会科学国际学术会议&#xff08;ICBDSS 2024&#xff09;将于2024年08月16-18日在中国-上海隆重举行。 ICBDSS会议在各专家教授的支持下&#xff0c;去年已成功举办了四届会议。为了让更多的学者有机会参与会议分享交流经验。本次会议主要围绕“大数据”、“社…

Python酷库之旅-第三方库Pandas(020)

目录 一、用法精讲 49、pandas.merge_asof函数 49-1、语法 49-2、参数 49-3、功能 49-4、返回值 49-5、说明 49-5-1、功能 49-6、用法 49-6-1、数据准备 49-6-2、代码示例 49-6-3、结果输出 50、pandas.concat函数 50-1、语法 50-2、参数 50-3、功能 50-4、返…

小米起诉“小米”商标侵权,索赔500万!

近日浙江丽水有家叫小米的公司&#xff0c;因为商标侵权被小米科技起诉索赔500万&#xff0c;需要变更企业名称&#xff0c;官网也不能用“小米智能大家居”等&#xff0c;还有其它的赔偿&#xff0c;普推知产商标老杨分析&#xff0c;“小米智能大家居”“小米”&#xff0c;后…

ensp防火墙综合实验作业+实验报告

实验目的要求及拓扑图&#xff1a; 我的拓扑&#xff1a; 更改防火墙和交换机&#xff1a; [USG6000V1-GigabitEthernet0/0/0]ip address 192.168.110.5 24 [USG6000V1-GigabitEthernet0/0/0]service-manage all permit [Huawei]vlan batch 10 20 [Huawei]int g0/0/2 [Huawei-…

深入探讨【C++容器适配器】:现代编程中的【Stack与Queue】的实现

目录 一、Stack&#xff08;栈&#xff09; 1.1 Stack的介绍 1.2 Stack的使用 1.3 Stack的模拟实现 二、Queue&#xff08;队列&#xff09; 2.1 Queue的介绍 2.2 Queue的使用 2.3 Queue的模拟实现 三、容器适配器 3.1 什么是适配器 3.2 为什么选择deque作为stack和…

Apache Flink核心特性应用场景

Flink的定义 Apache Flink是一个分布式处理引擎&#xff0c;用于处理 无边界数据流&#xff0c; 有边界数据流上金秀贤有状态的计算。Flink能在所有常见的集群环境中运行&#xff0c;并能以内存速度和任意规模进行计算如下Flink官网的一张图 Flink 与Spark的区别 Flink 中处…

5.SpringBoot核心源码-启动类源码分析

目录 概述技巧spring boot 如何启动应用程序run方法里面核心逻辑 SpringApplicaiton.run(xxx.class,args)结束 概述 SpringBoot核心源码-启动类源码分析 技巧 如何给外部源码加注释&#xff0c;想要在源码中添加自己的注释&#xff0c;会弹出 file is read only&#xff0c;代…

【多媒体】Java实现MP4和MP3音视频播放器【JavaFX】【更多功能的播放器】【音视频播放】

在Java中播放视频可以使用多种方案&#xff0c;最常见的是通过Swing组件JFrame和JLabel来嵌入JMF(Java Media Framework)或Xuggler。不过&#xff0c;JMF已经不再被推荐使用&#xff0c;而Xuggler是基于DirectX的&#xff0c;不适用于跨平台。而且上述方案都需要使用第三方库。…

GD32MCU最小系统构成条件

大家是否有这个疑惑&#xff1a;大学课程学习51的时候&#xff0c;老师告诉我们51的最小系统构成&#xff1f;那么进入32位单片机时代&#xff0c;gd32最小系统构成又是怎么样的呢&#xff1f; 1.供电电路 需要确保供电的电压电流稳定&#xff0c;以东方红开发版为例&#xff…

WPF界面设计-更改按钮样式 自定义字体图标

一、下载图标文件 iconfont-阿里巴巴矢量图标库 二、xaml界面代码编辑 文件结构 &#xe653; 对应的图标代码 Fonts/#iconfont 对应文件位置 <Window.Resources><ControlTemplate TargetType"Button" x:Key"CloseButtonTemplate"…

浏览器输入URL后的过程

总体流程&#xff1a; 1. 用户输入URL并按下回车 当用户在浏览器的地址栏中输入一个 URL 并按下回车&#xff0c;浏览器开始解析用户输入并判断这是一个合法的 URL。 2. DNS 解析 缓存查找&#xff1a;浏览器首先查看本地 DNS 缓存中是否有对应的 IP&#xff0c;如果有则直接…

AI人工智能作词,为音乐注入未来之力

在当今的音乐世界中&#xff0c;创新的力量不断推动着边界的拓展&#xff0c;而人工智能作词正以其独特的魅力&#xff0c;成为引领音乐走向未来的强大动力。 “妙笔生词智能写歌词软件&#xff08;veve522&#xff09;”无疑是这股浪潮中的璀璨明星。它利用先进的人工智能技术…

【Golang】map的使用

map声明的方式 //声明var m map[string]string//在使用map之前&#xff0c;先make&#xff0c;make的作用就是给map分配空间m make(map[string]string)m["lover"] "Yzx"m["friend1"] "Zxw"m["friend2"] "Zzc"…