【王道·计算机网络】第五章 传输层

news/2024/5/17 19:19:05 标签: 计算机网络, 网络, udp, tcp/ip, tcp

在这里插入图片描述

一、传输层概述

  • 传输层为应用层提供通信服务,使用网络层服务
  • 传输层的功能:
    1. 提供进程和进程之间的逻辑通信(网络层提供主机之间的逻辑通信)
    2. 复用(发送发不同的应用进程)和分用(接收方正确的数据传送)
    3. 对收到的报文进行差错检测
    4. 两个协议:面向连接的传输控制协议TCP、无连接的用户数据协议UDP
  • TCP协议的特点:可靠、面向连接、时延大,适用于大文件
    1. 传送数据之前必须建立连接,数据传送结束后要释放连接
    2. 不提供广播/多播服务
    3. 增加开销:确认、流量控制、计时器及连接管理等
  • UDP协议的特点:不可靠、无连接、时延小,适用于小文件
    1. 传送数据之前无需连接,收到UDP报文后不需给出任何确认

1.1 传输层的寻址与端口

  • 复用:应用层所有的应用进程都可以通过传输层再传输到网络
  • 分用:传输层从网络层收到数据后交付指明的应用进程
  • 端口(逻辑/软件端口)是传输层的SAP,标识主机中的应用进程
    1. 端口号只有本地意义,在因特网中不同计算机的相同端口没有联系
    2. 端口号的长度为16bit,能标识65536个不同的端口号
      在这里插入图片描述
  • 套接字Socket = (主机IP地址,端口号):在网络中采用发送方和接收方的套接字组合来识别端点,套接字唯一标识了网络中的一个主机和它上面的一个进程

二、UDP协议

  • UDP只在IP数据服务之上增加了:复用分用、差错检测
  • UDP的主要特点:
    1. UDP是无连接的,减少开销和发送数据之前的时延
    2. UDP使用最大努力交付,即不保证可靠交付
    3. UDP是面向报文的,适合一次性传输少量数据的网络应用
    4. UDP无拥塞控制,适合很多实时应用。
    5. UDP首部开销小8B,TCP20B
      在这里插入图片描述
  • UDP首部格式
    在这里插入图片描述
  • UDP校验
    在这里插入图片描述

三、 TCP协议

  • TCP协议的特点
    1. 面向连接(虚连接)的传输协议
    2. 每一条TCP只能有两个端点,即点对点的单播通信
    3. 提供可靠交付的服务,无差错、不丢失、不重复、按序到达;可靠有序、不丢不重
    4. 提供全双工通信:发送缓存、接收缓存
    5. 面向字节流:应用程序交下来的数据看成一连串无结构的字节流
  • TCP报文段首部格式
    在这里插入图片描述

3.1 TCP连接

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

3.3.1 连接建立

  • TCP连接建立采用客户(主动发起连接建立的应用进程)服务器(被动等待连接建立的应用程序)方式
  • SYN洪泛攻击:
    1. SYN洪泛攻击发生在OSI第四层,这种方式利用TCP协议的特性,即三次握手
    2. 攻击者发送TCP SYN(SYN是TCP三次握手中的第一个数据包);当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态(即,半连接状态);服务器收不到再确认的话,还会重复发送ACK给攻击者。
    3. 攻击者对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了
    4. SYN洪泛攻击的解决:SYN cookie
  • TCP连接的建立与释放
    在这里插入图片描述

3.2 可靠传输

  • 可靠:保证接收方进程从缓存区读出的字节流与发送方发送的字节流完全一致
  • TCP实现可靠传输的机制
    1. 校验:增加伪首部,使用二进制反码求和
    2. 序号:一个字节占一个序号,序号字段是一个报文段第一个字节的序号
    3. 确认:TCP默认使用累计确认(TCP只确认这个数据流中第一个丢失字节为止的报文段)
    4. 重传:TCP发送方在规定时间内没有收到确认就要重传已发送的报文段(超时重传)
  • 重传时间:TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间 )
  • 冗余ACK(冗余确认):快速重传
    1. 每当比期望序号大的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节的序号
    2. 发送方收到3个对于报文段n的冗余ACK → 认为n+1报文段丢失,重传该报文段

