TCP三次握手四次挥手简介

news2025/7/9 22:21:00

TCP三次握手四次挥手简介

图解三次握手、四次挥手

建立连接:三次握手

nZu5pF.png

关闭连接:四次挥手

nZuIl4.png

上图传递过程中出现的几个字符(SYN,ACK,FIN,seq,ack)各代表什么意思

SYN,ACK,FIN存放在TCP的标志位(标志位一共有6个字符,这里就介绍这三个):

SYN: 代表请求创建连接,所以在三次握手中前两次要SYN=1,表示这两次用于建立连接,至于第三次什么用,在疑问三里解答。

FIN: 表示请求关闭连接,在四次分手时,我们发现FIN发了两遍。这是因为TCP的连接是双向的,所以一次FIN只能关闭一个方向。

ACK: 代表确认接受,从上面可以发现,不管是三次握手还是四次分手,在回应的时候都会加上ACK=1,表示消息接收到了,并且在建立连接以后的发送数据时,都需加上ACK=1,来表示数据接收成功。

seq: 序列号,什么意思呢?当发送一个数据时,数据是被拆成多个数据包来发送,序列号就是对每个数据包进行编号,这样接受方才能对数据包进行再次拼接。

ack: 这个代表下一个数据包的编号,这也就是为什么第二请求时,ack是seq+1,


TCP协议和UDP协议的区别

  • TCP协议是有连接的,有连接的意思是开始传输实际数据之前TCP的客户端和服务器端必须通过三次握手建立连接,会话结束之后也要结束连接。而UDP是无连接的。

  • TCP协议保证数据按序发送,按序到达,提供超时重传来保证可靠性,但是UDP不保证按序到达,甚至不保证到达,只是努力交付,即便是按序发送的序列,也不保证按序送到。

  • TCP协议所需资源多,TCP首部需20个字节(不算可选项),UDP首部字段只需8个字节。

TCP有流量控制和拥塞控制,UDP没有,网络拥堵不会影响发送端的发送速率

  • TCP是一对一的连接,而UDP则可以支持一对一,多对多,一对多的通信。

TCP面向的是字节流的服务,UDP面向的是报文的服务。


TCP介绍和UDP介绍

为什么需要三次握手

如果发送两次就建立连接话,那么只要客户端发送一个连接请求,服务端接收到并发送了确认,就会建立一个连接。

可能出现的问题:

  • 如果一个连接请求在网络中跑的慢,超时了,这时客户端会从发请求,但是这个跑的慢的请求最后还是跑到了,然后服务端就接收了两个连接请求,然后全部回应就会创建两个连接,浪费资源!

  • 如果加了第三次客户端确认,客户端在接受到一个服务端连接确认请求后,后面再接收到的连接确认请求就可以抛弃不管了。

为什么关闭连接却是四次握手

关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可能未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了。

什么是TIME_WAIT状态(2MSL状态)有什么意义

MSLMaximum Segment Lifetime ,也就是报文最大生存时间,引用《TCP/IP详解》中的话:“它(MSL)是任何报文段被丢弃前在网络内的最长时间。”那么,2MSL也就是这个时间的2倍。需要明白的是,当TCP连接完成四个报文段的交换时,主动关闭的一方将继续等待一定时间(2-4分钟),即使两端的应用程序结束。

意义:

  1. 为了保证A发送的最有一个ACK报文段能够到达B。这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的B收不到对已发送的FIN和ACK 报文段的确认。B会超时重传这个FIN和ACK报文段,而A就能在2MSL时间内收到这个重传的ACK+FIN报文段。接着A重传一次确认。
  2. 就是防止已失效的连接请求报文段出现在本连接中,A在发送完最有一个ACK报文段后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。

常见的应用中使用到的协议

