计算机网络 笔记 传输层
概述:
主要功能:
TCP:
特点***:
数据格式:
连接管理***:
建立连接(三次握手)
释放连接(四次挥手)
应用场景
UDP:
特点:
数据格式:
应用场景
概述:
传输层是计算机网络体系结构中的重要层次,主要负责在不同主机上的应用进程之间提供端到端的通信服务。
主要功能:
提供端到端的通信:传输层为应用层提供了进程到进程的逻辑通信服务,它通过端口号来标识不同的应用进程,使得不同主机上的应用程序能够相互通信,实现数据的准确传输。
复用和分用:是传输层的重要功能,在接收端主要用于实现多个应用程序或进程对网络连接的(复用)共享以及(分用)数据的准确交付给对应的进程。
分段与重组:将应用层交付的较长的报文分成若干个较小的数据包进行传输,并在接收端将这些数据包重新组装成原始的报文,确保数据的完整性和准确性。
流量控制:通过一些机制来控制发送方发送数据的速率,使其与接收方的接收能力相匹配,防止接收方因来不及处理而导致数据丢失,保证数据传输的稳定性。
差错控制:对传输的数据进行差错检测和纠正,通过校验和等方式检测数据在传输过程中是否发生错误,若发现错误则请求发送方重传,以确保数据的可靠性。
连接管理:负责建立、维护和释放传输连接,如在 TCP 协议中,通过三次握手建立连接,四次挥手释放连接,保证通信的有序进行。
TCP:
传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议
特点***:
面向连接:在数据传输之前,TCP 需要在发送方和接收方之间建立一条逻辑连接,就像打电话时先拨号建立连接,通话结束后再挂断连接一样。这个过程通过三次握手来实现,确保双方都做好了数据传输的准备。
可靠传输:TCP 通过多种机制来保证数据的可靠传输,如校验、序列号、确认应答、重传机制等。发送方会为每个发送的数据段分配一个序列号,接收方收到数据后会发送确认应答,告知发送方数据已正确接收。如果发送方在一定时间内没有收到确认应答,就会重传数据。
(校验法和UDP的一致,
但是是采用的累计确认,如果因为意外,接收的是6-7-8的数据,但是现在需要的是4号数据,那么接收方返回的确认字段仍然为4而不是6-7-8,但是6-7-8会正常的接收,之后会要求发送发重传。
这里的重传机制是超时重传,时间的确定使用自适应算法,动态的改变重传时间RTTs
冗余ACK表示期望的下一个字节,如果多次接收到同一个Ack,那么重传这个文段
比如发送方发送了1,2,3,4,5接收方按如下顺序接收
接收1,发送1的确认
接收3,发送1的确认
接收4,发送1的确认
接收5,发送1的确认
3次接受到1的ACk,认为2丢失,重传
)
字节流传输:TCP 将应用层交付的数据看作是无结构的字节流,它不关心数据的具体含义和格式,只负责按照顺序将数据从发送方传输到接收方,并在接收方重新组装成原始的字节流。
流量控制:TCP 采用滑动窗口机制来实现流量控制,通过让发送方根据接收方的接收能力来调整发送数据的速率,防止接收方因来不及处理而导致数据丢失。
(
在通信过程中接收方根据自己的接收缓存的大小,动态的调整发送窗口的大小rwnd,发送方的发送窗口大小为min(发送方接收窗口大小,接收方接收窗口大小),

)
拥塞控制:TCP 通过慢启动和拥塞避免、快重传和快恢复等算法来避免网络拥塞,确保网络的稳定性和数据传输的效率。(拥塞:全局的资源需求总量>可用资源)
下面讨论四个算法,有下面的几个假定:单向传送且另外一个方向只传输ACk;接收方缓存足够大,但是发送窗口大小取决于用拥塞度发送窗口=min(接收rwnd,拥塞rwnd)

传输轮次表示的是:发送一批报文段后接收到ack的时间

快重传就是3个冗余ack后立即重传,而不是等计时,快恢复就是重传不再是慢开始,而是从新的ssthresh开始
TCP只可以进行点对点的连接
支持全双工通信:含有发送缓存(存储待发送和已发送未接收Ack的数据)和接收缓存(未接收完和接收完但无序的数据),
数据格式:

