【计算机网络】学习笔记:第五章 传输层【王道考研】

news2024/12/29 10:31:58

基于本人观看学习b站王道计算机网络课程所做的笔记,不做任何获利 仅进行交流分享

特此鸣谢王道考研 若有侵权请联系,立删

如果本篇笔记帮助到了你,还请点赞 关注 支持一下 ♡>𖥦<)!!

主页专栏有更多,如有疑问欢迎大家指正讨论,共同进步!

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ  

更多计算机网络笔记:王道计算机网络笔记专栏汇总 

目录

b站王道计算机教育官方课程视频链接:

一、传输层概述

传输层:

传输层的功能:

传输层的两个协议:

传输层的寻址与端口

二、UDP协议

UDP概念 

UDP首部格式

UDP校验

三、TCP协议特点和TCP报文段格式

1.TCP协议的特点

2.TCP报文段首部格式 

3.TCP连接管理  三次握手、四次挥手

TCP的连接建立 

SYN洪泛攻击

TCP的连接释放

4.TCP可靠传输

序号

重传

5.TCP流量控制

6.TCP拥塞控制 

拥塞控制四种算法

传输层总结


b站王道计算机教育官方课程视频链接:

         老师讲的超级好!!(≧∀≦) 

王道计算机网路课程视频https://www.bilibili.com/video/BV19E411D78Q/?share_source=copy_web&vd_source=6605d3cd5f58ef0c4e5ae59875ef0dda9875ef0dda

一、传输层概述

传输层:

传输层是只有主机才有的层次    为应用层提供通信服务        使用网络层的服务

传输层的功能:

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

2.复用和分用

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

4.传输层的两种协议

传输层的两个协议:

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

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

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

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

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

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

传输层的寻址与端口

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

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

 

二、UDP协议

UDP概念 

UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。

UDP的主要特点:

1.UDP是无连接的,减少开销和发送数据之前的时延。

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

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

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

5.UDP首部开销小,8B,TCP20B。

UDP首部格式

UDP校验

 

三、TCP协议特点和TCP报文段格式

1.TCP协议的特点

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

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

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

4.TCP提供全双工通信。

5.TCP面向字节流。

2.TCP报文段首部格式 

 6个控制位

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

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

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

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

同步位SYN:SYN=1时,表明是一个连接请求/连接接受报文。

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

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

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

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

3.TCP连接管理  三次握手、四次挥手

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

 

TCP的连接建立 

ROUND 1:
客户端发送连接请求报文段,无应用层数据。SYN=1,seq=x(随机)                   syn报文段不携带数据,会消耗掉一个序列号

ROUND 2:
服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,允许连接,无应用层数据。SYN=1,ACK=1,seq=y(随机),ack=x+1

ROUND 3:
客户端为该TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据。SYN=0,ACK=1,seq=x+1,ack=y+1

SYN洪泛攻击

SYN洪泛攻击发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。攻击者发送TCP SYN,SYN是TCP三次握手中的第一个数据包,而当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。这样更加会浪费服务器的资源。攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。

TCP的连接释放

参与一条TCP连接的两个进程中的任何一个都能终止该连接,连接结束后,主机中的“资源” (缓存和变量)将被释放。 

ROUND 1:
        客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接。 FIN=1,seq=u
ROUND 2:  
        服务器端回送一个确认报文段,客户到服务器这个方向的连接就释放了一一半关闭状态。        ACK=1,seq=v,ack=u+1


ROUND 3:
        服务器端发完数据,就发出连接释放报文段,主动关闭TCP连接。        FIN=1,ACK=1,seq=w,ack=u+1


ROUND 4:
        客户端回送一个确认报文段,再等到时间等待计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭。

四次挥手没有结束前 链接都没有断 只是客户端在在第一步的时候申请“我说完了 我不说了” 但是其实还是可以接收数据的

4.TCP可靠传输

 

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

序号

TCP默认使用累计确认。 

重传

确认重传不分家,TCP的发送方在规定的时间内没有收到确认就要重传已发送的报文段。超时重传

TCP采用自适应算法,动态改变重传时间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号报文段。       快速重传

5.TCP流量控制

流量控制:让发送方慢点,要让接收方来得及接收。

TCP利用滑动窗口机制实现流量控制。

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

例:

 

6.TCP拥塞控制 

