五、传输层

(一)TCP传输控制协议

可靠的、面向连接的字节流服务,全双工,有端口寻址功能

1、TCP的三种机制

1.使用序号对分段的数据进行标记,便于调整数据包

2.TCP使用确认、校验和和定时器系统提供可靠性

3.TCP使用可变大小的滑动窗口协议进行流量控制,在传输实体缓冲区进行排序和重传纠错

2、TCP报文首部格式

源端口

目的端口

序列号

确认号

报头长度

保留

URG

ACK

PSH

RST

SYN

FIN

窗口

校验和

紧急指针

选项

数据

源端口、目的端口:长度为16位,端口用于标识应用程序,端口范围0-65535

序列号:长度为32位

确认号:长度为32位,如果确认号是N,则表示N-1之前(包括N-1)的所有数据都已正确收到

报头长度:即数据偏移字段,长度为4位

保留字段:长度为6位

紧急URG:紧急有效,需要尽快送达

确认ACK:建立连接后的报文回应,ACK设置为1

推送PSH:接收方应尽快将这个报文段交给上层协议,无需等缓存满

复位RST:复位为初始状态,重新连接

同步SYN:发起连接

终止FIN:释放连接

窗口:长度为16位,用来进行流量控制,这个值是本机期望下一次接收的字节数

校验和:长度为16位,对整个TCP报文首部进行校验,包括TCP头部和TCP数据

紧急指针:长度为16位

选项:长度可变到40字节,为保证报头长度是32位的倍数

3、TCP三次握手建立连接

SYN:已经发出了连接请求

ACK确认

SEQ自身序号

SYN-SENT:连接正处于已主动发出连接建立请求

LISTEN:处于连接监听状态

ESTABLISHED:连接已经建立

1表示同意建立连接,0表示拒绝

4、TCP四次挥手释放连接

FIN:已经发出了释放请求

5、TCP拥塞控制

TCP拥塞控制,每个源端判断当前网络中有多少可用容量,从而知道他可以安全完成传送的分组数。拥塞控制就是防止过多的数据注入网络,避免网络中间设备过载而发生拥塞。

TCP拥塞控制机制:

(1)超时重传计时器

重传是保证TCP可靠的重要措施。TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的时间到了,但还没有收到确认,就重传这一报文段。

重传时间与往返时间、平均时延、时间偏差等有关。

(2)慢启动

发送方在接收到确认之前逐步扩大窗口的大小,按1、2、4、8等指数规律翻倍,最后到达门限阈值。出现超时,将拥塞窗口回到1,再次开始慢启动。

(3)拥塞避免

窗口到达门限阈值以后,进入拥塞避免阶段,TCP采用线性增加方式放大窗口,按照+1递增。发生拥塞,门限阈值减半,再发生再减半,按指数规律成倍减半。

(4)快速重传

发送端一连收到3个重复的ACK,就开始重传,不等计时器。

(5)可变滑动窗口

(6)选择重发ARQ

(二)UDP用户数据报协议

不可靠的、无连接的数据报服务,无差错流控机制,有端口寻址功能,开销较小。

在传送数据较少且较小的情况下,UDP比TCP更加高效

1、UDP报文首部格式

源端口号(16位)

目的端口号(16位)

长度(16位)

校验和(16位)

数据

源端口号、目的端口号:0-65535

长度:标明UDP头部和UDP数据的总长度字节

校验和:对UDP头部和UDP数据进行校验,有错就丢弃,相当于TCP的有错重传机制,UDP的校验和是可选项,TCP的校验和是必选项

(三)TCP与UDP比较

同:TCP和UDP均提供端口寻址

异:TCP支持数据传输,UDP支持音视频传输

UDP:SNMP、“STDD”、TFTP、DHCP、DNS

TCP:SMTP、POP3、HTTP

(四)端口

端口用于标识主机进程,范围0-65535

分为:系统端口、登记端口、客户端使用端口

1、系统端口

范围0-1023

协议号

名称

功能

20

FTP-DATA

FTP数据传输

21

FTP

FTP控制

22

SSH

SSH登录

