计算机网络笔记5 传输层

news2025/7/20 17:24:29

文章目录

  • 前言
  • 一、运输层概述
  • 二、运输层的端口与复用、分用的概念
  • 三、UDP协议 和 TCP协议 对比
    • 用户数据报协议 UDP💦(User Datagram Protocol)
    • 传输控制协议 TCP💦(Transmission Control Protocol)
  • 四、TCP协议
    • 1、TCP的三次握手和四次挥手
    • 2、TCP的流量控制(flow control)💦
    • 3、TCP的拥塞控制💦
    • 4、TCP的超时重传
    • 5、TCP的可靠传输
  • 本章思维导图

前言

站在巨人的肩膀上,让知识的获得更加容易!本文为学习计算机网络后,自顶向下的学习笔记;

  • 学习视频来源: 计算机网络微课堂(有字幕无背景音乐版)
  • 课件pdf来源:评论区up bili_68567544整理目录分享
  • 思维导图来源:https://blog.csdn.net/weixin_45067603/article/details/107053479
  • 参考文章:百度百科、知乎、掘金等文具体位置具体标注
    课程相关资源(课件、PDF文档、网络仿真实验软件)稍后有时间整理分享链接到评论区自行下载(网盘或者上传csdn)

系列目录:

  • 计算机网络笔记6 应用层

一、运输层概述

运输层为运行在不同主机上的应用进程提供直接的通信服务,向上层屏蔽下面的网络核心细节如(网络拓扑、路由器选择协议等),使应用进程仿佛是存在一条端到端的逻辑通信信道。

计算机网络体系中物理层、数据链路层、网络层共同实现了主机到主机之间的通信,但是真正在网络中进行通信的实体是位于通信主机中的进程,运输层就是为运行在不同主机上的应用进程提供直接的通信服务,所以,运输层协议又称为端到端协议
在这里插入图片描述
根据应用需求的不同,运输层为应用层提供了两种不同的运输协议,即面向连接的TCP无连接的UDP,这是本章的主要内容

二、运输层的端口与复用、分用的概念

为了区分运行在计算机上的进程,使用进程标识符PID(Process ID)标志运行在计算机上的进程(不同操作系统使用不同格式的进程标识符)
为了让不同操作系统的应用进程之间能够网络通信,TCP/IP体系的运输层用统一的方法–端口号(Port ID)区分应用层不同的应用进程
端口号长度16bit,所以取值范围为0-65535,端口号划分如下:

  • 熟知端口号(或系统端口号或公认端口号):数值0~1023。FTP的20/21,HTTP的80,DNS的53等
  • 登记端口号(或注册端口号):数值1024-49151。为没有系统端口号的应用程序提供的。必须在IANA按照规定进行登记,以免重复。
  • 客户端使用的端口号:
    也叫做动态端口号,或者短暂端口号。数值为49152~65535,由于这类端口号仅在客户进程运行时才动态选择,程序结束则已使用过的端口号就被回收,以便以后供其它客户进程使用。

Windows下查看PID与端口号:使用快捷键Ctrl+Shift+Esc呼出任务管理器后点击服务可查看 或者 使用快捷键win+r后再输入cmd回车,使用tasklist命令查看
Linux下使用命令 netstat -tunlp查看或者ps

注意: 端口号只是用来标记本计算机中应用层的各进程,在互联网中,不同计算机的相同端口是没有联系的,常用端口号如下了解即可
在这里插入图片描述
寻址中的复用与分用

  • 复用:应用层所有的应用进程都可以通过传输层再传输到网络层,通俗的说就是多个用户使用一个IO资源 发送消息 时,我们称之为“复用”。

  • 分用:传输层从网络层收到数据后交付给指明的应用进程,通俗的说就是多个用户使用一个IO资源 接收消息 时,我们称之为 “分用” 。
    在这里插入图片描述

在网络层

局域网内多个主机利用一个路由网关发送消息给互联网的其他主机。这也是复用技术。

同理,利用网关接收路由数据报就叫 分用技术。

在运输层

操作系统的 多个进程(这里一个端口表示一个进程) 利用一个运输层协议(或者称为运输层接口)发送数据称为复用

同理,接收时叫做 分用

在应用层

操作系统的 多个线程 利用一个端口(或者叫socket,socket = IP+端口号 )发送消息称为“”复用“”(有一个技术名词“”IO多路复用“”讲着的大概就是这个意思)

同理,接收时叫分用

在网络中使用套接字Scoket唯一的标识网络中的一个主机和它上面的一个进程;(Socket = IP + PID)

三、UDP协议 和 TCP协议 对比

