TCP协议详解

news2024/11/27 3:14:30

1.TCP的准备条件

在古代的时候,古人们经常写书信进行交流,写书信的前提是你要知道这份信是要寄给谁

在网络中,我们通过ip+端口号找对目标对象,但是现在网站一般会对ip+端口注册一个域名,所以我们一般就是对域名进行查找,但是虽然我们看到通过域名找到了对应的网站,但是真的是我们看到的那样么?它又是通过什么方法将域名解析成ip+端口呢?

  1. 解析URL

  • 生成发送给web的请求信息

  1. DNS域名解析

DNS:DNS服务器专门保存了Web服务器域名与ip对应关系

DNS域名解析过程如图所示,就好比及时一个刚毕业的程序猿,你刚到公司,公司给你了一台全新的电脑,但是你需要首先对电脑进行开机维修,于是你去找了人事部的老张,老赵让你去找维修部,于是你又去找了维修部,但是维修部说,新人的电脑需要去找某部,于是你又去找了某部,最后解决了这个问题

2.TCP协议传输过程

1.请求头的组织结构

  1. 源端口和目标端口是为了确定发送对象和接收对象

  1. 序号是为了防止包乱序

  1. 确认号是为了确认接收对象是否接收到了数据

  1. syn-- 发起一个连接 ACK--恢复 RST--重新连接 FIN-- 结束连接 URG--紧急位 PSH--有DATA数据传输

  1. 三次挥手(连接)

  1. 客户端向服务端发送第一次请求,判断服务器是否可正常进行连接

  1. 服务端接收到后,向服务端发送请求,判断服务器是否可以正常发送数据

  1. 客户端接收到信息再次发送请求,表明成功进行连接(双方都有数据传输的能力)

如图所示:

  1. 一开始客户端和服务端都是处于CLOSE状态,先是服务器监听到裂开某个接口,随后处于LISTEN状态

  1. 客户端发起连接,发送SYN以及版本seq,随后处于SYS_SENT状态

  1. 服务端接收到连接请求,返回给客户端SYN以及服务端的ACK,随后处于SYN_RCVD状态

  1. 客户端接收到服务端发送的请求,接收到客户端发送的ACK 以及SYN,处于ESTABLISHED状态

  1. 服务端接收到了客户端发送的ACK、SYN,随后也处于ESTABLISHED状态

为什么是3次握手,而不是2次握手或者是4次握手?

  1. 三次握手才可以避免重复历史连接的初始化

  1. 三次就可以同步双方的初始序列号

  1. 可以避免资源的浪费

  1. 怎么避免历史连接?

网络的环境的错综复杂的,往往不是先发先到,而是取决于很多的因素,有可能旧的数据包比新的数据包更早先到主机,三次握手是怎么样进行避免这样的情况出现的呢?

是否还记得我们在上一个图中提起的版本号,它可是这里的主角

  1. 假如旧的数据包先比新的数据包到达服务端,服务端将旧的数据包的ACK、SYN发送给客户端

  1. 客户端接收到之后,判断为一个历史连接(序列号过期或者超时),向服务端发送RST请求终止这次连接

  1. 如果是2次连接则不可能避免历史重复连接这种情况的发生

  1. 同步双方初始序列号

序列号的作用

  • 接收方可以取出重复的数据

  • 接收方可以根据序列号进行按序接收

  • 可以对已被接收数据包进行标记

4次握手虽然也可以达到同步序列号,但是这种比较浪费资源

  1. 避免浪费资源

如果2次握手,当服务端给客户端发送SYN请求,如果SYN信息被阻塞 ,客户端没有向服务端发送ACK,于是服务端就不确定客户端是否成功接收,所以不断的对客户端发送SYN,SYN堵塞,堆积在一块容易造成资源浪费

2次握手解决不了同步序列号以及重复历史连接问题,4次握手对资源是一种浪费

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

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

相关文章

minikube安装与运行(阿里云环境运行)

说下为啥选择云环境,最开始在本地电脑上安装的minikube,但是由于国内的网络访问不了谷歌的镜像仓库,安装ingress-nginx或者其他插件时着实的恶心。要不翻墙,要不自己搭建个镜像仓库。最终决定用阿里云境外的节点,按小时…

Windows操作系统C盘快速扩容工具推荐

Windows 系统C 盘扩容教程 1️⃣前言 大家在使用电脑过程中,随着时间的推移,经常会发现C盘空间爆红的情况,主 要原因是电脑软件在使用过程中产生的缓存文件或者日志文件大部分都会存储在C盘,这样时间一久,C盘的存储空…

不联网新华字典

介绍 首页字典 更多 包含内容 内容对应Json数据文件百家姓baijiaxing.json曹操诗集caocao.json弟子规dizigui.json成语idiom.json论语lunyu.json纳兰性德诗集nalanshiji.json千家诗qianjiashi.json千字文qianziwen.json三字经-传统版sanzijing_ct.json三字经-新版sanzijing_x…

「STM32入门」TIM定时中断

定时器的简介 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断,在中断内可以执行中断事件不仅具备基本的定时中断功能,而且还包含内外时钟源选择,主从触发模式,输入捕获,输出捕获&#xff…

MySQL调优笔记——慢SQL优化记录

上周,项目出现线上问题,在这家公司做的是一个SAAS平台,总用户量大约10万人; 经过排查,发现是SQL问题,导致数据库响应慢,进而拖垮了整体服务; 通常,查询耗时较长的SQL涉…

