计算机网络 笔记 传输层

news/2025/2/3 1:10:51 标签: 网络, tcp/ip, 网络协议, 计算机网络

概述:

主要功能:

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 用于网络设备的管理和监控,它通常会周期性地发送一些管理信息和查询请求,即使有部分数据报丢失,也不会影响对网络设备的整体管理和监控,后续的请求可以补充丢失的信息。

流媒体传输:在流媒体播放中,如在线音乐、视频点播等,偶尔的数据丢失可能只会导致短暂的卡顿或画面模糊,但不会影响整个播放过程的连续性,用户一般可以接受一定程度的质量下降。


http://www.niftyadmin.cn/n/5840402.html

相关文章

帆软 FCA -业务分析师认证学习

帆软 FCA -业务分析师认证学习 认证概述 适合人群 企业中有需求管理、指标梳理、业务逻辑梳理、项目规划等需求的人员,想提升综合数据能力、推进数据应用落地的业务/IT骨干。 具体-FCA-业务分析理论 考试要求: FCA-业务分析理论考试- 费用&#xff1a…

算法基础——存储

引入 基础理论的进步,是推动技术实现重大突破,促使相关领域的技术达成跨越式发展的核心。 在发展日新月异的大数据领域,基础理论的核心无疑是算法。不管是技术设计,还是工程实践,都必须仰仗相关算法的支持&#xff0…

自动化测试框架搭建-封装requests-优化

目的 1、实际的使用场景,无法避免的需要区分GET、POST、PUT、PATCH、DELETE等不同的方式请求,以及不同请求的传参方式 2、python中requests中,session.request方法,GET请求,只支持params传递参数 session.request(me…

tf.Keras (tf-1.15)使用记录4-model.fit方法及其callbacks参数

model.fit() 方法是 TensorFlow Keras 中用于训练模型的核心方法。 其中里面的callbacks参数是实现模型保存、监控、以及和tensorboard联动的重要API 1 model.fit() 方法的参数及使用 必需参数 x: 训练数据的输入。可以是 NumPy 数组、TensorFlow tf.data.Dataset、Python 生…

pytorch图神经网络处理图结构数据

人工智能例子汇总:AI常见的算法和例子-CSDN博客 图神经网络(Graph Neural Networks,GNNs)是一类能够处理图结构数据的深度学习模型。图结构数据由节点(vertices)和边(edges)组成,其中节点表示实体,边表示实体之间的关系或连接。GNNs 通过在图的结构上进行信息传递和…

100.1 AI量化面试题:解释夏普比率(Sharpe Ratio)的计算方法及其在投资组合管理中的应用,并说明其局限性

目录 0. 承前1. 夏普比率的基本概念1.1 定义与计算方法1.2 实际计算示例 2. 在投资组合管理中的应用2.1 投资组合选择2.2 投资组合优化 3. 夏普比率的局限性3.1 统计假设的限制3.2 实践中的问题 4. 改进方案4.1 替代指标4.2 实践建议 5. 回答话术 0. 承前 如果想更加全面清晰地…

hexo部署到github page时,hexo d后page里面绑定的个人域名消失的问题

Hexo 部署博客到 GitHub page 后,可以在 setting 中的 page 中绑定自己的域名,但是我发现更新博客后绑定的域名消失,恢复原始的 githubio 的域名。 后面搜索发现需要在 repo 里面添加 CNAME 文件,内容为 page 里面绑定的域名&…

嵌入式C语言:大小端详解

目录 一、大小端的概念 1.1. 大端序(Big-endian) 1.2. 小端序(Little-endian) 二、大小端与硬件体系的关系 2.1. 大小端与处理器架构 2.2. 大小端与网络协议 2.3. 大小端对硬件设计的影响 三、判断系统的大小端方式 3.1.…