3.3 流量控制

  • 流量控制:让发送方慢点,让接收方来得及接收
  • TCP利用滑动窗口机制实现流量控制
  • 流量控制的具体过程:
    1. 接收窗口rwnd:在通信过程中,接收方根据自己接收缓存的大小(接收方设置确认报文段的窗口字段来将rwnd通知给发送方),动态地调整发送方的发送窗口大小
    2. 发送方的发送窗口取决于:接收窗口rwnd、拥塞窗口cwnd的最小值
    3. 发送窗口大小可以动态变化
    4. TCP为每一个连接设有一个持续计时器,只要连接的一方收到对方的零窗口通知就启动持续计时器:若持续计时器设置的时间到期,就发送一个零窗口探测报文段,接收方收到后给出现在的窗口值;若窗口仍为0,则重置持续计时器

3.4 拥塞控制

  • 出现拥塞的条件:对资源需求的总和 > 可用资源
  • 网络总许多资源同时呈现供应不足 → 网络性能变坏 → 网络吞吐量将随输入负荷增大而下降
  • 拥塞控制(全局性):防止过多的数据注入到网络

3.4.1 拥塞控制四种算法

  • 拥塞控制四种算法:慢开始、拥塞避免、快重传、快恢复
  • 假定:
    1. 数据单方向传送,另一个方向只传送确认;无捎带确认的情形
    2. 接收方总是有足够大的缓存空间,因而发送窗口的大小取决于拥塞程度
  • 发送窗口 = Min{接收窗口rwnd,拥塞窗口cwnd}
    1. 接收窗口:接收方根据缓存设置的值,并告知给发送方,反应接收方容量
    2. 拥塞窗口:发送方根据自己估算的网络拥塞程度而设置的窗口值,反应网络当前容量
  • 一个传输轮次:
    1. 发送了一批报文段并收到它们的确认的时间
    2. 一个往返时延RTT
    3. 开始发送一批拥塞窗口内的报文段到开始发送下一批拥塞窗口内的报文段的时间
  • 慢开始与拥塞避免
    在这里插入图片描述
  • 快重传与快恢复
    在这里插入图片描述

http://www.niftyadmin.cn/n/342127.html

相关文章

统计学习方法:序贯概率比检验SPRT

Sequential Probability Ratio Test 应用:制造过程中的质量控制和医学试验中的异常检测 1.theory/principal 区别(vs固定样本检验):在固定样本检验中,一定数量的观察结果被用来从两个或多个备选方案中选择一个假设。而SPRT则是一次检查一个…

【华为新版模拟器eNSP Lite实验界面一览,赶紧来学习】

eNSP Lite是华为新开发的数据通信领域网络环境模拟软件,用于支持数通领域的考试认证、网络环境模拟和技术学习而开发的新版模拟器。相比于旧版模拟器eNSP的本地部署模式,新版模拟器eNSP Lite基于云端部署的模式使得软件在使用的过程中变得更加灵活&#…

操作系统易错题

操作系统易错题 假设某硬盘由5个盘片构成(共有8个记录面),盘面有效记录区域的外直径为30cm,内直径为10cm,记录位密度为250位/mm,磁道密度为16道/mm,每磁道分16个扇区,每扇区512字节&…

DevOps系列文章-Kubernetes实现CI与CD配置

Kubernetes实现CI与CD配置 一、基本介绍 基于 Kubernetes 实现 CI/CD 配置,其实和往常那些 CI/CD 配置并没有太大区别。都是通过 提交代码,拉取代码,构建代码,发布代码来实现的。 只不过要是通过 K8s 来实现的话,则是…

English Learning - L3 Lesson3 VOA-Food 译文

听碎 VOA NOW, THE VOA SPECIAL ENGLISH PROGRAM WORDS AND THEIR STORIES We present more expressions about food. They are from Elenir Scardueli, a listener in Brazil. 今天我们将介绍更多关于食物的表达,由巴西听众 Elenir Scardueli 提供。 My mother a…

软件测试5年了,薪资25K,我还怕00后卷吗?

前言 沅哥在这个行业爬摸滚打5年了,从最开始点点点的功能测试到现在到现在成为高级测试,工资也翻了几倍,到了25k。他和我说,最开始他是想躺平的,后来也是被迫卷的,但好在这个结果他很满意。 之所以改变的…

如何优雅地彻底解决 antd 全局样式问题

背景 由于某些原因,我们团队负责在组件 上做二次开发,简单理解就是封装组件,组件库选择了 antd,尴尬的是引入之后发现,父组件 自身是带一套全局样式的,而 子组件antd 又带了一套全局样式,导致 子…

ChatGLM-6B模型结构组件源码阅读

一、前言 本文将介绍ChatGLM-6B的模型结构组件源码。 代练链接:https://huggingface.co/THUDM/chatglm-6b/blob/main/modeling_chatglm.py 二、激活函数 torch.jit.script def gelu_impl(x):"""OpenAIs gelu implementation."""r…