当前位置: 首页 > news >正文

计算机网络重点概念整理-第五章 传输层【期末复习|考研复习】

第五章 传输层 【期末复习|考研复习】

计算机网络系列文章传送门:
第一章 计算机网络概述
第二章 物理层
第三章 数据链路层
第四章 网络层
第五章 传输层
第六章 应用层
第七章 网络安全
计算机网络整理-简称&缩写


文章目录

  • 第五章 传输层 【期末复习|考研复习】
  • 前言
  • 五、传输层
    • 5.1 传输层提供的服务
      • 5.1.1 传输层功能
      • 5.1.2 传输层的寻址与端口
    • 5.2 UDP协议
    • 5.3 TCP协议
      • 5.3.1 TCP协议的特点
      • 5.3.2 TCP报文段
      • 5.3.3 TCP管理连接
      • 5.3.4 TCP的可靠传输
      • 5.3.5 TCP的流量控制
      • 5.3.6 TCP的拥塞控制
  • 下一章 第六章 应用层


前言

给大家整理了一下计算机网络中的重点概念,以供大家期末复习和考研复习的时候使用。
参考资料是王道的计算机操作系统和西电的计算机操作系统。


五、传输层

5.1 传输层提供的服务

5.1.1 传输层功能

传输层的功能如下:1、传输层提供应用进程之间的逻辑通信即端到端的通信,与网络层之间的区别为网络层提供的是主机之间的逻辑通信,即使网络层协议不可靠,传输层同样能为应用程序提供可靠的服务。2、复用分用。复用是指发送方不同的应用进程都可以使用同一个传输层协议传送数据;分用是指接收方的传输层在剥去报文的首部后能把这些数据正确的交付到目的应用进程,网络层也同样有复用分用的功能。3、传输层还要对收到的报文进行差错检验,检验其首部和数据部分;而网络层是检查IP数据报的首部,不检验数据部分是否出错。4、传输层提供两种不同的传输协议即面向连接的TCP和无连接的UDP,而网络层无法实现两种协议要么只提供面向连接的服务如虚电路,要么只提供无连接服务如数据报,而不可能在网络层同时存在这两种方式。

5.1.2 传输层的寻址与端口

端口是传输层服务访问点TSAP,它在传输层的作用类似于IP地址在网络层的作用或MAC地址在数据链路层的作用,只不过IP地址和MAC地址标识的是主机而端口标识的是主机中的应用进程。传输层使用的是软件端口。
端口号采用16位标志端口号,一共为65535个端口。端口号分为服务器端使用端口号和客户端使用端口号。服务器端使用的端口号分为熟知端口号0到1023和登记端口号1024到49151。常用的端口号如下:文件传输协议FTP(21)、远程登录协议TELNET(23)、电子邮件传输协议SMTP(25)、域名系统协议DNS(53)、简单文件传输协议TFTP(69)、超文本传输协议HTTP(80)、简单网络管理协议SNMP(161)、超文本传输安全协议HTTPS(443)、邮局协议POP3(110)。
在网络中通过IP地址来标识和区别不同主机,通过端口号来标识和区别一台主机的不同进程,端口号拼接到IP地址即形成套接字Socket,在网络中采用发送方和接收方的套接字来识别端点。套接字实际上是一个通信端点,它唯一的标识网络中的一台主机和其上的一个应用进程。
TCP提供面向连接的服务在传输数据之前必须建立连接传输,结束后要释放连接。TCP不提供广播或组播服务。 TCP 要进行确认、流量控制、计时器及连接管理等,因此TCP适合用于可靠性更高的场合如文件传输协议FTP、超文本传输协议HTTP、远程登录协议TELNET等。UDP是一个无连接的非可靠传输层协议,它在IP之上仅提供两个服务,多路复用和对数据的错误检查,UDP在使用前不需要建立连接,收到UDP报文后也无需任何确认。UDP比较简单因此执行速度较快实时性更好,使用UDP的应用包括小文件传输协议TFTP、DNS、SNMP和实时传输协议RTP等。
IP数据包和UDP数据报的区别:IP数据报在网络层要经过路由的存储转发而UDP数据报在传输层的端到端的逻辑通信中传输,封装成IP数据包在网络层传输时,UDP数据报的信息对路由是不可见的。TCP和网络程序电路的区别:TCP报文段在传输层的端到端的逻辑通信中传输,对路由不可见,虚电路经过交换节点必须保存虚电路的状态信息,在网络层若采用虚电路的方式则无法提供无连接服务而传输层采用TCP不影响网络层提供无连接服务。