用户数据报协议 UDP💦(User Datagram Protocol)

  • UDP 在传送数据之前不需要先建立连接,远程主机在收到 UDP 报文后,不需要给出任何确认。
  • UDP将可靠传输的实现放到了应用层,然后类似于TCP,实现确认机制,重传机制
  • UDP不属于连接型协议,因而具有消耗资源小,处理速度快等优点,所以通常音频、视频通话在传送时使用UDP比较多,因为它们即使丢失一两个数据包也不会对结果产生太大影响
  • UDP传输层无法保证数据的可靠传输,只能通过应用层来实现了;实现的方式可以参考TCP可靠传输的方式,只是实现不在传输层,转移到了应用层,目前有如下开源程序利用UDP实现了可靠的数据传输;分别有RUDP, RTP, UDT

传输控制协议 TCP💦(Transmission Control Protocol)

  • TCP 提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。
  • TCP 不提供广播或多播服务。由于 TCP 要提供可靠的,面向连接的传输服务(TCP的可靠体现在TCP在传递数据之前,有三次握手来建立连接,而且在数据传递时,有流量控制、拥塞控制等机制,在数据传完后,四次挥手断开连接用来节约系统资源),这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。
  • TCP 一般用于文件传输、发送和接收邮件、远程登录等场景

在这里插入图片描述

四、TCP协议

1、TCP的三次握手和四次挥手

这点最长最复杂最重要单独开一篇文章TCP的三次握手和四次挥手
也可看小牛肉的文章TCP的三次握手和挥手

2、TCP的流量控制(flow control)💦

如果发送方数据发送太快,接收方来不及接收,就会造成数据丢失,所以使用滑动窗口机制来实现流量控制,让发送方的发送速率不要太快,接收方来得及接收。
一个案例搞懂流量控制:
假设A和B已建立TCP连接后,设一个报文段100B,报文段序列号初始值为1,接收窗口rwnd=400,B对A流量控制,A向B发送数据窗口变化过程如下:
ps:使用了一次累计确认机制ack和三次流量控制机制rwnd(发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值)
在这里插入图片描述
如果最后B不允许A再发送数据了后,B在处理完数据之后想要恢复窗口大小时,发送的有rwnd大小的数据报丢了怎么办?此时A有B的指令在前,发送窗口为0无法发送数据,B也在等待A回复,造成了类似死锁的现象
在这里插入图片描述
解决方法:使用计时器
TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。
若持续计时器设置的时间到期,就发送一个零窗口探测报文段。接收方收到探测报文段时给出现在的窗口值。
若窗口仍然是0,那么发送方就重新设置持续计时器。
在这里插入图片描述

3、TCP的拥塞控制💦

在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏这种情况就叫做拥塞(congestion)。

  • 在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。
    在这里插入图片描述
    拥塞控制通过如下图所示4种算法实现,通常两两结合使用
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    例题:
    在这里插入图片描述

4、TCP的超时重传

超时重传时间RTO设计短了容易有不必要的重传让网络负荷增大,长了容易造成数据丢失,而TCP协议采用自适应算法,动态的改变重传时间RTTs(加权平均往返时间),具体计算方法如下:
在这里插入图片描述
Tips:这里的算法推导有个非常精彩的过程,建议自行观看视频体会,这里只放最终算式便于总结和复习!

5、TCP的可靠传输

TCP基于字节为单位的滑动窗口来实现可靠传输
在这里插入图片描述
可靠传输这部分其实包含了很多的内容,也有和前面重合的,这部分看了不少文章还是博客园大佬靠谱儿TCP协议如何保证可靠传输?

本章思维导图

思维导图来源:https://blog.csdn.net/weixin_45067603/article/details/107053479,虽然B站王道的计网相比其他课程略微拉跨,但是这个博主总结的很不错,所以一并用了,差不多的,之后自己会自己总结啦,学的时候感觉好多好难,谢希仁的书听老师讲了一遍还是感觉好难的样子,自己理一遍才行!
在这里插入图片描述

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

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

相关文章

作用域和作用域链

文章目录1.作用域(Scope)1.1 什么是作用域1.2 全局作用域1.3 函数作用域1.3 块级作用域2. 作用域链2.1 自由变量2.2 作用域链2.3 *自由变量的取值2.4 作用域与执行上下文的区别3.总结1.作用域(Scope) 1.1 什么是作用域 当前的执…

easy-rules规则引擎最佳落地实践

写作目的 这是一个头部互联网公司中的一个问题。因为有很多业务产品线,作为一个新人或者团队外的人员是很难区分不同的产品线之间的区别的,因此需要给某个产品线一个描述。但是随着业务的发展,产品线下可能又根据某个字段进一步划分&#xf…

招生CRM系统|基于Springboot实现培训机构招生CRM管理系统

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

Mongodb操作基础 分片

Mongodb分片 MongoDB分片是MongoDB支持的另一种集群形式,它可以满足MongoDB数据量呈爆发式增长的需求。当MongoDB存储海量的数据时,一台机器可能无法满足数据存储的需求,也可能无法提供可接受的读写吞吐量,这时,我们就…

基于内容的个性化推荐算法