TCP 数据段由首部和数据两部分组成,首部长度通常为 20 字节,包含了很多重要的控制信息。
源端口和目的端口:各占 2 字节,分别标识发送方和接收方的应用进程所使用的端口号。
服务端端口号包括熟知端口号,给TCP/IP重要的一些应用,其他的是登记端口号
客户端端口号的范围在客户使用的时候动态选择的
序号:占 4 字节,用来标识 TCP 发送的字节流中的每个字节的编号,确保数据的有序传输和正确组装。
确认号:占 4 字节,是期望收到对方下一个报文段的第一个数据字节的序号,用于实现确认应答机制。
数据偏移:占 4 位,指出 TCP 首部的长度,以 4 字节为单位,用于确定数据部分的 。
保留:占 6 位,保留为今后使用,目前都置为 0。
控制位:占 6 位,包含了 URG、ACK、PSH、RST、SYN、FIN 等标志位,用于控制 TCP 的连接建立、数据传输和连接释放等过程。
URG:紧急位,表示高优先级
ACK:确认位,建立连接后所有传送的报文都必须将ACK置1
PSH:推送位,接收方希望尽快交付,不在等到缓存填满
RST:复位,表示出现严重差错,要释放连接后重新传输
STN:同步位,表明这是一个连接请求or连接接收
窗口:占 2 字节,用于通告接收方的接收窗口大小,告知发送方自己能够接收的数据量,实现流量控制。
检验和:占 2 字节,用于检测 TCP 数据段在传输过程中是否发生错误。
紧急指针:占 2 字节,当 URG 标志位为 1 时,紧急指针指出紧急数据的末尾在字节流中的位置。
还有选项和填充部分
连接管理***:
建立连接(三次握手)
第一次握手:客户端向服务器发送一个 SYN(同步)报文段,其中包含客户端选择的初始序列号 seq=x,此时客户端进入 SYN_SENT 状态。
第二次握手:服务器接收到客户端的 SYN 报文段后,向客户端发送一个 SYN+ACK 报文段,其中确认号 ack=x+1,表示已收到客户端的 SYN 请求,同时服务器也选择一个初始序列号 seq=y,服务器进入 SYN_RCVD 状态。
第三次握手:客户端接收到服务器的 SYN+ACK 报文段后,向服务器发送一个 ACK 报文段,确认号 ack=y+1,序列号 seq=x+1,此时客户端和服务器都进入 ESTABLISHED 状态,连接建立成功。
(有句话想说.......,说吧.....,好的....)

SYN洪泛攻击,发生在OSI第四层,利用3次握手的特性,发送SYN,使得服务端发送ACK后一直处在挂起状态,占用服务器资源甚至使得服务器死机
释放连接(四次挥手)
第一次挥手:主动关闭方(假设为客户端)发送一个 FIN(结束)报文段,其中序列号 seq=u,客户端进入 FIN_WAIT_1 状态,表示客户端没有数据要发送给服务器了,但还可以接收服务器发送的数据。
第二次挥手:服务器接收到客户端的 FIN 报文段后,向客户端发送一个 ACK 报文段,确认号 ack=u+1,序列号 seq=v,服务器进入 CLOSE_WAIT 状态,此时客户端进入 FIN_WAIT_2 状态。
第三次挥手:服务器数据发送完毕后,向客户端发送一个 FIN 报文段,序列号 seq=w,确认号 ack=u+1,服务器进入 LAST_ACK 状态。
第四次挥手:客户端接收到服务器的 FIN 报文段后,向服务器发送一个 ACK 报文段,确认号 ack=w+1,序列号 seq=u+1,客户端进入 TIME_WAIT 状态,服务器收到 ACK 报文段后进入 CLOSED 状态。客户端在 TIME_WAIT 状态等待一段时间(2MSL,MSL 为最长报文段寿命)后,也进入 CLOSED 状态,连接彻底释放。
(1,我说完,2,好的,我还有一点3,我说的也完了,4,好的)