5.2 UDP协议

UDP仅在IP数据报的服务之上增加了复用分用及差错检验以及端口功能。UDP数据报包含两个部分:UDP首部和用户数据报,UDP首部有8B,有四个字段,包括源端口号、目的端口号、长度和校验和。
1、无需建立连接,不会引入建立连接的时延。2、无连接状态,因此能支持更多的活动客户机。3、分组首部开销小,TCP有20B的首部开销而UDP只有8B。4、UDP没有拥塞控制,满足以稳定速度发送,容忍丢失但不允许较大时延的要求。5、UDP支持一对一、一对多、多对一和多对多的需求。6、UDP不保证可靠交付,给因此所有的维护可靠性的工作可由用户在应用层来完成。7、UDP是面向报文的,仅在添加首部后就向下交付给IP层。
在这里插入图片描述

UDP的伪首部仅在计算和校验时用到。长度为12B。既不上交也不传。
UDP常用于DNS、SNMP、多媒体应用、IP电话、实时会议、流媒体等。
UDP的伪首部的第四字段时17,而TCP是6。

5.3 TCP协议

5.3.1 TCP协议的特点

其任务是在IP层不可靠的、尽力而为的服务的基础上确立一种可靠的数据传输服务。特点如下:1、TCP只能是一对一的。2、TCP提供可靠的交付服务保证无差错、不丢失、不重复且有序。3、TCP提供全双工通信并且TCP连接两端设有发送缓存和接收缓存用来临时存放双向通信的数据。4、TCP是面向连接的。5、TCP是面向字节流的。6、TCP报文的长度是由接收方窗口值和当前网络的拥塞程度来确定,而UDP报文的长度是由发送应用程序决定。

5.3.2 TCP报文段

TCP传送数据单元称为报文段,TCP报文段即可以用来运载数据也可以用来建立连接、释放连接和应答。一个TCP报文分为首部和数据两部分,整个TCP报文段作为IP数据报的数据部分封装在IP数据包中,其首部的前20字节是固定的,TCP报文段的首部最短为20B。
在这里插入图片描述

确认号是期望收到对方下一个报文段的第一个数据字节的序号如果确认后为N则导游序号N减1为止的所有数据已正确收到。
紧急位URG、确认位ACK(确认位为1有效,为0无效)、推送位PSH、复位位RST(表示出现严重差错必须重新连接)、同步位SYN(表明这是个连接请求或连接接受报文)、终止位FIN(释放连接)。

5.3.3 TCP管理连接

TCP是面向连接的协议,每个TCP连接都有三个阶段:连接建立、数据传输和连接释放。TCP连接的端口为套接字或插口,每个TCP连接唯一的被通信的两个端点确定,即被两个个套接字确定。TCP连接采用客户/服务器方式,主动发起连接建立的应用进程称为客户,而被动等待连接建立的应用进程称为服务器。
ACK-确认位,SYN-同步位(只有建立连接时SYN为1其余为0),FIN-终止位,ack确认号,seq序号。
在这里插入图片描述
连接建立:1、SYN=1,seq=x(随机)。2、SYN=1,ACK=1,seq=y,ack=x+1。3、SYN=0,ACK=1,seq=x+1,ack=y+1。
在这里插入图片描述
释放连接:1、FIN=1,seq=u。2、ACK=1,seq=v,ack=u+1。3、FIN=1,ACK=1,seq=w,ack=u+1。。4、FIN=0,ACK=1,seq=u+1,ack=w+1。必须等待2MSL最大报文段寿命后客户机才进入CLOSED状态。