一、什么是推荐算法 随着移动互联网的高速发展与智能手机的普及,海量的有用信息虽然为人们提供了更多的价值,然而信息的泛滥也意味着为了寻找合适的信息必须付出更多的时间成本。事实上,有时候仅仅是浏览和简单的查询来寻找有用的信息变得相…

「强烈收藏」Python第三方库资源大全,1000+工具包

前言 awesome-python 是 vinta 发起维护的 Python 资源列表,内容包括:Web 框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。 (文末送读者福利) …

超全!程序员必备的20个学习网站,看这一篇就够了!

之前一直想出个程序员学习清单,终于腾出时间弄出来了,也趁此机会整理了收藏夹。 此篇对于新手程序员比较有用,技术老鸟们也可以查缺补漏。 话不多说,纯纯干货呈上,赶紧点个赞收藏,以后会用得上!…

CMake中include_directories的使用

CMake中include_directories命令用于在构建(build)中添加包含目录,其格式如下: include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...]) 将给定的目录添加到编译器(compiler)用于搜索包含文件的目录。相对路径被解释为相对于当前源目录。 包含目录被添加到当前C…

【网络】tcpdump、Wireshark 案例超详细介绍

文章目录网络分层应用层找到服务器的 IP查接口、对象的耗时删除指定网站的Cookie表示层、会话层tcpdump、wireshard传输层telnet: 路径可达性测试nc: 路径可达性测试netstat:查看当前连接状态iftop:查看当前连接的传输速率netstat -s: 查看丢包和乱序的统…

万字 HashMap 详解,基础(优雅)永不过时

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 前言 大家好,我是小彭。 在上一篇文章里,我们聊到了散列表的整体设计思想,在后续几篇文章里,我们将以 Java 语言为例&#xff…

【王道计算机组成原理Note】5.5 指令流水线

5 指令流水线 5.1 指令流水的定义 一条指令的执行过程可以分成多个阶段(或过程)。根据计算机的不同,具体的分法也不同。 取指:根据Pc内容访问主存储器,取出一条指令送到IR中。分析:对指令操作码进行译码,按照给定的寻…

Visio 安装暴雷记录

Visio 安装记录起因: office2016家庭学生版中,安装visio2021后,插入word的vsdx图形右键显示unkown类型,无法识别,给学习工作带来很多麻烦!   搜查一圈没找到对应可用的方法,想着可能是visio20…

MobPush for Flutter

集成准备 这是一个基于 MobPush 功能的扩展的 Flutter 插件。使用此插件能够帮助您在使用 Flutter 开发应用时,快速地实现推送功能。 在pubspec.yaml文件中加入下面依赖 dependencies:mobcommonlib:mobpush_plugin: 然后执行:flutter packages get 导…

倍增(小试牛刀)

二分每次折半,倍增每次2的倍数 原理先存储每个小区间的最值也就是初始化,之后直接查询 1. 把数列按倍增分成小区间 对数列的每个元素,把从它开始的数列分成长度为1、2、4、8、…的小区间。下图给出了一个分区的例子,它按小区间…

java--JVM

JVM1.JVM的内存结构2.哪些部分会出现内存溢出3.方法区与永久代、元空间之间的关系4.JVM内存参数5.JVM垃圾回收算法(1)标记清除(2)标记整理(3)标记复制6.GC和分代回收算法7.三色标记和并发漏标问题8.垃圾回收…

【分布式技术专题】「Zookeeper中间件」给大家学习一下Zookeeper的”开发伴侣”—Curator-Framework(基础篇)

CuratorFramework基本介绍 CuratorFramework是Netflix公司开源的一套Zookeeper客户端框架,它作为一款优秀的ZooKeeper客户端开源工具,主要提供了对客户端到服务的连接管理和连接重试机制,以及一些扩展功能,它解决了很多ZooKeeper…

Linux服务器配置与管理(基于Centos7.2)任务目标(四)

文章目录一、任务目标二、任务资讯三、任务实施3-1.RPM软件包管理3-2.YUM方式安装软件一、任务目标 实施该工单的任务目标如下: 知识目标 1.了解RPM提供的功能。 2.了解YUM相对于RPM所具有的优点。 能力目标 1.能够通过RPM安装及管理软件包。 2.能够通过YUM安装及管…

uni-app —— 小程序加入购物车实现过程

文章目录 前言一、示意图二、整体实现思路三、实现过程 1.加入购物车2.获取当前用户购物车信息3.解决数据获取不及时的问题总结前言 前文已经讲解了如何实现商品规格的选择,那么接下来就应该将用户选中的商品加入购物车啦!那么如何实现呢?请…

[附源码]计算机毕业设计JAVA儒家文化网站

[附源码]计算机毕业设计JAVA儒家文化网站 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis M…

FilterListenerAjax的介绍

目录 一、Filter 1、Filter概述 2、过滤器链 二、Listener 三、Ajax 1、基本介绍 2、快速入门案例 3、axios 4、JSON 一、Filter 1、Filter概述 ▶ 过滤器 Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请…