23

TELNET

远程登录

25

SMTP

简单邮件传输协议

53

DNS

域名解析

67

DHCP

DHCP服务器开启,用来监听和接收客户请求信息

68

DHCP

客户端开启,用于接收DHCP服务器的消息回复

69

TFTP

简单FTP

80

HTTP

超文本传输协议

110

POP3

邮局协议

143

IMAP

交互式邮件存取协议

161

SNMP

简单网管协议

162

SNMP(trap)

SNMP trap报文

2、登记端口

范围1024-49151,为没有熟知端口号的应用程序使用,必须在IANA(互联网数字分配机构)登记避免重复

3、客户端使用端口

范围49152-65535,仅在客户进程运行时使用,使用完毕后,进程释放端口

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ACK Net Exporter 与 sysAK 出击:一次深水区的网络疑难问题排查经历

作者:谢石、碎牙 不久前的一个周五的晚上,某客户A用户体验提升群正处在一片平静中,突然,一条简短的消息出现,打破了这种祥和: “我们在ACK上创建的集群,网络经常有几百毫秒的延迟。" 偶发…

C++模板基础(四)

函数模板&#xff08;四&#xff09; ● 函数模板的实例化控制 – 显式实例化定义&#xff1a; template void fun(int) / template void fun(int) //header.h template<typename T> void fun(T x) {std::cout << x << std::endl; }//main.cpp #include&quo…

Python(白银时代)——文件操作

文件的基本操作 概念 在计算机中&#xff0c;文件是以 二进制 的方式保存在磁盘上的 文本文件 和 二进制文件 文本文件&#xff08;用记事本打开能直接能看懂的&#xff09; 可以使用 文本编辑软件查看 本质上还是二进制的,比如 Python的源码文件 二进制文件&#xff08;用…

并发编程(六)-AbstractExecutorService源码分析

一、AbstractExecutorService简介AbstractExecutorService是一个抽象类&#xff0c;实现了ExecutorService接口&#xff0c;提供了线程池的基本实现。它是Java Executor框架的核心类&#xff0c;提供了线程池的基本操作&#xff0c;如提交任务、管理线程池、执行任务等。自定义…

阻塞队列(BlockingQueue)的实现和使用

阻塞队列&#xff08;BlockingQueue&#xff09; 文章目录阻塞队列&#xff08;BlockingQueue&#xff09;阻塞队列的梗概解耦合和削峰填谷java代码实现一个阻塞队列阻塞队列的梗概 众所周知&#xff0c;队列是一种数据结构&#xff0c;符合先进先出的结构&#xff0c;先进先出…

【动态绘图】python可视化--丝滑版

✅作者简介&#xff1a;在读博士&#xff0c;伪程序媛&#xff0c;人工智能领域学习者&#xff0c;深耕机器学习&#xff0c;交叉学科实践者&#xff0c;周更前沿文章解读&#xff0c;提供科研小工具&#xff0c;分享科研经验&#xff0c;欢迎交流&#xff01;&#x1f4cc;个人…

鼎桥通信,拥抱基础创新的“高灵活性”时代

作者 | 曾响铃 文 | 响铃说 伴随数智化转型成为时代变革大方向&#xff0c;一批走在时代前端的数智化转型企业应运而生&#xff0c;不断丰富5G、物联网等新兴技术的应用场景&#xff0c;构建万智互联的产业生态。作为国内通信领域的引领者&#xff0c;鼎桥通信技术有限公司&a…

AF染料试剂Alexa fluor 680 PEG Biotin,AF680 PEG Biotin,荧光强度稳定利于多种荧光标记

文章关键词&#xff1a;AF染料试剂&#xff0c;AF680&#xff0c;PE-Biotin衍生物Alexa fluor 680 PEG Biotin&#xff0c;AF680 PEG Biotin | Alexa fluor 680-PEG-生物素| CAS&#xff1a;N/A | 纯度&#xff1a;95%试剂参数信息&#xff1a; CAS&#xff1a;N/A 外观&am…

docker使用