常见的应用中有哪些是应用TCP协议的,哪些又是应用UDP协议的,为什么它们被如此设计?
以下应用一般或必须用udp实现?

  • 多播的信息一定要用udp实现,因为tcp只支持一对一通信。

  • 如果一个应用场景中大多是简短的信息,适合用udp实现,因为udp是基于报文段的,它直接对上层应用的数据封装成报文段,然后丢在网络中,如果信息量太大,会在链路层中被分片,影响传输效率。

  • 如果一个应用场景重性能甚于重完整性和安全性,那么适合于udp,比如多媒体应用,缺一两帧不影响用户体验,但是需要流媒体到达的速度快,因此比较适合用udp

  • 如果要求快速响应,那么udp听起来比较合适

如果又要利用udp的快速响应优点,又想可靠传输,那么只能考上层应用自己制定规则了。
常见的使用udp的例子:ICQ,QQ的聊天模块。

以qq为例的一个说明(转载自知乎)

登陆采用TCP协议和HTTP协议,你和好友之间发送消息,主要采用UDP协议,内网传文件采用了P2P技术。总来的说:

  1. 登陆过程,客户端client 采用TCP协议向服务器server发送信息,HTTP协议下载信息。登陆之后,会有一个TCP连接来保持在线状态。
  2. 和好友发消息,客户端client采用UDP协议,但是需要通过服务器转发。腾讯为了确保传输消息的可靠,采用上层协议来保证可靠传输。如果消息发送失败,客户端会提示消息发送失败,并可重新发送。
  3. 如果是在内网里面的两个客户端传文件,QQ采用的是P2P技术,不需要服务器中转。

因特网应用中用到的协议

nZuo6J.png

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

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

相关文章

【设计模式】设计模式的七大原则