我在windows10下,使用CMake gui 编译krita源码,CMake gui报错:LibMyPaint_DIR-NOTFOUND

系列文章目录 文章目录系列文章目录前言一、原因二、解决1.引入库前言 我在windows10下,使用CMake gui 编译krita源码 where is the source code:E:/krita-dev/krita where to build the binaries:E:/krita-dev/krita_camke current generator:MinGW Makefiles 分别…

ios证书申请流程

mac电脑-钥匙串-请求证书-得到CertificateSigningRequest 2.创建Identifiers (1) (2) (3) (4) 如要接推送等 勾:Push Notifications 如要生成universal links 勾:Associated Domains 3.创建Certificates 注意:需…

银行数字化转型导师坚鹏:《银行保险监管统计管理办法》

《银行保险监管统计管理办法》 ——“监”听则明 护航银行高质量发展课程背景: 很多金融机构存在以下问题: 不清楚《银行保险监管统计管理办法》出台背景? 不知道如何理解《银行保险监管统计管理办法》相关规定? 不清楚如何落…

UI设计师都在用这5个网站,赶紧马住~

本期推荐5个UI设计师常用的素材、学习网站,设计师们赶紧收藏~ 1、菜鸟图库 https://www.sucai999.com/searchlist/UIsheji----all-0-0.html?vNTYxMjky 菜鸟图库提供了超多免费设计素材,在这里你可以找到平面、UI、电商等设计类素材,还有大…

4.2和4.3、MAC地址、IP地址、端口

计算机网络等相关知识可以去小林coding进行巩固(点击前往) 4.2和4.3、MAC地址、IP地址、端口1.MAC地址的简介2.IP地址①IP地址简介②IP地址编址方式③A类IP地址④B类IP地址⑤C类IP地址⑥D类IP地址⑧子网掩码3.端口①简介②端口类型1.MAC地址的简介 网卡…

面试如何脱引而出?Redis字符串底层原理你掌握了吗

今天我们讲解字符串的底层原理,属于进阶内容,能回答出来可以秒杀80%的面试者。‍大家都知道Redis有5种基本数据类型,但是你知道每种数据类型对应的底层编码或者数据结构是什么样的吗?这在面试中是一个有区分度的问题,如…

北京E4432B信号发生器

E4432B 安捷伦|Agilent E4432B ESG-D系列 3G高频数字信号源250KHz-3GHz 品  牌: Agilent简单介绍频率范围:E4430B 250K-1GHzE4431B 250K-2GHzE4432B 250K-3GHzE4433B 250K-4GHz 18320918653供单信道和多信道CDMA用的测量卡用于I和Q的20 MHz射频带宽…

搞懂 API :API 测试中常见的问题及处理办法

API测试是Web服务质量保证的重要环节之一。它可以有效地检查API是否符合预期,但在操作中也经常遇到各种问题。本文将介绍API测试中常见的问题以及如何解决它们。 接口错误码不清楚或无法处理 接口开发人员往往会为其API定义错误码来表示特定的错误类型,…

在新电脑上重启自己的django+vue项目遇到的数据库和Nodejs问题

数据库问题 今天在新电脑上重启自己备份的项目文件,迁移数据库的时候一直出现这个问题,运行代码也是这个问题。很奇怪,明明是不出错的代码做的备份怎么会出问题? 找了一下午,终于晚上把问题解决了。 问题 1、首先是这个问题 2、再往上追溯,发现是这里的问题 3、在原…

学习实践-Alpaca-Lora (羊驼-Lora)(部署+运行)

Alpaca-Lora模型GitHub代码地址 1、Alpaca-Lora内容简单介绍 三月中旬,斯坦福发布的 Alpaca (指令跟随语言模型)火了。其被认为是 ChatGPT 轻量级的开源版本,其训练数据集来源于text-davinci-003,并由 Meta 的 LLaMA …

11-FastDFS

一 为什么要使用分布式文件系统 单机时代 初创时期由于时间紧迫,在各种资源有限的情况下,通常就直接在项目目录下建立静态文件夹,用于用户存放项目中的文件资源。如果按不同类型再细分,可以在项目目录下再建立不同的子目录来区分…

Verilog | 轮询仲裁

仲裁 当多个源和用户需要共享同一资源时,需要某种仲裁形式,使得所有用户基于一定的规则或算法得到获取或访问共享资源的机会。 仲裁方案 严格优先级轮询 根据优先级的差异,用户访问共享资源的机会也不同。低优先级的用户可能时钟无法得到资…

数据智能服务商奇点云完成近亿元C2轮融资

奇点云集团宣布已于2022年底完成近亿元C2轮融资,余杭国投领投,中银渤海基金跟投。 截至目前,奇点云共获近3亿元C轮融资。C轮领投方包括泰康人寿(旗下泰康资产执行)、余杭国投,跟投方包括字节跳动、德同资本…

九龙证券|巴菲特又出手了!嗅到了什么?日本央行新行长发声

巴菲特或再发日元债,嗅到了什么? 有商场消息称,知情人士泄漏,沃伦巴菲特旗下伯克希尔哈撒韦已开端就出售日元债券向投资者征求意见。这似乎印证了稍早之前的信息,此前,据彭博报导,伯克希尔哈撒韦…

实验手册 - 第5周Pair RDD与分区

目录标题实验1实验2实验3实验4实验5import findspark findspark.init() from pyspark import SparkContextsc SparkContext()实验1 实验1:已知内存数据源 list01 [1, 2, 3, 4, 11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44, 51, 52, 53, 54] …