传输层协议介绍(三次握手,四次挥手)

news2024/10/6 18:22:55

一.传输层协议介绍

1.TCP协议概念

①面向连接网络协议

②是指通信双方之间在进行通信之前要先建立连接。比如打电话,双方通话前要先建立连接。

③TCP协议是面向连接的,可靠的进程到进程通信的协议,TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接收缓存,用来临时存储数据。

2.UDP协议概念

①面向无连接网络协议

②是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包送到网络线路上,由系统自主选定路线进行传输,比如:QQ发送消息

③UDP协议是无连接的、相对于TCP是不可靠的传输层协议,发送端不关心发送的数据是否到达目标主机、数据是否出错等,收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。所以它的传输数据的速度更快,效率更高。

二.TCP协议

1.TCP协议介绍

TCP是面向连接的、可靠的进程到进程通信的协议

TCP提供全双工服务,即数据可在统一时间双向传输

TCP报文段

TCP将若干个字节构成一个分组,叫报文段

2.TCP报文段格式

2.1报文段

2.2各字段说明

①源端口号:发送方进程的端口号

②目标端口号:接收端进程的端口号

解释:接收端受到数据段后,根据这个端口号来确定把数据送给哪个应用程序的进行

③序号:发送端为每个字节进行编号,便于接收端正确的重组

解释:当TCP从进程接收数据字节时,把它们分片成数据段存储在发送缓存中,并对每一个字节进行编号。当数据到达目的地后,接收端会按照这个序号将数据重新排列,保证数据的正确性。

④确认号:对发送端的确认信息

解释:接收端响应消息时,将会用它来告诉发送端这个序号之前的数据段都已经收到,如果确认号是x,就是表示前x-1个数据段都已经收到。

⑤首部长度:用它可以确定TCP首部数据结构的字节长度。一般情况下TCP首部是20字节,但是首部长度最大可以扩展为60字节

控制位

URG:紧急位

解释:当URG=1时,标明紧急指针有效(要和紧急指针配合使用)。它告诉系统此报文段中有紧急数据,应尽快传送,把紧急数据插入到本报文段数据的最前面。相当于高优先级的数据。

ACK:确认位

解释:当ACK=1时,确认号字段才有效,当ACK=0时,确认号无效,TCP中规定,在连接建立之后所有的传送的报文段都必须把ACK置为1.

PSH:急迫位

解释:在两个应用进程通信时,发送端希望接收端能立即响应,这时,TCP就可以使用急迫位PSH操作,发送时将PSH=1,并立即创建一个报文段发送出去,接收方收到PSH=1,就尽快的交付接收应用进程,而不再等整个缓存都填满了再向上交付。

RST:重置位

解释:当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输连接

SYN:同步位

解释:再连接建立时用来同步序号。当SYN=1时,且ACK=1时,表示这是一个连接请求报文段。对方若同意连接,则在响应的报文段中SYN=1和ACK=1,

FIN:断开位

解释:终止一个连接,当FIN=1时,表示此报文段发送方的数据以及发送完毕,并且要求释放传输连接。

⑦窗口大小:说明本地可接收数据段的数目。

解释:这个值大小是可以变的,当网络通畅时,接收端响应消息会将这个窗口值变大以加快传输速度,当网络不稳定时,减少这个值可保证网络数据的可靠传输。

⑧检验和:用来做差错校验

解释:字段检验的范围包括首部和数据这两个部分。数据段在发送时和到达目的地时,会进行校验和计算。若两次校验和一致,则说明数据基本正确,若不一致,则认为该数据已损坏,接收端将丢弃该数据

⑨紧急指针:配合URG使用,当URG=1有效

⑩选项:在TCP首部可以有多大40字节的可选信息。

3.TCP三次握手

TCP是面向连接的协议,就是说每次发送数据之前都要和对方建立一条可靠的连接,这个建立连接的过程分为3个步骤,就叫三次握手!

3.1三次握手步骤

