• 【计算机网络】传输层


    计算机网络 传输层

    这里面的二进制反码求和校验算法参考了:https://blog.csdn.net/dingmin1860/article/details/48268927

    • ARQ 自动重发请求
    • 连续ARQ协议

    介绍

    传输层是分界层次,以上是面向应用,以下是面向数据传输

    根据用户的需求不同~

    可靠,面向连接,TCP

    不可靠,非面向连接,UDP。快,传输代价小。

    端口

    16位,0-65535

    0-1023 保留的

    1024-5000 临时的

    通用端口号

    FTP 21/TCP
    DNS 53/UDP
    HTTP 80/TCP
    SMTP 25/TCP

    为什么需要传输层

    网络层已经提供传输服务,不可靠,会丢失分组。

    需要端主机系统自己实现可靠传输。

    几个概念

    面向连接服务

    无连接服务

    可靠服务

    反馈重发

    传输层的两个协议

    • 用户数据报协议 user datagram protocol
    • 传输控制协议 transmission control protocol
    • 传送的数据单位:报文

    UDP

    用户数据报协议 user datagram protocol

    特点

    1. 无连接
    2. 传输单位是报文
    3. 首部小
    4. 不可靠
    • 接收方不需要发送确认信息
    • 不保证数据完整到达目的地
    • 减轻网络的通信负担

    UDP首部格式

    源端口(16位)、目的端口(16)、校验和(16)、消息长度(16)、数据

    端口号:16位,允许65535个不同的端口号

    校验和:校验范围 UDP数据报头+报文主体+伪报头

    消息长度:单位 字节,8字节的UDP头+数据部分,最大长度65535

    UDP校验和

    伪首部(12字节)

    4(字节) 4 1 1 2
    源IP地址 目的IP地址 0 17 UDP长度

    校验和的计算范围:伪首部+UDP首部+数据

    12(字节) 2 2 2 2
    伪首部 源端口 目的端口 消息长度 校验和 数据

    计算方法如IP校验和:二进制反码运算

    UDP不仅检查了端口号,还检查了IP地址

    TCP

    传输控制协议 transmission control protocol

    特点

    面向连接

    三次握手协议建立连接

    在不稳定的IP网络上建立连接

    客户端:主动打开网络连接,发送一个SNY分节,初始化序列号为x

    服务器端:被动打开端口,发送SNY y,和ACK x+1

    客户端:发送ACK y+1

    可靠

    反馈重发机制

    三种策略

    1. 停止等待方式

    收到一个ACK才能发送下一个包

    • 连续工作方式(取决于接收端有没有缓存)
    1. 拉回方式(有累积确认ACK) go back n
    2. 选择重发方式
    ARQ机制:滑动窗口

    计时器

    发送方没有在规定时间内收到ACK,则认为超时并且重新发送该数据包。

    存在问题:收到重复报文。

    接收方可以通过报文序号来去除重复的分组。

    连续ARQ协议

    • 发送方一次可以发送多个分组
    • 接收方一般采用累积确认的方式:对按序到达的最后一个分组发送确认
    滑动窗口sliding windows

    滑动窗口不仅可以实现连续ARQ协议,还可以进行流量控制(发送方和接收方的速度相匹配)

    • 发送方只发送“发送窗口”内的数据
    • 接收方只接收“接收窗口”内的数据

    面向字节流

    滑动窗口

    按照字节数进行确认

    持续计时器

    只要TCP连接的一方A收到对方的零窗口通知,就会启动该持续计时器。

    若计时器到期,A发送零窗口探测报文。对方收到后,给出现在的窗口值。

    流量控制

    发送方发送速率不要太快,既要让接收方来得及接收(防止数据丢失),也不要使网络发生拥塞。

    滑动窗口机制在TCP上可以实现流量控制(双方按照一致的速率发送数据)

    拥塞控制

    基本原理

    某段时间内,需求超过资源所能提供的可用部分,网络的性能就会变坏。--->拥塞

    解决思路

    增加资源,减少需求

    TCP拥塞控制

    TCP首部格式

    最小长度20字节

    UDP vs. TCP

    拥塞控制 vs. 流量控制

    (列了大纲,会补充更新的~!)

    二进制反码求和校验算法

    参考:https://blog.csdn.net/dingmin1860/article/details/48268927

    首先,IP、ICMP、UDP和TCP报文头都有检验和字段,大小都是16bit,算法基本上也是一样的。

    在发送数据时,为了计算数据包的检验和。应该按如下步骤:

    1、把校验和字段设置为0;

    2、把需要校验的数据看成以16位为单位的数字组成,依次进行二进制反码求和;

    3、把得到的结果存入校验和字段中

    在接收数据时,计算数据包的检验和相对简单,按如下步骤:

    1、把首部看成以16位为单位的数字组成,依次进行二进制反码求和,包括校验和字段;

    2、检查计算出的校验和的结果是否为0;

    3、如果等于0,说明被整除,校验和正确。否则,校验和就是错误的,协议栈要抛弃这个数据包。

  • 相关阅读:
    STM32CubeMX 使用
    Zookeeper集群搭建
    golang zookeeper监听事件报错
    git push 报错
    springboot使用postgresql模式下数据库表找不到
    不要在循环中访问数据库,这样会严重影响数据库性能
    SQL查询效率(Oracle)
    游标 数据集 效率比较
    oracle 视图
    INDEX SKIP SCAN 和 INDEX RANGE SCAN以及索引会失效
  • 原文地址:https://www.cnblogs.com/christy99cc/p/11921098.html
Copyright © 2020-2023  润新知