出现拥塞的条件:
                对资源需求的总和 > 可用资源 

网络中有许多资源同时呈现供应不足—>网络性能变坏—>网络吞吐量将随输入负荷增大而下降

拥塞控制:
                防止过多的数据注入到网络中。          全局性

拥塞控制四种算法

慢开始          拥塞避免             

快重传          快恢复

慢开始和拥塞避免

快重传和快恢复

传输层总结

 

 

更多计算机网络笔记:王道计算机网络笔记专栏汇总  

大家的点赞、收藏、关注将是我更新的最大动力!欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!

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

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

相关文章

【数据结构与算法】哈希—— 位图 | 布隆过滤器 | 哈希切割

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《数据结构与算法》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 哈希是一种映射思想&#xff0c;这里再讲解两种应用哈希思想的数据结构。 哈希—— 位图 | …

边学边记——数据结构☞堆(包括优先级队列的介绍)

目录 一、堆&#xff08;二叉堆&#xff09; 堆是用来干什么的&#xff1f; 堆是用什么存储结构存储的&#xff1f; 1. 堆的概念 2. 堆的性质 3. 堆的存储方式 下标之间的规则&#xff1a; 4. 堆的基本操作 (1). 向下调整/堆化操作 (2).堆的创建 (3).堆的插入 (4…

2023-04-30:用go语言重写ffmpeg的resampling_audio.c示例,它实现了音频重采样的功能。

2023-04-30&#xff1a;用go语言重写ffmpeg的resampling_audio.c示例&#xff0c;它实现了音频重采样的功能。 答案2023-04-30&#xff1a; resampling_audio.c 是 FFmpeg 中的一个源文件&#xff0c;其主要功能是实现音频重采样。 音频重采样是指将一段音频数据从一个采样率…

duubo+zookeeper

1、Dubbo简介 1. Dubbo是什么&#xff1f; 高性能、轻量级、开源、基于java Dubbo 是阿里集团开源的远程服务调用的分布式框架&#xff08;告别Web Service模式中的WSDL&#xff0c;以服务者与消费者的方式在dubbo上注册&#xff09; 协议和序列化框架都可以插拔是及其鲜明…

【办公类-22-04】周计划系列(4)-生成“周计划”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)

代码相当复杂&#xff0c;操作很繁琐&#xff0c;自己都要研究半天T_T 文件夹展示 01提取提取新表的已有内容&#xff08;提取大8班、大7班的新版本里面的额内容&#xff09; &#xff08;需要里面的一些反思&#xff0c;用来占位&#xff09; 这里有一份根据新模板用Python批…

spring2:创建和使用

目录 1.创建Spring项目 1.1创建Maven类 1.2添加Spring支持框架 1.3添加启动类 2.存储Bean对象 2.0 spring项目中添加配置文件(第一次) 2.1创建Bean 2.2把Bean注册到容器中 3.获取并使用Bean对象 3.1创建上下文 3.2获取指定Bean对象 getBean()方法 --> 获取什么…

双周赛103(模拟、网格图BFS、树状数组)