①当客户端向服务器发送请求连接的报文时

seq序列号=x(x位随机)

SYN=1(表示发送连接请求)

②服务端收到客户端发来的请求报文后,同意建立连接,则向客户端发送确认报文

seq序列号=y(这时服务器也会产生一个序列号y,和客户端的序号不相关)

ack确认号=x+1(这时序列号x+1,表示确认收到了客户端的请求)

ACK=1(表示这是条确认请求)

SYN=1(同时也发送一个建立连接的请求)

③客户端进程收到服务端进程的确认后,还要想服务端给出确认,然后连接成功建立

seq序列号=x+1(这时客户端的序号为1)

ack确认号=y+1(表示收到服务器的连接请求)

ACK=1(表示这时确认报文)

3.2为什么是三次握手,不是二次握手,也不是四次握手

为什么不能是两次握手?
如果使用两次握手,客户端发送一个SYN数据包请求建立连接,服务器回复一个ACK 数据包确认收到请求并同意建立连接。在这种情况下,存在以下问题:
①没有确认客户端是否已经收到了服务器的响应: 虽然服务器知道客户端想要建立连接,但是它无法确定客户端是否成功接收到其确认信息。如果客户端没有收到这个确认信息,就会直等待并重新发送请求,导致资源浪费和连接不稳定。
②无法同步序列号: TCP连接需要双方同步初始序列号,以确保数据传输的顺序性和完整性两次握手不足以完成这一任务。

为什么不能是四次握手?
经过三次握手后,客户端和服务端都已确认对方能正确接收和发送数据,并且序列号也已经同步。再增加一次握手实际上并没有提供额外的信息或者提高可靠性,反而会延长连接建立的时间,降低效率。

4.TCP四次挥手

4.1四次挥手步骤

①当客户端向服务器发送断开请求

FIN=1(表示申请断开请求)

ACK=1(表示确认可以断开)

②服务器收到断开请求后回复确认信息

ACK=1(表示确认可以断开)

③服务器再向客户端发送断开请求

FIN=1(表示申请断开请求)

ACK=1(表示确认可以断开)

④客户端收到断开请求后恢复确认信息

ACK=1(表示确认可以断开)

4.2为什么是四次挥手,不是三次挥手

第一次挥手:客户端向服务端发送断开请求:FIN=1  ACK=1

表示客户端已经没有数据需要再发送给服务端了,此时进入到等待状态。

第二次挥手:服务端向客户端回复断开请求:ACK=1

表示服务端已经同意断开连接,但是不能立即断开,可能还有一些数据没有发送完成。

第三次挥手:服务端向客户端发送断开请求:FIN=1  ACK=1

表示服务端也没有数据向客户端进行发送了,申请断开连接,此时进入到等待状态。

第四次挥手:客户端向服务端回复断开请求:ACK=1

表示客户端同意服务端的断开请求,等待一段时间后,进行关闭。

以上:为什么第二次挥手和第三次挥手不进行重合,在三次握手中,这一步就进行了重合,那是因为在第二次挥手时,服务端必须要给客户端做出应答,不然客户端就会一直给服务端发出断开申请,但是做出回答之后又不能立即申请断开连接,因为可能服务端还有一些数据没有发完,所以需要等待一段时间后才能发出断开申请!

5.TCP超时重传

异常网络状况下(开始出现超时或丢包),TCP控制数据传输以保证其承诺的可靠服务。

TCP服务必须能够重传超时时间内未收到确认的TCP报文段。为此,TCP模块为每个TCP报文段都维护一个重传定时器,该定时器在TCP报文段第一次被发送时启动。如果超时时间内未收到接收方的应答,TCP模块将重传TCP报文段并重置定时器。至于下次重传的超时时间如何选择,以及最多执行多少次重传,就是TCP的重传策略。

6.TCP连接常用的端口号

三.UDP协议

1.UDP协议介绍

UDP是无连接、快速、效率高的传输协议