应用场景
TCP 协议适用于对数据可靠性要求较高的场景,如文件传输、电子邮件、远程登录、网页浏览等。在这些应用中,数据的准确性和完整性至关重要,TCP 能够保证数据无差错、按顺序地传输,为应用程序提供可靠的通信基础。
UDP:
用户数据报协议,是一种无连接的、不可靠的传输层协议
特点:
无连接:UDP 在数据传输前不需要在发送方和接收方之间建立连接,发送方可以直接将数据报发送出去,就像邮寄信件一样,不需要事先与接收方打招呼。
不可靠传输:UDP 不保证数据一定能正确到达接收方,也不保证数据的顺序和完整性。它没有确认应答机制、重传机制等保证数据可靠性的措施,数据报可能会丢失、重复或乱序到达。
面向数据报:UDP 以数据报为单位进行数据传输,每个数据报都是独立的,包含了完整的源地址、目的地址等信息。UDP 不会像 TCP 那样将数据看作是连续的字节流,而是将应用层交付的数据直接封装成数据报进行发送。
低开销、高效率:由于 UDP 不需要建立连接,也没有复杂的可靠性保证机制,所以它的开销较小,传输效率较高,适合于对实时性要求较高、但对数据可靠性要求相对较低的应用场景。
UDP无拥塞控制并且首部开销只有8B,比TCP的20B小很多
数据格式:
UDP 数据报也由首部和数据两部分组成,
首部长度固定为 8 字节。
源端口:占 2 字节,标识发送方应用进程所使用的端口号,可选字段,若不需要返回数据,该字段可置为 0。
目的端口:占 2 字节,标识接收方应用进程所使用的端口号,这是必须有的字段,用于将数据报正确交付给接收方的应用程序。
长度:占 2 字节,记录 UDP 数据报的总长度,包括首部和数据部分,最小值为 8(仅首部)。
检验和:占 2 字节,用于检测 UDP 数据报在传输过程中是否发生错误,但不是必须的,若不使用检验和,则该字段置为 0。
数据如果有的话为任意大小
伪首部(仿IP首部):只出现在计算校验和时才出现,不会向下传送也不会向上递交

