首页 > 其他分享 >网络原理之TCP

网络原理之TCP

时间:2023-08-19 13:00:55浏览次数:42  
标签:重传 ACK 应答 网络 TCP 序号 原理 报文

TCP(Transmission Control Protocol) 传输控制协议 :对数据的传输进行详细的控制

TCP协议段格式

网络原理之TCP_TCP

TCP报文 = TCP报头 + TCP载荷

选项之前的长度固定20个字节

TCP并不像UDP长度固定8个字节,长度不固定

首部长度:描述Tcp报头具体有多长 

选项:相当于对TCP报文的一些属性进行解释说明

TCP报头长度 = 首部长度值 * 4 (字节);

选项长度 = 首部长度 - 20 字节

保留: 保不齐以后要有,先占个位置

TCP为什么要保留?

为了以后的扩展做准备

对于网络协议来说,进行扩展升级成本是极高的,全世界有几百亿的上网设备,想要升级,就需要对这些设备的操作系统同步升级,都支持升级后的协议.

TCP的内部一些工作机制 

10个比较核心的机制

一.确认应答

网络原理之TCP_TCP_02

由于网络延时,收到的信息可能存在变数

网络原理之TCP_数据_03

网络上后发先至是客观存在的,那我们如何来避免?

网络原理之TCP_TCP_04

我们引入了序号,即使当前的数据乱了,也能根据序号,区分当前应答报文针对哪一个数据

网络原理之TCP_数据_05

任何一条数据都是有序号的

只有应答报文(ACK)才有确认序号,而普通报文在确认序号字段无意义

ACK标志位为1是表示该报文是应答报文, 标志位为0是表示该报文就不是应答报文

网络原理之TCP_数据_06

主机1 对 主机2 发送一个消息,主机2收到后就会返回一个应答报文(ACK),主机1收到应答后,才能知道主机2收到了刚才发的数据

TCP的字节序号是依次累加的,每一个TCP数据报报头填写的序号只需要写TCP数据的头一个字节的序号即可

TCP进行可靠传输,最主要的就是靠确认应答机制,通过应答报文可以让发送方知道是否传输成功

进一步引入序号,确认序号,对多组数据进行区分

二.超时重传

如果发生丢包(发的数据丢了 或者返回的ACK丢了), 丢包是一个概率性事件,那么重新发送一下数据报,是有极大的概率传输成功的

超时重传:超过一定时间未响应就重新传输

那么对于多次传输的数据TCP是有去重的功能

TCP存在一个 接收缓冲区 这样的一个存储空间(接收方操作系统的一段内核)

根据数据的序号,TCP很容易识别当前接收缓冲区里的两条数据是否重复,如果重复直接把后来的数据丢掉,保证应用程序读取到的数据一定是不重复的

TCP使用接收缓冲区,对收到的数据进行重新排序,保证应用程序读到的数据是有序的

重传到达一定的次数时就不会重传了,认为网络出现了故障,TCP接下来会尝试重置连接,如果重置失败就彻底断开连接

可靠传输是TCP最核心的部分

TCP通过确认应答和超时重传体现可靠传输的,

其中确认应答描述的是传输顺利的情况,而超时重传描述的是传输出现问题的情况,

两者相互配合,共同支撑整体TCP的可靠性


三.连接管理

网络原理之TCP_TCP_07

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

网络原理之TCP_数据_08


网络原理之TCP_数据_09


本质进行四次信息传递,当时中间两次一定要进行合并(封装封装分用两次肯定比一次封装分用成本更高)

网络原理之TCP_数据_10

服务器的系统内核接收到SYN后,会立即发送ACK,已经SYN;

三次握手的意义:

1.让通信双方各自建立对对方的"认同"

2.验证各自的发送能力和接收能力是否完整

3.在握手过程中,双方协商一些重要参数

而在TCP通信过程中需要通信双方之间相互同步,就可以利用三次握手的机会进行数据的同步

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

网络原理之TCP_TCP_11


CLOSE_WAIT:阻塞等待客户端数据请求

TIME_WAIT:出现主动断开连接的一方

如果客户端是主动断开连接的,那么出现TIME_WAIT表示4次挥手结束 ,

对于TIME_WAIT最大等待时间,约定2MSL(两个节点之间数据传输消耗的最大时间) 通常情况下MSL为60s

如果最后一个ACK丢包怎么办?

三次连接和四次挥手都会超时重传,TIME_WAIT等待一段时间,就是为了处理最后一个ACK丢包的情况,能够收到重传的FIN后,进行ACK响应

四.滑动窗口

在保证可靠性的基础上,加强传输效率

滑动窗口本质上:降低确认应答,等待ACK消耗的时间, 不需要等待,批量发送一组数据,然后用一份时间,等待多条数据的ACK应答报文

窗口大小:不需要等待就能直接发送最大的数据量

网络原理之TCP_数据_12

此时2000就是窗口大小

丢包

1.ACK丢了

网络原理之TCP_数据_13

不需要做任何事情

确认序号:表示该序号往前的所有数据都已经确认到达

只要后面结束到ACK 确认序号4001 就包含了前面的ACK信息

2.数据丢了

网络原理之TCP_数据_14