2.UDP报文段的格式

2.1报文段

2.2各字段解释

UDP长度:用来支指UDP的总长度,为首部长度加上数据长度

校验和:用来完成对UDP数据的差错校验,它是UDP协议提供的唯一的可靠机制

3.UDP连接常用的接口

四.telnet协议

远程管理协议,探测远端服务器端口是否打开

以下是等级权限:

五.wireshark

①选择捕获接口。一般都是选择连接到Internet网络的接口,这样才可以捕获到与网络相关的数据。否则,捕获到的其它数据对自己也没有任何帮助。

②使用捕获过滤器。通过设置捕获过滤器,可以避免产生过大的捕获数据。这样用户在分析数据时,也不会受其它数据干扰。而且,还可以为用户节约大量的时间。

③使用显示过滤器。通常使用捕获过滤器过滤后的数据,往往还是很复杂。为了使过滤的数据包再更细致,此时使用显示过滤器进行过滤。

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

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

相关文章

计网 - 一台主机上最多只能保持 65535 个TCP 连接吗

文章目录 Pre问题分析单一IP的服务端单一IP的客户端 Pre 高性能网络编程 - 关于单台服务器并发TCP连接数理论值的讨论 问题 一台主机上只能保持最多 65535 个 TCP 连接,正确吗? 先说结论: 这个说法不对,我们分服务器和客户端分…

2.操作符详解

1.10进制转二进制方法 所以125的二进制就是1111101 2.2进制转8进制: 从2进制序列中右边最低位开始向左每3个2进制位换算为一个8进制位,剩余不够3个2进制位的直接换算 例:01101011转为01 101 011 即1 5 3 即8进制的153 还原回去的话: 将3化为011放最右边,5化…

【C++进阶篇】二叉搜索数

目录 前言: 以后我们要学map,set,AVL,红黑数所以必须要有二叉搜索数做铺垫 1、二叉搜索树概念 2.二叉搜索树操作 1.二叉搜索树的查找 a、从根开始比较,查找,比根大则往右边走查找,比根小则…

QEMU源码全解析 —— virtio(5)

接前一篇文章: 本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM》源码解析与应用 —— 李强,机械工业出版社 特此致谢! 上一回以virtio balloon设备为例概述了具体的virtio设备、virtio PCI代理…

Proxmox创建Windows虚拟机

文章目录 下载ISO安装文件上传 下载ISO安装文件 下载地址:https://www.xitongzhijia.net/ 也可去官网进行下载 上传 将下载的ISO文件上传到Proxmox 选择ISO文件进行上传 上传后再ISO镜像中可以看到安装文件 点击创建虚拟机 填写名称,不能填写中文 镜…

使用NCNN在华为M5部署Yolov5

使用NCNN在华为M5平板部署Yolov5 一、NCNN二、下载解压NCNN三、下载ncnn-android-yolov5工程四、下载Android Studio[前提已经配置了jdk版本]1、安装NDK、Cmske,这个必须要安装,2、安装Android 五、构建工程六、修改源码七、重新ysnc project八、安装APP…

18个非技术面试题

请你自我介绍一下你自己? 这道面试题是大家在以后面试过程中会常被问到的,那么我们被问到之后,该如果回答呢?是说姓名?年龄?还是其他什么? 最佳回答提示: 一般人回答这个问题往往会…

IDEA中工具条中的debug按钮不能用了显示灰色

IDEA中工具条中的debug按钮不能用了显示灰色 1. 问题描述 IDEA上的DEBUG按钮突然变成了灰色: 2. 解决办法 一通搜索,终于找到解决办法 点击 File -> Project Structure如下图操作 3. 重启,解决 4. 参考 https://www.cnblogs.com…

linux下sys目录与proc目录的作用

sys目录作用 在Linux系统中,/sys目录是一个特殊的虚拟文件系统(sysfs),用于提供对内核和设备的运行时信息的访问。它是在内核中运行的驱动程序和子系统的接口,可以用于获取和配置系统的硬件和内核信息。 以下是/sys目…