5.3.4 TCP的可靠传输

TCP使用校验、序号、确认和重传等机制来达到可靠传输的目的,校验机制与UDP校验一样。TCP默认使用累计确认。TCP对于两种事件会导致对报文段进行重传:超时和冗余ACK。对于超时:TCP采用一种自适应算法记录一个报文段发出的时间以及收到相应确认的时间,这两个时间之差称为报文段的往返时间,而TCP保留一个RTT的加权平均值,它会随着新测量的RTT的样本值而变化。对于冗余ACK:当接收端收到3个以上的冗余AC K时则可以认为该报文段已丢失,则快速重传该报文段。
RTT的赋值=(1-a)oldRTT+anewRTT

5.3.5 TCP的流量控制

为了匹配发送方的发送速率与 接收方的读取速率,TCP提供流量控制服务来消除发送方使接收方缓存区溢出的可能性。TCP提供一种基于滑动窗口协议的流量控制机制,在通信过程中接收方根据自己接收缓存的大小动态的调整发送方的发送窗口大小称为接收窗口rwnd,即调整TCP报文段首部的窗口字段,来限制发送方向网络注入的报文的速率,同时发送方会根据其对当前网络拥塞程度的估计而确定窗口值,称为拥塞窗口cwnd。
TCP为每个连接设置一个持续的计时器,只要TCP收到对方零窗口通知,就启动持缓计时器,时间到期就发送一个零窗口探测报文段,接收方给出当前的窗口值若仍是零,则返回重新计时。
传输层和数据链路层的流量控制的区别:传输层定义的端到端用户之间的流量控制,数据链路层定义2个中间 的相邻节点的流量控制,另外数据链路层的滑动窗口协议的窗口大小不能动态变化而传输层的则可以动态变化。

5.3.6 TCP的拥塞控制

拥塞控制是指防止过多的数据注入网络保证网络中的路由器或链路不致过载,拥塞控制和流量控制的区别:拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程涉及所有主机路由器。相反流量控制往往是指点对点的通信量的控制,是一个端到端的问题,他所要做的是抑制发送端发送数据的速率以便接收端来得及接收。两者也有相似的地方即都是通过控制发送方的发送速率来达到控制效果。
发送窗口的上限值=min{rwnd,cwnd}。拼车网建议标准定义了进行拥塞控制的4种算法:慢开始、拥塞避免、快重传和快恢复。
慢开始算法在TCP刚刚建立好并开始发送TCP报文段时,先令拥塞窗口cwnd等于1即一个最大报文段长度MSS,每收到一个对新报文段的确认将cwnd加1即增大一个MSS,用这样的方法逐步增大发送方的cwnd可使分组注入网络的速率更加合理。cwnd的大小指数式增长,直到cwnd的增大到一个规定的慢开始门限ssthresh然后改用拥塞避免算法。
拥塞避免算法的思路是当cwnd到达慢开始门限时,让拥塞窗口cwnd缓慢增大,每经过一个往返时延RTT就把发送方的拥塞窗口cwnd加1,使拥塞窗口cwnd线性规律缓慢增长。无论在慢开始阶段还是在拥塞避免阶段只要发送方判断网络出现拥塞未按时收到确认就把慢开始门限设置为出现拥塞时发送方的cwnd的值的一半,但不能小于2,然后把拥塞窗口cwnd的重新设置为1,执行慢开始算法。这样的目的是迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够的时间把队列中积压的分组处理完。cwnd值不能跃过ssthresh值。
快充传:当发送方连续收到3个重复的ACK报文时直接重传对方尚未收到的报文,而不必等待那个报文段设置的重传计时器超时。快恢复的算法原理如下:当发送方连续收到3个冗余ACK时执行快恢复算法,把慢开始门限设置为此时发送方cwnd的一半,这是为了预防网络发生拥塞。
在这里插入图片描述
在TCP建立和网络出现超时时采用慢开始和拥塞避免算法当发送方接收到冗余ACK采用快重传和快恢复算法