若1001~2000丢包,那么接下来2001~3000下次返回的ACK确认序号还是1001

收到三次同样的确认应答时 发送方则进行重新发送


如果当前的传输数据十分密集,则按照滑动窗口进行快速重传处理丢包

如果当前的传输数据很稀疏,则使用超时重传的方式处理丢包

五.流量控制

滑动窗口,窗口越大,传输效率就越高,但是窗口不能无限大的

发送方的发送速度,不能超过接收方的处理能力

流量控制:根据接收方的处理能力,协调发送方的发送速率

我们如何衡量接收方的处理能力?

可以看看接收方的接收缓冲区的剩余空间大小

网络原理之TCP_数据_15

TCP首部中有一个16位窗口,就是存放了窗口大小信息;

16位数字最大表示6553,那么TCP窗口最大就是65535么?

实际上,TCP首部选项中还包含了一个窗口扩大因子M,实际窗口大小是窗口的值左移 M位;


标签:重传,ACK,应答,网络,TCP,序号,原理,报文
From: https://blog.51cto.com/u_16166203/7148870

相关文章

  • 基于JAVA+hadoop网络云盘上传下载系统-计算机毕业设计源码+LW文档
    摘 要随着信息技术的发展,管理系统越来越成熟,各种企事业单位使用各种类型的管理系统来提高工作效率,从而降低手工劳动的弊端。网络云盘能够为广大用户提供安全、免费、方便的存储空间,还能实现资源的共享,但是网络云盘还是存在不足,如何为用户提供更简单明了、便于操作的云盘空间就......
  • centos7使用yum网络安装
    创建一个空文件data首先进入/etc/yum.repos.d将原来文件转移走,如下cd/etc/yum.repos.dmv ./* /date在编辑一个repo结尾的文件vimcentos.repo然后使用windows浏览器输入阿里https://mirrors.aliyun.com/repo/下载centos-7.repo下载好了用记事本打开,复制粘贴到centos.repo文件......
  • 深度学习(Lenet网络)
    业余时间重新学习一下深度学习,先从基础网络开始,一点一点积累。Lenet网络模型:下面程序中输入的数据是28*28的,结构和原始稍微有点不一样。训练代码:importtorchimporttorch.nnasnnimporttorch.optimasoptimfromtorch.utils.dataimportDataset,DataLoaderfromto......
  • SSL原理、生成SSL密钥对、Nginx配置SSL
    1SSL原理 2生成ssl密钥对2.1进入指定目录并生成私钥文件[root@jimmylinux-001~]#cd/usr/local/nginx/conf[root@jimmylinux-001conf]#opensslgenrsa-des3-outtmp.key2048GeneratingRSAprivatekey,2048bitlongmodulus..............................................
  • 网络流专项
    飞行员配对方案问题二分图最大匹配模板,最大流即可.负载平衡问题显然,当库存比平均数大时,这个仓库就应当向外输送货物;反之,这个仓库就应该接收货物.每一个仓库都要接收货物或输出货物,因此拆成两个点,一个输出,一个接收.当库存比平均值大时,超级源点向该点的输出......
  • 智安网络|零信任安全框架:保障数字化时代网络安全的最佳实践
    随着数字化时代的快速发展,网络安全问题变得越来越突出。传统的安全防御模式已经不再适用于现代复杂的网络环境中。为了应对日益增长的网络威胁,零信任安全模式应运而生。一、什么是零信任?零信任是一种安全框架和哲学,它基于一个简单的原则:不信任任何用户或设备,即使它们已经位于网络内......
  • 直播平台源码之实现网络请求的方法
    直播平台源码开发中如果你不会网络请求,那么你开发的应用软件就是一具没有灵魂的枯骨。当你下载完软件后会要求你给与权限,否则就没办法使用,网络请求也需要对应的权限,否则就没法进行联网操作。在直播平台源码开发中首先在AndroidManifest.xml文件中添加网络请求权限要在manifest......
  • 振弦采集仪模拟信号转数字信号的工作原理
    三河凡科科技学习飞讯振弦采集仪模拟信号转数字信号的工作原理振弦采集仪是一种非常重要的测试仪器,其主要作用是将物理系统中的震动信号转换成数字信号,并且进行进一步的信号处理和分析。本文将详细介绍振弦采集仪模拟信号转数字信号的工作原理。 1.模拟信号采集振弦采集仪......
  • 降噪耳機原理介紹
    1.降噪原理:主要是主动降噪在起作用。主动降噪,简称ANC(英文activenoisecancelling),并不是把噪音给消除掉,而是通过抵消的方式实现降噪。当降噪耳机的麦克风监测到检测到外部噪音,通过芯片产生一个与噪音反相的白噪音的方式,使两者叠加,从而降低噪音的波幅。简单理解就是,如果一个数字为1......
  • 深度云化时代,什么样的云网络才是企业的“心头好”?
    科技云报道原创。近年来企业上云的快速推进,对云网络提出了更多需求。最初,云网络只是满足互联网业务公网接入。随着移动互联网的发展,企业对云上网络安全隔离能力和互访能力、企业数据中心与云上网络互联、构建混合云的能力,以及在云上多地域部署业务后的多地域网络互联能力等,都推动着......