【计算机网络】 传输层

一、传输层提供的服务

1.1 传输层的功能

1.1.1 传输层的功能如下:

       传输层提供应用进程之间的逻辑通信(即端到端的通信)。与网络层的区别是:网络层提供的是主机之间的逻辑通信。

1.1.2 复用和分用

       传输层要还要对收到的报文进行差错检测(首部和数据部分)。而网络层只检测IP数据报的首部,不检验数据部分是否出错。

       提供两种不同的传输协议,即面向连接的TCP和无连接的UDP。而网络层无法同时实现两种协议(即在网络层要么只提供面向连接的服务:虚电路...;要么只提供无连接的服务:数据报...

       当传输层采用的是面向连接的TCP时,尽管下面的网络是不可靠的,但这种逻辑通信的信道就相当于一条全双工的可靠信道。但当传输层采用无连接的UDP服务时,这种逻辑通信仍然是不可靠的信道。

1.2 传输层的寻址与端口

1.2.1 端口的作用

       端口能够让应用层的各种应用进程将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段的数据向上交付给应用层相应的进程。端口时传输层服务访问点,它在传输层的作用类似于IP地址在网络层的作用或MAC在数据链路层的作用,只不过IP地址和MAC地址标识的是主机,而端口标识的是主机中的应用进程。

1.2.2 端口号

       应用进程通过端口号进行标识,端口号的长度为16bit,能够表示65536个不同的端口号。端口号只具有本地意义,即端口号只标识本计算机应用层中的各进程。

根据端口号的范围将端口号分为两类:

  • 服务器端使用的端口号:其又分为两类,最重要的是熟知端口号,数值为0~1023;另一类是登记端口号,数值为1024~49151。它是供没有熟知端口号的应用进程使用的,必须进行登记,以防重复。
  • 客户端使用的端口号,短暂性端口号,可以让客户进程反复使用

1.2.3 套接字

       在网络中通过IP地址来标识和区别不同的主机,通过端口号来标识和区分一台主机中的不同应用进程,端口号拼接到IP地址即构成了套接字Socket。套接字,实际上是一个通信断点

       套接字Socket = IP地址 + 端口号,可以唯一地标识网络中的一台主机和其上的一个应用进程。

1.3 无连接服务和面向连接服务

       面向连接服务就是在通信双方进行通信之前,必须建立连接,在通信过程中,整个连接的情况一直被实时地监控和管理。通信结束后,必须释放连接。

       无连接服务是指两个实体之间的通信不需要先建立好连接,需要通信时,直接将信息发送到”网络“中,让该信息的传递在网上尽力而为地往目的地传送。

       TCP提供面向连接的服务,在传送数据之前必须建立连接,数据传送结束后要释放连接。TCP不提供广播或组播服务。TCP主要适用于可靠性更重要的场合:文件传输协议(FTP),超文本传输协议(HTTP),远程登陆(TELNET)

       UDP是一个无连接的非可靠传输协议。它在IP之上提供了两个附加服务:多路复用和对数据的错误检查。使用UDP的应用主要包括小文件输送协议(TETP),DNS,SNMP和实时传输协议(RTP)。

IP数据报和UDP数据报的区别:

       IP数据报在网络层要经过路由的存储转发;而UDP数据报在传输层的端到端的逻辑信息中传输,封装成IP数据报在网络层中传输时,UDP数据报的信息对路由是不可见的。

TCP和网络层虚电路的区别:

       TCP报文段在传输层抽象的逻辑信道中传输,对路由器不可见;虚电路所经过的交换节点都必须保存虚电路状态信息,在网络层中若采用虚电路方式,则无法提供无连接服务;而传输层采用TCP不影响网络层提供无连接服务。

二、UDP协议

2.1 UDP数据报

2.1.1 UDP概述

       UDP仅在IP数据报服务之上增加了两个最基本的服务:复用和分用以及差错检测

UDP的优点:

  • UDP无须建立连接
  • 无连接状态
  • 分组首部开销小
  • 应用层能更好地控制要发送的数据和发送时间
  • UDP支持一对一,一对多,多对一和多对多的交互通信
  • UDP是面向报文的。报文是不可拆分的,是UDP数据报处理的最小单位。

2.1.2 UDP的首部格式

UDP数据报包含两个部分:UDP首部和用户数据。

UDP首部有8B,由四个字段组成:

  • 源端口:源端口号,在需要对方回信时使用,不需要时可用全0
  • 目的端口:目的端口号,在终点交付报文时必须使用到
  • 长度:UDP数据报的长度(包括首部和数据)其最小值是8(仅有首部)
  • 检验和:检测UDP数据报在传输中是否有错,有错就进行丢弃。该字段是可选的,如果计算机不想计算校验和时,则直接使这些校验和为0。

2.2 UDP校验

       在计算校验和之前,要在UDP数据报之前增加12B的伪首部,临时添加在UDP数据前面,将UDP数据报视为许多个16位的字串,将这些16位数进行无进制相加,最后按二进制反码求这些16位字的和。

注意:

       检验时,若UDP数据报部分的长度不是偶数字节,则需填入一个全0字节。但是此字节和位首部一样是不发送的

       如果UDP校验和校验出UDP数据报是错误的,那么可以丢弃,也可以上传,但是要附上错误报告,告诉上层这是错误的数据报。

       通过伪首部,不仅可以检查源端口号,目的端口号和UDP用户数据报的数据部分,还可以检查IP数据报的源IP地址和目的地址。

三、TCP协议

3.1 TCP协议的特点

  • TCP连接是面向连接的传输层协议,TCP连接是一个逻辑连接
  • 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点(一对一)
  • TCP提供可靠传输服务,保证传输的数据无差错,不丢失,不重复且有序
  • TCP提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据,为此TCP连接的两端都设有发送缓存和接受缓存,用来临时存放双向通信的数据
  • TCP是面向字节流的,虽然应用程序和TCP的交互是一次一个数据快(大小不等)但TCP把应用程序交下来的数据仅视为一连串无结构的字节流。

3.2 TCP报文段

       TCP传送的数据单元称为报文段。TCP的报文段既可以用来运载数据,又可以用来建立连接、释放连接和应答。一个报文段分为首部和数据两个部分,整个TCP报文报作为IP数据报的数据部分封装到IP数据报中,其首部的前20B是固定的。TCP首部最短为20B,后面有4N字节是根据需要而增加的选项,长度为4B的整数倍。

TCP的全部功能体现在其首部的各个字段中,各字段的意义是:

源端口和目标端口

序号

确认号

数据偏移

保留

紧急位

确认位ACK

推送位PSH

复位位RST

同步位SYN

终止位FIN

窗口

检验和

紧急指针

选项

填充

3.3 TCP连接管理

       TCP是面向连接的协议,因此每一个TCP连接都有三个阶段:连接建立,数据传送,连接释放。TCP连接的管理就是使运输连接的建立和释放都能正常进行。

在TCP建立连接的过程中,我们需要解决一下三个问题:

  • 要使每一方能够确定对方的存在
  • 要允许双方协商一些参数
  • 能够运输实体资源进行分配

3.3.1 TCP连接的建立(3次握手)

建立连接前,服务器进程处于LISTEN状态,等待客户的连接请求

第一步,客户机的TCP首先向服务器的TCP发送连接请求报文段。

第二步,客户机的TCP收到确认报文段后,还要向服务器给出确认,并为该TCP连接分配缓存和变量

第三步,当客户机收到确认报文段后,还要向服务器给出确认,并为该TCP连接分配缓存和变量。

3.3.2 TCP连接的释放(4次握手)

第一步,客户机打算关闭连接时,向其TCP发送连接释放报文段,并停止发送数据,主动关闭TCP连接。该报文段的终止位FIN置1,序号seq = u,它等于前面已传送过的数据的最后一个字节的序号+1,FIN报文段即使不携带数据,也消耗一个序号。

第二步,服务器收到解释报文段后发出确认

第三步,若服务器已经没有要向客户机发送的数据,就通知TCP释放连接

第四步,客户机收到连接释放报文段后,必须发出确认。

3.4 TCP的可靠传输

       TCP的任务是在IP层不可靠的、尽力而为服务的基础上,建立一种可靠的数据传输服务。TCP使用; 校验、序号、确认和重传等机制来达到这一目的。

3.4.1 序号

       TCP首部的序号字段用来保证数据能有序地提交给应用层,TCP把数据视为一个无结构但有序的字节流,序号建立在传送的字节流上。

3.4.2 确认

       TCP首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号。发送缓存区会继续存储那些已发送但未接收到确认的报文段,以便在需要时重传。

       TCP默认使用累积确认,即TCP只确认数据流中至第一个丢失字节为止的字节。

3.4.3 重传

3.4.3.1 超时重传

       TCP每发送一个报文段,就对这个报文段设置一个计时器。计时器设置的重传时间到期但还未收到确认时,就要重传这个报文段。

       为了计算超时计时器的重传时间,TCP采用了一种自适应的算法,它记录一个报文段发出的时间,以及收到相应确认的时间,这两个时间之差称为报文段的往返时间。

3.4.3.2 冗余ACK(冗余确认)

       发送方通常可以在超时事件发生之前通过所谓的冗余ACK来较好的检测丢包情况。冗余ACK就是再次确认某个报文段的ACK,而发送方先前已经收到了该报文段的确认。TCP规定每当比期望序号大的失序报文段到达时,就发送一个冗余ACK,指明下一个期待字节的序号。

       TCP规定当发送方收到对同一个报文段的3个冗余ACK时,就可以认为跟在这个被确认报文段之后的报文段已经丢失。

3.5 TCP的流量控制

       TCP提供流量控制服务来消除发送方(发送速度太快)使接收方缓存区溢出的可能性,因此,可以说流量控制是一个速度匹配服务(匹配发送方的发送速率和接收方的接收速率)

3.6 TCP的拥塞控制

       拥塞控制和流量控制的区别:拥塞控制是让网络能够承担先有的网络负荷,是一个全局性过程,涉及所有主机,所有路由器,以及与见地网络传输性能有关的所有因素。相反,流量控制往往是指点对点的通心量的控制,是一个端到端的问题,它所要做的是抑制发送端发送数据的速率,以便接收端来得及接收。

TCP协议要求发送发维护一下两个窗口:接收窗口和发送窗口

  • 接收窗口:
  • 发送窗口:

3.6.1 慢开始和拥塞避免

3.6.1.1 慢开始

       在TCP刚刚好连接好并开始发送TCP报文段,先令拥塞窗口cwnd = 1,即一个最大报文段长度MSS,每收到一个对新报文段的确认后,将cwnd + 1,即增大一个MSS。从1->2->4->8...

       慢开始到了一个规定的慢开始门限,然后改用拥塞避免算法。

3.6.1.2 拥塞避免算法

       拥塞避免算法的思路是让拥塞窗口cwnd慢慢增大,具体做法是:让拥塞窗口cwnd按线性规律缓慢增长,

3.6.1.3 网络拥塞的处理

       当出现网络拥塞,就要把慢开始门限设置为出现拥塞时的发送方的cwnd的一半,但不能小于2。

3.6.2 快重传和快恢复

3.6.2.1 快重传

       当发送方连续收到三个重复的ACK报文,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时。

3.6.2.2 快恢复

       快恢复算法:当发送方连续收到三个重复的ACK报文,执行:乘法减小:算法,把慢开始门限设置为此时发送方cwnd的一半,开始执行线性增长。

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

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

相关文章

前段。html

<!DOCTYPE html> <html xmlns:th"http://www.thymeleaf.org"> <head> <meta charset"UTF-8"> <title>用户列表</title> </head> <body> <h1>用户列表</h1> <table> …

Web前端专科实习:技能提升、实践挑战与职业展望

Web前端专科实习&#xff1a;技能提升、实践挑战与职业展望 在数字化时代&#xff0c;Web前端技术作为连接用户与互联网世界的桥梁&#xff0c;其重要性日益凸显。作为一名Web前端专科实习生&#xff0c;我有幸在这个充满机遇和挑战的领域进行实践学习。接下来&#xff0c;我将…

【计算机毕业设计】258基于微信小程序的课堂点名系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

想建独立站,又怕收款有风险,该怎么办?看这篇就够了

小编关注独立站话题已久&#xff0c;了解到许多商家想建独立站但是又担心收款有风险&#xff0c;特别是FP独立站&#xff0c;由于FP商品的特殊性&#xff0c;更容易导致收款账号被封。 今天&#xff0c;小编就在这里教大家一招&#xff0c;解决收款难题&#xff01; 解决收款难…

总结【GetHub的WebAPI,ASSET_ID】,【Linux的jq命令】(草稿版+实际操作)

目录 1.介绍一下github中的 asset_id 2. GitHub 的 asset_id相关操作 2.1.获取特定 repository 的 release 列表&#xff1a; 2.2.获取特定 release 中的 asset 列表&#xff0c;并找到 asset_id&#xff1a; 2.3.使用ASSET_ID获取资材 3.返回的 assets 的信息 是什么样样…

【STM32CubeIDE -使用-调试过程中-遇到的“弹窗”报错问题-部分总结-处理方式】

【STM32CubeIDE -使用-调试过程中-遇到的“弹窗”报错问题-部分总结-处理方式】 1、前言2、软件环境问题1&#xff1a;Confirm Perspective Switch&#xff08;确认视角切换&#xff09;&#xff08;1&#xff09;问题描述:This kind of launch is configured to open the Debu…

14、modbus poll 使用教程小记1

开发平台&#xff1a;Win10 64位 Modbus Slave版本&#xff1a;64位 7.0.0 Modbus Poll版本&#xff1a;64位 7.2.2 因为项目中经常会用到modbus协议&#xff0c;所以就避免不了的要使用modbus测试工具&#xff0c;Modbus Slave/Poll无疑是众多测试工具中应用最广泛的。 文章目…

C语言的数据结构:串、数组、广义表

一、串 1、串的定义 串是一个线性表&#xff0c;但其节点中的内容只能为字符&#xff0c;所以也称为字符串。 字符串中可以有多个字符&#xff0c;也可以没有字符。没有字符的叫作&#xff1a;空串。 空串&#xff1a;""。 有值的串&#xff1a;"1123"。 只…

yolov3 详解

文章目录 1、yolov3原理2、损失函数3、yolov3改进4、使用opencv实现yolov35、卷积神经网络工作原理 1、yolov3原理 参考视频 darknet53&#xff1a;52个卷积层和1个全联接层 输入图像为416416 1313 -》 下采样32倍 2626 -》 下采样16倍 5252 -》 下采样8倍 由标注框中心点落在…

是字符串定义以及在C语言中字符串是如何表示的

字符串&#xff08;String&#xff09;是由零个或多个字符&#xff08;包括空格&#xff09;组成的有限序列&#xff0c;常用于文本数据的存储和处理。在编程中&#xff0c;字符串是常见的数据类型。 在C语言中&#xff0c;字符串不是一种内置的数据类型&#xff0c;但C语言提…

13600KF+3060Ti,虚拟机安装macOS 14,2024年6月

距离上次装macOS虚拟机已经有一段时间了&#xff0c;macOS系统现在大版本升级的速度也是越来越快了&#xff0c;由于Office只支持最新三个版本的macOS&#xff0c;所以现在保底也得安装macOS 12了&#xff0c;我这次是用macOS 14做实验&#xff0c;13和12的安装方式和macOS 14一…

什么是计算机视觉?

计算机视觉 (CV) 是人工智能 (AI) 的一个分支领域&#xff0c;是指让计算机和系统能够从图像、视频和其他视觉输入中获取有意义的信息&#xff0c;并根据该信息采取行动或提供建议。 如果说人工智能赋予计算机思考的能力&#xff0c;那么计算机视觉就是赋予发现、观察和理解的能…

eNSP学习——PPP的认证

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、搭建OSPF网络 3、配置PPP的PAP认证 4、配置PPP的CHAP认证 主要命令 //设置本端的PPP协议对对端设备的认证方式为 PAP&#xff0c;认证采用的域名为huawei [R3]int s4/0/0 [R…

Android 14 系统启动流程 之 启动init进程、启动Zygote进程

Android 14 系统启动流程 之 启动init进程、启动Zygote进程 废话不多说&#xff0c;先上图&#xff0c;不清楚的可以在评论区留言。

【论文阅读】-- 时态合并树状图:时态标量数据的基于拓扑的静态可视化

时态合并树状图&#xff1a;时态标量数据的基于拓扑的静态可视化 摘要1 引言2 相关工作及背景介绍2.1 增广合并树2.2 (增强)合并树的可视化与跟踪2.3 特征跟踪2.4 数据线性化 3 时间合并树状图3.1 映射单个时间步长&#xff1a; R d → R R^d \rightarrow R Rd→R3.2 映射所有时…

python:faces swap

# encoding: utf-8 # 版权所有 2024 涂聚文有限公司 # 许可信息查看&#xff1a;pip install boost # 描述&#xff1a;pip install boost # pip install dlib # pip install cmake3.25.2 # pip install dlib19.24.2 如果安装不上&#xff0c;按此法 # Author : geovindu,G…

实用软件下载:MathType最新安装包及详细安装教程

MathType是强大的数学公式编辑器&#xff0c;与常见的文字处理软件和演示程序配合使用&#xff0c;能够在各种文档中加入复杂的数学公式和符号&#xff0c;可用在编辑数学试卷、书籍、报刊、论文、幻灯演示等方面&#xff0c;是编辑数学资料的得力工具。MathType与常见文字处理…

【乐吾乐2D可视化组态编辑器】条件变化,触发告警动画

条件触发告警动画 乐吾乐2D可视化组态编辑器地址&#xff1a;https://2d.le5le.com/ 如图所示&#xff0c;左侧文本图元数值一直在变化&#xff0c;当数值大于等于50的时候&#xff0c;右侧矩形图元执行告警动画&#xff0c;当数值小于50的时候&#xff0c;右侧图元恢复正常。…

Java--数组小结

1.其长度是确定的。数组一旦被创建&#xff0c;它的大小就是不可以改变的。 2.其元素必须是相同类型&#xff0c;不允许出现混合类型 3.数组中的元素可以是任何数据类型&#xff0c;包括基本类型和引用类型 4.数组变量属于引用类型&#xff0c;数组也可以看成是对象&#xf…

Aspose将doc,ppt转成pdf

1.需要引入的jar包 链接: https://pan.baidu.com/s/1t3wqq7KrHi50K9KX3-Eb9A?pwd=u4se 提取码: u4se <dependency><groupId>com.aspose</groupId><artifactId>aspose-words-jdk16</artifactId><version>15.8.0</version><sco…