下一章 第六章 应用层

第六章 应用层

相关文章:

计算机网络重点概念整理-第五章 传输层【期末复习|考研复习】

第五章 传输层 【期末复习|考研复习】 计算机网络系列文章传送门: 第一章 计算机网络概述 第二章 物理层 第三章 数据链路层 第四章 网络层 第五章 传输层 第六章 应用层 第七章 网络安全 计算机网络整理-简称&缩写 文章目录 第五章 传输层 【期末复习|考研复习…...

Java毕业设计 SpringBoot 新能源充电桩管理系统

Java毕业设计 SpringBoot 新能源充电桩管理系统 SpringBoot 新能源充电桩管理系统 功能介绍 管理员 登录 验证码 注册 系统用户管理 普通用户管理 通知公告管理 留言管理 充电站管理 充电桩管理 充电桩预约 充电管理 订单管理 修改密码 普通用户 登录 修改个人资料 通知公告…...

JNI接口

NewStringUTF和NewString接口测试 打开输入法“显示表情与符号” 右键,拷贝字符简介 🍌 香蕉 Unicode: U1F34C,UTF-8: F0 9F 8D 8C unicode码 🍌 \U0001f34c utf-8编码为0xf09f8d8c,结合char或char8_t的长度&…...

国内好用的免费ai软件

国内就只推荐几个大厂,基本感受都差不多 百度文心一言 百度研发的知识增强大语言模型,能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。 地址:文心一言 (baidu.com) 阿里通…...

MAC缓解WebUI提示词反推

当前环境信息: 在mac上安装好stable diffusion后,能做图片生成了之后,遇到一些图片需要做提示词反推,这个时候需要下载一个插件,参考: https://gitcode.net/ranting8323/stable-diffusion-webui-wd14-tagg…...

【设计模式之原型模式 】– C++

5. 原型模式 – 复制粘贴,一摸一样 简介 原型模式(Prototype Pattern)是一种创建型设计模式,其主要目的是通过复制现有对象来创建新的对象,而无需从头开始构建。 使用场景 它通常用于以下情况: 当一个系统…...

Flask路由机制分析之二

一、前言 上篇 《Flask 路由机制分析之一》主要讲了Python函数的特性以及装饰器的基本概念,这节我们具体分析一下路由内部机制,Flask路由依赖于werkzegu的routing模块来实现。 二、werkzegu的routing模块介绍 Werkzegu库的routing模块主要功能在于URL…...

vue中如何获取当时时间时分秒

在 Vue 中可以使用 JavaScript 中的 Date 对象来获取当前时间&#xff0c;然后使用 Vue 中的数据绑定将时间显示在页面上。 <template><div><p>当前时间&#xff1a;{{ time }}</p></div> </template><script> export default {dat…...

matlab simulink 直线一级倒立摆控制(自起摆和稳态控制)

1、内容简介 略 6-可以交流、咨询、答疑 2、内容说明 控制器设计 自起摆建模 规定正方向&#xff1a;顺时针为角度&#xff08;力矩&#xff09;正方向&#xff0c;向右为位移正方向。 在规定的正方向条件下&#xff0c;图 1 所示摆杆的角度φ为正值&#xff0c; 下车向右加…...

Transformers实战(二)快速入门文本相似度、检索式对话机器人

Transformers实战&#xff08;二&#xff09;快速入门文本相似度、检索式对话机器人 1、文本相似度 1.1 文本相似度简介 文本匹配是一个较为宽泛的概念&#xff0c;基本上只要涉及到两段文本之间关系的&#xff0c;都可以被看作是一种文本匹配的任务&#xff0c; 只是在具体…...