Kubernetes实战(九)-kubeadm安装k8s集群

1 环境准备 1.1 主机信息 iphostname10.220.43.203master10.220.43.204node1 1.2 系统信息 $ cat /etc/redhat-release Alibaba Cloud Linux (Aliyun Linux) release 2.1903 LTS (Hunting Beagle) 2 部署准备 master/与slave主机均需要设置。 2.1 设置主机名 # master h…

2023年12月14日 十二生肖 今日运势

小运播报:2023年12月14日,星期四,农历十一月初二 (癸卯年甲子月丙午日),法定工作日。 红榜生肖:羊、狗、虎 需要注意:牛、马、鼠 喜神方位:西南方 财神方位&#xff…

004 Windows NTFS文件夹权限

一、NTFS文件权限: NTFS(New Technology File System)是Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式,提供长文件名、数据保护和恢复,能通过目录和文件许可…

实操Nginx(4层代理+7层代理)+Tomcat多实例部署,实现负载均衡和动静分离

目录 前言 一、tomcat多实例部署 步骤一:先安装jdk,设置jdk的环境变量,验证是否安装完成(192.168.20.8) 步骤二:安装tomcat(192.168.20.18) 步骤三:安装tomcat多实例…

微服务中如何保证接口的安全性?[基于DDD和微服务的开发实战]

大家好,我是飘渺。如果你的微服务需要向第三方开放接口,如何确保你提供的接口是安全的呢? 1. 什么是安全接口 通常来说,要将暴露在外网的 API 接口视为安全接口,需要实现防篡改和防重放的功能。 1.1 什么是篡改问题…

【Linux】多线程编程

目录 1. 线程基础知识 2. 线程创建 3. 线程ID(TID) 4. 线程终止 5. 线程取消 6. 线程等待 7. 线程分离 8. 线程互斥 8.1 初始化互斥量 8.2 销毁互斥量 8.3 互斥量加锁和解锁 9. 可重入和线程安全 10. 线程同步之条件变量 10.1 初始化条件变…

k8s安装Ingress-Nginx

目前,DHorse(https://gitee.com/i512team/dhorse)只支持Ingress-nginx的Ingress实现,下面介绍Ingress-nginx的安装过程。 下载安装文件 首先,需要匹配Ingress-nginx版本和kubernetes版本。 在https://github.com/kubernetes/ingress-nginx可…

【UE5 Niagara】烟雾弹效果

效果 步骤 1. 新建一个工程,创建Basic关卡 2. 新建一个Actor蓝图,这里命名为“BP_SmokeBomb” 打开“BP_SmokeBomb”,添加一个静态网格体和一个发射物移动组件,静态网格体使用圆柱模型 选中发射物移动组件,设置初始速…

XSS防御:内容安全策略 CSP工作原理、配置技巧与最佳实践

前言 公司部门安全合规改造计划,要求所有的Web站点统一添加CSP规则。对于CSP机制我只是之前在应付面试的时候背过相关的概念,并没有真正在项目中实践过。所以希望借助本次改造任务好好理解并实践CSP机制。 什么是CSP CSP的全称是 Content Security Po…

算法通关村第十三关—数字与数学高频问题(白银)

数字与数学高频问题 一、数组实现加法专题 1.1 数组实现整数加法 先看一个用数组实现逐个加一的问题。LeetCode66.具体要求是由整数组成的非空数组所表示的非负整数,在其基础上加一。这里最高位数字存放在数组的首位,数组中每个元素只存储单个数字。并且…

TrustGeo代码理解(二)test.py

代码链接:https://github.com/ICDM-UESTC/TrustGeo 一、加载检查点(checkpoint)并进行测试 # -*- coding: utf-8 -*-"""load checkpoint and then test """ 该脚本的目的是加载之前训练过的模型的检查点&am…