应用场景
UDP 适用于一些对实时性要求高,能容忍一定数据丢失或错误的场景:
实时音视频通信:如视频会议、网络直播、在线游戏等,这些应用要求数据能够快速传输,即使有少量数据丢失或延迟,也不会对整体的通信效果产生太大影响,用户通常感觉不到或者可以接受一定程度的卡顿、花屏等现象。
域名系统(DNS):DNS 用于将域名转换为 IP 地址,通常只需要快速地查询和返回结果,对于少量查询结果的丢失或错误,不会对整个网络的运行造成严重影响,因为可以进行重试或使用缓存的结果。
简单网络管理协议(SNMP):SNMP 用于网络设备的管理和监控,它通常会周期性地发送一些管理信息和查询请求,即使有部分数据报丢失,也不会影响对网络设备的整体管理和监控,后续的请求可以补充丢失的信息。
流媒体传输:在流媒体播放中,如在线音乐、视频点播等,偶尔的数据丢失可能只会导致短暂的卡顿或画面模糊,但不会影响整个播放过程的连续性,用户一般可以接受一定程度的质量下降。
相关文章:
计算机网络 笔记 传输层
概述: 主要功能: TCP: 特点***: 数据格式: 连接管理***: 建立连接(三次握手) 释放连接(四次挥手) 应用场景 UDP: 特点: 数…...
(leetcode 213 打家劫舍ii)
代码随想录: 将一个线性数组换成两个线性数组(去掉头,去掉尾) 分别求两个线性数组的最大值 最后求这两个数组的最大值 代码随想录视频 #include<iostream> #include<vector> #include<algorithm> //nums:2,…...
《TCP 网络编程实战:开发流程、缓冲区原理、三次握手与四次挥手》
一、 TCP 网络应用程序开发流程 学习目标 能够知道TCP客户端程序的开发流程1. TCP 网络应用程序开发流程的介绍 TCP 网络应用程序开发分为: TCP 客户端程序开发TCP 服务端程序开发说明: 客户端程序是指运行在用户设备上的程序 服务端程序是指运行在服务器设备上的程序,专门…...
62.异步编程+Prism
为什么不需要在构造函数中初始化了? private ICommand _fetchUserInfoCommand; public ICommand FetchUserInfoCommand > _fetchUserInfoCommand ?? new DelegateCommand(ExecuteFetchUserInfoAsync); public MainWindowViewModel() {// 无需…...
基于亿坊PHP框架构建物联网解决方案的优势分析!
在物联网 (IoT) 领域,选到合适的框架对于整个项目的开展也尤为重要。通常情况下,基于PHP的一些主流框架被用户常选择,今天就带大家了解下基于亿坊PHP框架构建物联网解决方案的优势有哪些? 1、开发效率高 在物联网项目中…...
把本地搭建的hexo博客部署到自己的服务器上
配置远程服务器的git 安装git 安装依赖工具包 yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel安装编译工具 yum install -y gcc perl-ExtUtils-MakeMaker package下载git,也可以去官网下载了传到服务器上 wget https://www.ke…...
《DeepSeek 实用集成:大模型能力接入各类软件》
DeepSeek 实用集成 awesome-deepseek-integration/README_cn.md at main deepseek-ai/awesome-deepseek-integration 将 DeepSeek 大模型能力轻松接入各类软件。访问 DeepSeek 开放平台来获取您的 API key。 English/简体中文 应用程序 Chatbox一个支持多种流行LLM模型的桌…...
接口使用实例(1)
大家好,今天我们来看看接口的一些实例,关于如何定义和实现接口,相信通过这些例子,我们能有一些清晰的认知。 先定义一个学生类: 再给定一个学生数组,对这个对象数组中的元素进行排序(按分数排&…...
Git 版本控制:基础介绍与常用操作
目录 Git 的基本概念 Git 安装与配置 Git 常用命令与操作 1. 初始化本地仓库 2. 版本控制工作流程 3. 分支管理 4. 解决冲突 5. 回退和撤销 6. 查看提交日志 前言 在软件开发过程中,开发者常常需要在现有程序的基础上进行修改和扩展。但如果不加以管理&am…...
leetcode——合并K个有序链表(java)
给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下&#…...
跨境数据传输问题常见解决方式
在全球化经济的浪潮下,跨境数据传输已然成为企业日常运营的关键环节。随着数字贸易的蓬勃发展和跨国业务的持续扩张,企业在跨境数据处理方面遭遇了诸多棘手难题。那么,面对这些常见问题,企业该如何应对?镭速跨境数据传…...
python-leetcode-删除链表的倒数第 N 个结点
19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode) # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def removeNthFromEnd(self…...
EasyExcel写入和读取多个sheet
最近在工作中,作者频频接触到Excel处理,因此也对EasyExcel进行了一定的研究和学习,也曾困扰过如何处理多个sheet,因此此处分享给大家,希望能有所帮助 目录 1.依赖 2. Excel类 3.处理Excel读取和写入多个sheet 4. 执…...
lanqiaoOJ 2097:青蛙过河 ← 二分+前缀和+贪心
【题目来源】 https://www.lanqiao.cn/problems/2097/learning/ https://www.luogu.com.cn/problem/P8775 【题目描述】 小青蛙住在一条河边,它想到河对岸的学校去学习。小青蛙打算经过河里的石头跳到对岸。 备注:此图由百度 AI 创作生成 河里的石头排…...
woocommerce独立站与wordpress独立站的最大区别是什么
WooCommerce独立站与WordPress独立站的最大区别在于它们的功能定位和使用场景。 WordPress是一个开源的内容管理系统(CMS),最初是作为博客平台发展起来的,但现在已经演变为一个功能丰富的网站构建工具。它主要用于创建动态网站,提供广泛的定…...
MybatisX插件快速创建项目
一、安装插件 二、创建一个数据表测试 三、IDEA连接Mysql数据库 四、选择MybatiX构造器 五、配置参数 六、项目结构...
【Leetcode 每日一题 - 补卡】219. 存在重复元素 II
问题背景 给你一个整数数组 n u m s nums nums 和一个整数 k k k,判断数组中是否存在两个 不同的索引 i i i 和 j j j,满足 n u m s [ i ] n u m s [ j ] nums[i] nums[j] nums[i]nums[j] 且 ∣ i − j ∣ < k |i - j| < k ∣i−j∣<…...
llama3学习
首先是预训练部分,数据注意版权和风险问题。数据去重和数据清理,PII人的身份信息(人名、地址等)。如果数据有大量PII数据则这个数据丢掉。 网页的数据,提取,代码和数学的提取的特别的方法,OCR…...
H3CNE-31-BFD
Bidirectional Forwarding Dection,双向转发检查 作用:毫秒级故障检查,通常结合三层协议(静态路由、vrrp、ospf、BGP等),实现链路故障快速检查。 BFD配置示例 没有中间的SW,接口downÿ…...
VMware安装win10记录
(1)下载vmware,这个pro现在也免费的,下载地址:https://support.broadcom.com/group/ecx/productfiles?subFamilyVMware%20Workstation%20Pro&displayGroupVMware%20Workstation%20Pro%2017.0%20for%20Windows&release17.6.2&os&…...
python学opencv|读取图像(四十七)使用cv2.bitwise_not()函数实现图像按位取反运算
【0】基础定义 按位与运算:两个等长度二进制数上下对齐,全1取1,其余取0。按位或运算:两个等长度二进制数上下对齐,有1取1,其余取0。 按位取反运算:一个二进制数,0变1,1变0。 【1】…...
Ability Kit(程序框架服务)
Ability Kit(程序框架服务)提供了应用程序开发和运行的应用模型,是系统为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。有了应用模型,开发者可以基于一套统一的模型进行应用开发&am…...
拦截器快速入门及详解
拦截器Interceptor 快速入门 什么是拦截器? 是一种动态拦截方法调用的机制,类似于过滤器。 拦截器是Spring框架中提供的,用来动态拦截控制器方法的执行。 拦截器的作用:拦截请求,在指定方法调用前后,根…...
IT服务管理平台(ITSM):构建高效运维体系的基石
IT服务管理平台(ITSM):构建高效运维体系的基石 在数字化转型浪潮的推动下,企业对IT服务的依赖日益加深,如何高效管理和优化IT服务成为企业面临的重要课题。IT服务管理平台(ITSM)应运而生,以其系统化的管理方法和工具,助力企业实现IT服务的规范化、高效化和智能化。本…...
python爬虫入门(一) - requests库与re库,一个简单的爬虫程序
目录 web请求与requests库 1. web请求 1.1 客户端渲染与服务端渲染 1.2 抓包 1.3 HTTP状态代码 2. requests库 2.1 requests模块的下载 2.2 发送请求头与请求参数 2.3 GET请求与POST请求 GET请求的例子: POST请求的例子: 3. 案例:…...
智慧园区管理平台实现智能整合提升企业运营模式与管理效率
内容概要 在当今数字化的背景下,智慧园区管理平台正逐渐成为企业提升运营效率和管理模式的重要工具。这个平台汇聚了多种先进技术,旨在通过智能整合各类资源与信息,帮助企业实现全面的管理创新。 智慧园区管理平台不仅仅是一个数据处理工具…...
尚硅谷spring框架视频教程——学习笔记一(IOC、AOP)
文章目录 前言一、控制反转(IOC)1. 底层原理2. 两种实现方式(接口)3. bean管理(基于xml方式)4. bean管理(基于注解方式) 二、面向切面编程(AOP)1. 底层逻辑2.…...
傅里叶分析之掐死教程
https://zhuanlan.zhihu.com/p/19763358 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析 不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是,傅里叶分析的公式看起来太复杂了,所以很多…...
实战:如何快速让新网站被百度收录?
本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/22.html 要让新网站快速被百度收录,可以采取以下实战策略: 一、网站基础优化 网站结构清晰:确保网站的结构简洁清晰,符合百度的抓取规则。主…...
PVE 虚拟机安装 Debian 无图形化界面服务器
Debian 安装 Debian 镜像下载 找一个Debian镜像服务器,根据需要的版本和自己硬件选择。 iso-cd/:较小,仅包含安装所需的基础组件,可能需要网络访问来完成安装。有镜像 debian-12.9.0-amd64-netinst.isoiso-dvd/:较…...