文章目录 双周赛103[6406. K 个元素的最大和](https://leetcode.cn/problems/maximum-sum-with-exactly-k-elements/)模拟 [6405. 找到两个数组的前缀公共数组](https://leetcode.cn/problems/find-the-prefix-common-array-of-two-arrays/)模拟 [6403. 网格图中鱼的最大数目](…

Java 基础进阶篇(一)——— static 静态关键字与单例模式

文章目录 一、static 静态关键字1.1 静态成员变量与实例成员变量1.2 静态成员方法与实例成员方法1.3 static 访问注意事项1.4 内存使用情况 二、工具类三、代码块四、单例模式4.1 饿汉单例4.2 懒汉单例 一、static 静态关键字 static&#xff1a;代表静态的意思&#xff0c;可…

【博学谷学习记录】超强总结,用心分享丨人工智能 AI项目 collate_fn函数理解与记录

目录 Dataloader取数据过程使用报错&#xff1a;默认collate_fn处理不同长度的数据自定义collate_fn伪代码示例 Dataloader取数据过程 取出大小等同于batch size的index列表;将列表列表中的index输入到dataset的getitem()函数中&#xff0c;取出该index对应的数据;对每个index…

一种基于坑位模版的分页方案

一. 概述 1.1 业务诉求 想象一个向用户展示数据的下拉列表&#xff0c;数据的来源有多种方式。支持在每一页都按固定的数据源类型及顺序展示。 1.2 业务场景 up主的主页展示带货商品列表 商品来源有多种&#xff1a;up主自选、官方推荐的、根据up主风格AI推荐用户推荐视频列表…

【编辑刷新数据-汽车品牌展示 Objective-C语言】

一、我们这个利用可重用cell展示汽车品牌案例,就说完了,然后我们再给大家说一个什么东西,就是这个刷新数据这个东西, 1.刷新数据这个东西,我们用的就是代理,再把代理相当于是再给大家复习一下,再把代理复习一下,顺便再说一下怎么刷新数据, 2.接下来,要实现一个什么功…

基于UDQ的并网单相逆变器控制【同步参考系下单相并网全桥正弦PWM逆变器闭环控制】(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

day9 实现UDP通信

目录 socket函数拓展 UDP通信实现过程 代码实现 socket函数拓展 send与recv函数&#xff1a; /*用于发送数据*/ ssize_t send(int sockfd, const void *buf, size_t len,int flags);/*用于接收数据*/ ssize_t recv(int sockfd, void *buf, size_t len,int flags);/*前三个…

无敌0代码ESP8266接入homeassistant的新方法,完美解决新版homeassistant无法自定义MQTT设备的问题

记得之前想要在homeassistant中添加MQTT设备只要在配置文件 configuration.yaml 中配置如下代码即可 但是现在这种方法已经行不通&#xff0c;设备也步显示出来&#xff0c;这给很多homeassistant的忠实粉丝带来巨大不便&#xff0c;作为粉丝的一份子&#xff0c;我绝步允许这种…

Python进阶篇(四)-- ICMP Ping服务程序框架

Ping是一个网络应用程序&#xff0c;用于测试某个主机在IP网络中是否可访问。它也用于测试计算机的网卡或测试网络延迟。Ping的实现通常使用ICMP协议。ICMP协议在协议族中的地位如下图所示&#xff1a; 通过本文&#xff0c;你将更好地理解因特网控制报文协议&#xff08;ICMP&…

TCP协议的特性

目录 TCP协议的特性TCP的首部长度2.TCP如何实现可靠传输2.1 确认应答 2.2 超时重传3.建立连接3.1 三次握手3.2 四次挥手 4.滑动窗口5.流量控制6.拥塞控制7.延时应答8.捎带应答9.面向字节流10.异常情况1.进程关闭 /进程崩溃2.主机关机(正常流程关机)3.主机掉电 TCP协议的特性 TC…

预训练模型之BERT、Transformer-XL、XL-Net等

文章目录 预训练模型&#xff08;Pre-trained Models, PTMs&#xff09;前置知识BERTTransformer-XLXLNetTransformer-XL类似工作&#xff08;Scalable Transformer&#xff09;1. 《Scaling Transformer to 1M tokens and beyond with RMT》2. 《》 预训练模型&#xff08;Pre…

IPsec中IKE与ISAKMP过程分析(主模式-消息5和消息6)

IPsec中IKE与ISAKMP过程分析&#xff08;主模式-消息1&#xff09;_搞搞搞高傲的博客-CSDN博客 IPsec中IKE与ISAKMP过程分析&#xff08;主模式-消息2&#xff09;_搞搞搞高傲的博客-CSDN博客 IPsec中IKE与ISAKMP过程分析&#xff08;主模式-消息3&#xff09;_搞搞搞高傲的博客…

XML解析

XML在以后更多的是用来作为配置文件的。 一. 配置文件 什么是配置文件 用来保存程序在运行时需要的一些参数。 当配置信息比较复杂的时候&#xff0c;我们就可以用XML。 二. XML概述 三. XML的创建、语法规则 根标签就是写在最外面的标签。 <?xml version"1.0&quo…

[已成功]在mac上安装FFmpeg,详细全过程

记录一次痛苦的在mac上安装ffmpeg的过程 前言在 mac 上下载安装ffmpeg的试探之路1、从官方网站下载FFmpeg软件包2、选择用于macOS 64位的静态构建。这将使你重定向到evermeet.cx网站。3、通过 Homebrew 安装 FFmpeg3.1、在使用 Homebrew 安装的过程中可能会出现的问题3.1.1 墙的…