【错误解决方案】ModuleNotFoundError: No module named ‘PeptideBuilder‘

1. 错误提示 在python程序中&#xff0c;试图导入一个不存在的模块PeptideBuilder导致的错误&#xff1a; 错误提示&#xff1a;ModuleNotFoundError: No module named PeptideBuilder 2. 解决方案 解决方案是确保你已经正确安装了PeptideBuilder模块。你可以通过pip来安装它…...

汇编学习(1)

汇编、CPU架构、指令集、硬编码之间的关系 ● 汇编语言&#xff1a;这是一种低级语言&#xff0c;用于与硬件直接交互。它是由人类可读的机器码或指令组成的&#xff0c;这些指令告诉CPU如何执行特定的任务。每条汇编指令都有一个对应的机器码指令&#xff0c;CPU可以理解和执…...

C#,数值计算——分类与推理Svmlinkernel的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class Svmlinkernel : Svmgenkernel { public int n { get; set; } public double[] mu { get; set; } public Svmlinkernel(double[,] ddata, double[] yy) : base(yy, ddata) …...

【鸿蒙软件开发】ArkTS容器组件之Badge

文章目录 前言一、Badge组件1.1 子组件1.2 接口接口1参数 接口2参数 BadgePosition枚举说明BadgeStyle对象说明 1.3 示例代码 总结 前言 Badge组件&#xff1a;可以附加在单个组件上用于信息标记的容器组件。 一、Badge组件 可以附加在单个组件上用于信息标记的容器组件。 说…...

H5游戏源码分享-命悬一线

H5游戏源码分享-命悬一线 在合适的时机跳下绳子&#xff0c;能安全站到木桩上&#xff0c;就通过。 游戏源码 <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><meta name&…...

【电路笔记】-交流电阻和阻抗

交流电阻和阻抗 文章目录 交流电阻和阻抗1、概述&#xff1a;电阻率2、交流状态与直流状态近似性3、交流状态与直流状态的差异性3.1 趋肤效应(The Skin Effect)3.2 靠近效应&#xff08;The Proximity Effect&#xff09; 4、总结 电阻是一种特性&#xff0c;用于表征当电压差施…...

android开发使用OkHttp自带的WebSocket实现IM功能

一、背景 android app开发经常会有IM需求&#xff0c;很多新手不晓得如何入手&#xff0c;难点在于通讯不中断。其实android发展到今天&#xff0c;很多技术都很完善&#xff0c;有很多类似框架可以实现。例如有&#xff1a;okhttp自带的websocket框架、easysocket等等。本文主…...

前端小技巧: TS实现柯里化函数

实现 curry 函数&#xff0c;把其他函数柯里化 curry 返回一个函数fn执行fn, 中间状态返回函数&#xff0c;如 add(1), 或者 add(1)(2)最后返回执行结果&#xff0c;如 add(1)(2)(3) function curry(fn:Function) {const fnArgsLen fn.length // 传入函数的参数长度let args…...

【算法-数组2】有序数组的平方 和 长度最小的子数组

今天&#xff0c;带来数组相关算法的讲解。文中不足错漏之处望请斧正&#xff01; 理论基础点这里 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 示例 1&#xff1a; 输…...

H5游戏源码分享-接苹果游戏拼手速

H5游戏源码分享-接苹果游戏拼手速 看看在20秒内能接多少个苹果 <html> <head><title>我是你的小苹果</title><meta charset"utf-8"/><meta name"viewport" content"initial-scale1, user-scalableno, minimum-scale…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板&#xff08;STM32F103RBT6&#xff09;通过I2C驱动ICM20948九轴传感器&#xff0c;实现姿态解算&#xff0c;并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化&#xff0c;适合嵌入式及物联网开发者。在基础驱动上新增…...