计算机网络(王道考研)笔记个人整理——第五章:传输层

本文主要是介绍计算机网络(王道考研)笔记个人整理——第五章:传输层,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第五章:传输层

传输层主机才由的层次

  • 功能

    1.传输层提供进程和进程之间的逻辑通信

    2.复用和分用

    3.传输层对收到的报文进行差错检测

  • 协议UDP,TCP

    • 面向连接的传输控制协议TCP

      传送数据之前必须建立连接,数据传送结束后要释放连接。不提供广播或多播服务。由于TCP要提供可靠的面向连接的传输服务,因此不可避免增加许多开销:确认、流量控制、计时器及连接管理等。

      • 特点:可靠,面向连接,时延大,适用于大文件。

        1.面向连接(虚连接)的传输层协议

        2.每一条TCP连接只能有俩个端点,每一条TCP连接只能是点对点的

        3.TCP提供可靠交付服务,无差错、不丢失、不重复、按序到达。可靠有序,不丢不重。

        4.TCP提供全双工通信。(发送缓存:准备发送的数据&已发送但尚未收到确认的数据、接收缓存:按序到达但尚未接收应用程序读取的数据&不按序到达的数据)

        5.TCP面向字节流:把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。

      • 报文段首部格式

        Untitled

        • 6个控制位:

          紧急位URG:为1时标明此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用再缓存里排队,配合紧急指针字段使用。

          确认位ACK:ACK=1时确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1。

          推送位PSH:为1时接收方尽快交付接收应用进程,不用等到缓存填满再向上交付。

          Untitled

          复位RST:为1时表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输链接。

          同步位SYN:SYN=1时,表明是一个连接/连接接收报文

          终止位FIN:FIN=1时,表明此报文段发送发数据已发完,要求释放连接

          窗口:指发送本报文段的一方接收窗口现在允许对方发送的数据量。

          检验和:检验首部+数据,检验时要加上12B伪首部,第四个字段为6

          紧急指针:URG=1才有意义,指出本报文段中紧急数据的字节数。

          选项:最大报文段长度MSS、窗口扩大、时间戳、选择确认.

      • TCP连接管理

        TCP连接传输三个阶段:连接建立→数据传送→连接释放。

        TCP连接的建立采用客户服务器方式,主动发起连接建立的应用程序叫做客户,而被动等待连接建立的应用进程叫服务器。

        • TCP连接建立
            • Untitled

      1.客户端发送连接请求报文段,无应用层数据。SYN=1,seq=x(随机)

      2.服务端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,允许连接,无应用层数据。

      3.客户端为该TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据。

    • SYN洪泛攻击

      Untitled

      解决办法:设置SYNcookie

    • TCP连接释放

      Untitled

    • TCP可靠传输

      传输层使用TCP实现可靠传输。

      可靠:保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的。

      方法:1.校验 2.序号 3.确认 4.重传

      TCO的发送方在规定的时间内没有收到确认就要重传已发送的报文段。(超时重传)

      规定的时间:采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)

      • 冗余ACK(冗余确认)

        每当比期望序号大的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节的序号。

        发送方已发送1,2,3,4,5报文段;接收方收到1,返回给1的确认(确认号为2的第一个字节);接收方收到3,返回给1的确认(确认号为2的第一个字节);接收方收到4,返回给1的确认(确认号为2的第一个字节);接收方收到5,返回给1的确认(确认号为2的第一个字节);发送方收到3个对于报文段1的冗余ACK→认为2报文段丢失,重传2号报文段

  • TCP流量控制

    流量控制:控制发送方发送速率,通过滑动窗口机制。

    过程:接收方根据自己接收缓存的大小,动态调整发送方的发送窗口大小,即接收窗口rwnd(接收方设置确认报文段的窗口字段来将rwnd通知给发送方),发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值。

      • Untitled
    • TCP拥塞控制(全局)

      条件:对资源需求的总和>可用资源。许多网络资源同时呈现供应不足→网络性能变坏→网络吞吐量将随输入负荷增大而下降

      拥塞控制:防止过多数据注入网络中。

      • 拥塞控制的四种算法

        假定:1.数据单方向传送,另一方向只传送确认。2.接收方总是有足够大缓存空间,因而发送窗口大小取决于拥塞程度。(一般来说取决于接收窗口和拥塞窗口的最小值)

        接收窗口:接收方根据接收缓存设置的值,并告知给发送方,反映接收方容量

        拥塞窗口:发送方根据自己估算的网络拥塞程度而设置的窗口值,反应网络当前容量。

        • 慢开始,拥塞避免

          Untitled

        • 快重传,快恢复

          Untitled

  • 无连接的用户数据报协议UDP

    传送数据之前不需要建立连接,收到UDP报文后也不需要给出任何确认。

    • 特点

      不可靠,无连接,时延小,适用于小文件。

      1.无连接,减少开销和发送数据之间的时延

      2.使用最大努力交付,即不保证可靠交付

      3.面向报文,适合一次性传输少量数据的网络应用

      应用层给UDP多长的报文,UDP就照样发送,即一次发一个完整报文

      4.UDP无拥塞控制,适合很多实时应用

    • UDP校验

        • Untitled

        Untitled

      Untitled

      检验和检测整个UDP数据报是否有错,错就丢弃。分用时找不到对应的目的端口号就丢弃报文,并给发送方发送ICMP”端口不可达“差错报告报文。

  • 传输层寻址与端口

    复用:应用层所有应用进程都可以通过传输层再传输到网络层

    分用:传输层从网络层收到数据后交付指明的应用进程。

    端口(逻辑端口/软件端口):是传输层的SAP,标识主机中的应用进程。

    端口号只有本地意义,再因特网中不同计算机的相同端口是没有联系的。

    端口号长度为16bit,能标识65536个不同的端口号。

    Untitled

    传输层寻址与端口

    Untitled

    在网络中采用发送方与接收方的套接字组合识别端点,套接字唯一标识了网络中的一个主机和它上面的一个进程

    套接字Socket=(主机IP地址,端口号)

这篇关于计算机网络(王道考研)笔记个人整理——第五章:传输层的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/902421

相关文章

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个