dokcer 安装 # 1、yum 包更新到最新 yum update # 2、安装需要的软件包&#xff0c; yum-util 提供yum-config-manager功能&#xff0c;另外两个是devicemapper驱动依赖的 yum install -y yum-utils device-mapper-persistent-data lvm2 # 3、 设置yum源 yum-config-manager …

精确性和准确性是两码事儿

准确性(Accuracy)是与正确答案的接近程度&#xff0c;精确性(Precision)是对这个答案的分辨率。 假设&#xff0c;你问我&#xff0c;”现在几点了?” 我抬头看看太阳&#xff0c;然后估算了一下&#xff0c;回答道 “现在是上午 10 点 35 分 22.131 秒” 我给出的是一个足…

Nacos配置中心优雅配置JSON数据格式

在我业务开发中&#xff0c;需要在配置中心配置Json数据&#xff0c;返回给前端。因Nacos默认不支持Json格式配置&#xff0c;需要搭配监听器获取配置中心Json数据&#xff0c;返回给客户端。二、搭配Nacos配置Josn数据1. bootstrap.ymlserver:port: 9000 spring:application:n…

Vue使用ElementUI对table的指定列进行合算

前言 最近有一个想法&#xff0c;就是记录自己花销的时候&#xff0c;table中有一项内容是花销的金额。然后想在table的底部有一项内容是该金额的总计。 然后我就顺着elementui的table组件寻找相关的demo&#xff0c;还真发现了一个这样的demo。 对于这个demo&#xff0c;官方…

SSH框架整合教程

工程目录结构如下&#xff1a; 本工程只介绍SSH整合的基本流程&#xff0c;所以没有写接口 1. 导入jar包 <dependencies><!--hibernate包--><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId>…

【各种安装2】

各种安装2一、八阶段-第四章-案例导入说明1.安装MySQL1.1.准备目录1.2.运行命令1.3.修改配置1.4.重启2.导入SQL3.导入Demo工程3.1.分页查询商品3.2.新增商品3.3.修改商品3.4.修改库存3.5.删除商品3.6.根据id查询商品3.7.根据id查询库存3.8.启动4.导入商品查询页面4.1.运行nginx…

Linux线程同步与互斥(二)/生产消费者模型

⭐前言&#xff1a;本文会先后讲解生产消费者模型、条件变量和基于阻塞队列的生产消费者模型。 1.生产消费者模型 什么是生产消费者模型&#xff1f; 认识生产消费者模型 使用学生&#xff08;消费者&#xff09;&#xff0c;超市&#xff0c;供货商&#xff08;生产者&…

C++ 26 常用算法

目录 一、概述 1.1 常用遍历算法 1.1.1 算法简介 1.1.2 for_each遍历算法 1.1.3 transform遍历算法 1.2 常用查找算法 1.2.1 算法简介 1.2.2 find 查找算法 1.2.3 find_if 查找算法 1.2.4 adjacent_find 查找算法 1.2.5 binary_search 查找算法 1.2.6 count 查找算法…

【面试题】JS的一些优雅写法 reduce和map

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 JS的一些优雅写法 reduce 1、可以使用 reduce 方法来实现对象数组中根据某一key值求和 …

LFM雷达实现及USRP验证【章节3:连续雷达测距测速】

第一章介绍了在相对速度为0时候的雷达测距原理 目录 1. LFM测速 1.1 雷达测速原理 1.2 Chrip信号测速 2. LFM测速代码实现 参数设置 仿真图像 matlab源码 代码分析 第一章介绍了在相对速度为0时候的雷达测距原理&#xff0c;第二章介绍了基于LFM的雷达测距原理及其实现…

数据结构第十一期——线段树的原理和应用

目录 一、前言 二、线段树的概念 1、区间最值问题RMQ (Range Minimum/Maximum Query) &#xff08;1&#xff09;暴力法 &#xff08;2&#xff09;高效的办法&#xff1a;线段树 &#xff08;3&#xff09;把数列放在二叉树上 &#xff08;4&#xff09;查询最小值的复…

43-二叉树练习-LeetCode236二叉树的最近公共祖先

题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以是它…