目录标题4. 设计模式的七大原则4.1 开闭原则(对扩展开发,对修改关闭:需要接口和抽象类来实现)Demo: 搜狗输入法 的皮肤设计4.2 里氏替换原则(任何基类可以出现的地方,子类一定可以出现:尽量不要…

[Redis]-四种部署方式

森格 | 2022年11月 本文是对Redis部署方式的学习,主要学习基本原理,以及几种方式的优缺点。 一、部署方式概况 对于Redis的安装部署主要可以分为单机版、主从同步、Sentinel哨兵、Cluster集群部署四种方式,下面一起看下几种方式的优缺点。 二…

Python闭包

目录 变量作用域规则(LEGB规则) 闭包 闭包的用途 (一)读取函数内部的变量 (二)让函数内部的局部变量始终保持在内存中 (三)总结 变量作用域规则(LEGB规则) 在下面的实例中,我们定义一个测试函数,它读取…

112. 路径总和

文章目录2.示例3.答案①递归②BFS③DFS给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返…

智慧电力解决方案-最新全套文件

智慧电力解决方案-最新全套文件一、建设背景二、建设思路三、建设方案四、获取 - 智慧电力全套最新解决方案合集一、建设背景 电力能源是支撑整个社会运行的最重要基础体系之一。伴随着经济和社会生活的发展,人们对电力需求不断增长,同时随着能源需求日…

docker 安装 portainer 来管理容器 (记录 1)

docker 安装 portainer 来管理容器 (记录 1) 初docker 安装 portainer前置条件:安装docker下载镜像 portainer部署容器配置进入监控初 希望能写一些简单的教程和案例分享给需要的人 docker 安装 portainer 前置条件:安装docker…

【JavaSE】异常处理

文章目录什么是异常异常的分类异常的处理流程throw异常的抛出throws 和 try-catch捕获异常finally自定义异常类什么是异常 在生活中我们头疼脑热都是身体出现的异常,在代码中也是一样的,尽管程序员在写代码时已经非常追求完美,但是总会有一些…

【真北读书】弗兰克意义三途径,让你人生的意义不漂移

维克多弗兰克,意义疗法创始人,出生于奥地利维也纳一个贫困的犹太人家庭。弗兰克15岁时质疑化学老师说的生命只是化学燃料,开始思考生命的意义,曾学习弗洛伊德、阿德勒、海德格尔和尼采,在被囚禁之前,已形成…

终于有人把大数据的相关知识讲全了(大数据基础框架、数据库、大数据分析分布式技术),从入门到进阶全部涵盖了!

前言 经常有初学者在博客和微信问我,自己想往大数据方向发展,该学哪些技术,学习路线是什么样的,觉得大数据很火,就业很好,薪资很高。如果自己很迷茫,为了这些原因想往大数据方向发展&#xff0…

用VB设计年级人员管理系统

目 录 摘 要 I Abstract II 第一章 绪论 1 1.1 课题研究背景 1 1.2 课题研究目的和任务 1 1.3 课题研究的意义 2 1.4 论文的主要内容和章节安排 2 第二章 运行环境开发工具 3 2.1 运行环境 3 2.2 开发工具简介 3 2.2.1 VB6.0基础 3 2.2.2 SQL Server2000数据库基础 3 第三章 需…

【HDU No. 2874】 城市之间的联系 Connections between cities

【HDU No. 2874】 城市之间的联系 Connections between cities 杭电OJ 题目地址 【题意】 由于大部分道路在战争期间已被完全摧毁,所以两个城市之间可能没有路径,也没有环。 已知道路状况,想知道任意两个城市之间是否存在路径。若答案是肯…

11.一键分析你的上网行为(web页面可视化)

## 一键分析你的上网行为, 看看你平时上网都在干嘛? ## Chrome浏览器历史记录文件可视化### 简介**想看看你最近一年都在干嘛?看看你平时上网是在摸鱼还是认真工作?想写年度汇报总结,但是苦于没有数据?现在,它来了。*…

国外顶尖程序员手写,402页汉译版微服务与事件驱动架构开发手册

为什么用事件驱动型微服务? Marshall McLuhan认为,影响人类并给社会带来根本性变革的不是媒介的内容,而是与媒介的互动过程。在我们的集体参与下,报纸、广播、电视、互联网、即时通信和社交媒体改变了人类的互动方式以及社会结构…

JDK17新特性

一.JEP 409: Sealed Classes 1.1简介 官网链接sealed class 从如下官网的简介与描述可以看出,这个新特性的目的是为了限制类与接口的 被继承与实现,比如说我有个 A类,那么我现在限定只有 B,C,D三个类可以继承 那么就需…

DRM架构介绍(一)

1、 DRM简介(Direct Rendering Manager)传统linux显示设备驱动开发时,通常使用FB驱动架构,随着显卡性能升级:显示覆盖(菜单层级)、GPU加速、硬件光标,传统FB架构无法很好支持&#x…

activiti-bpmn-converter

activiti-bpmn-converter目录概述需求:设计思路实现思路分析1.BpmnXMLConstants2.BpmnXMLConverter3.StartEventXMLConverter4.EndEventXMLConverter参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full bu…

C++调用OpenCV实现图像平滑处理

1 前言 图像的平滑处理,也叫做模糊处理,是在尽量保留原始图像信息的情况下,抑制或去除图像内的噪声、降低细节层次信息等一系列过程。是一种操作简单但使用频率很高的图像处理方法。由于实际的图像索引方式,与我们常用的x和y轴的…

2022年 SecXOps 安全智能分析技术白皮书 学习笔记 免费下载地址

核心能力 为了加快安全分析能力更全面、更深入的自动化 ,SecXOps 的目标在于创建一个集成的用于 Security 的 XOps 实践,提升安全分析的场景覆盖率和运营效率。SecXOps 技术并不 015 SecXOps 技术体系 是 Ops 技术在安全领域的简单加和,SecXO…

postman拦截浏览器请求

postman可以去浏览器请求进行拦截,并将请求存放至集合。 原理 postman内部有捕获http请求流量的代理; postman app 监听这客户端程序或者设备发出的调用请求;postman 代理端会捕获到请求并把它转发到服务器;服务器将响应返回给p…

双非大学改考408,软件工程专业考研报考人数较少!

南昌航空大学是一所双非大学,位于江西省南昌市。南昌航空大学计算机学科评估没有,软件工程学科评估C,计算机实力在双非大学中也并不算强。南昌航空大学今年计算机考研大变化,软件学院的所有专业(包括:软件工…