美文网首页
计算机网络传输层

计算机网络传输层

作者: GGBond_8488 | 来源:发表于2020-03-04 15:06 被阅读0次

基本理论和基本机制

端到端的连接

传输层vs网络层

网络层:提供主机之间的逻辑通信
传输层:提供应用进程之间的逻辑通信
位于网络层之上、依赖网络层服务、对网络层服务进行可能的增强

1.多路复用和多路分用:

接收端:多路分用
相同目的地址目的端口号的UDP会被导向同一个socket
每个srcIp srcPort DestIp DestPort 导向自己独有的socket(创建多个socket)
(服务器也可以让一个进程创建多个线程与tcp连接绑定)
发送端:多路复用

2.可靠数据传输机制

什么是可靠?不错、不乱、不丢

可靠数据传输协议

  • 可靠数据传输对应用层、传输层、链路层都很重要
  • 网络Top-10问题
  • 信道的不可靠性决定了可靠数据传输协议(RDT)的复杂性


    可靠数据传输协议
  • 只考虑单向数据传输(但是控制信息双向流动)
  • 利用状态机(Finite State Machine,FSM)刻画传输协议
滑动窗口协议
  • 窗口 :允许使用的序列号范围
    窗口尺寸为N:最多有N个等待确认的消息
  • 滑动窗口 :随着协议的运行,窗口在序列号空间内向前滑动
  • 滑动窗口协议:GBN,SR

GBN
1.发送方 分组头部包含k-bit序列号
窗口尺寸为N,最多允许N个分组未确认

滑动窗口协议
ACK(n):确认到序列号n包含n的分组均以被正确接收(可能收到重复ACK)
为空中的分组设计计时器
超时时间:重传序列号大于等于n,还未收到ACK的所有分组
3.流量控制机制
4.拥塞控制机制

Internet的传输层协议:(TCP/UDP均不保障延迟/带宽)

TCP(可靠的、按序交付服务):

TCP报文段结构

序列号:表示本报文段所发送数据的第一个字节的编号。而不是报文段的编号(这里防止被攻击混入其他的段难以检测的问题)。
建立TCP连接时,双方随即选择序列号

ACKs表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。
累计确认:该序列号之前所有的字节均已被正确接收到(GBN)

简单telnet

TCP在IP层提供的不可靠服务基础上实现可靠数据传输服务
流水线机制
累积确认
TCP使用单一重传定时器
触发重传的事件
超时
收到重复ACK
渐进式
暂不考虑重复ACK
暂不考虑流量控制
暂不考虑拥塞控制

1.点对点 一个sender 一个 reciever

2.可靠的、按序的字节流

3.流水线机制

TCP拥塞控制
拥塞原因
  • 拥塞 :非正式定义:“太多发送主机发送了太多数据或者发送速度太快
    ,以至于网络无法处理”。(导致大量的资源浪费)
    表现:
    分组丢失(路由器缓存溢出)
    分组延迟过大(在路由器缓存中排队)
拥塞控制方法(为什么选在传输层做拥塞控制)
  • 端到端拥塞控制
    网络层不需要显式的提供支持
    端系统通过观察loss,delay等网络行为判断是否发生拥塞(TCP采取这种方法)
  • 网络辅助的拥塞控制
    路由器向发送方显式地反馈网络拥塞信息
    简单的拥塞指示(1bit):SNA,DECbit, TCP/IP ECN, ATM)
    指示发送方应该采取何种速率

案例:


image.png
TCP拥塞控制原理
  • Sender限制发送速率
    LastByteSent-LastByteAcked<= CongWin
    rate ≈ CongWin*RTT Bytes/sec
  • CongWin:
    动态调整以改变发送速率
    反映所感知到的网络拥塞
  • 如何感知网络拥塞
    Loss事件=timeout或3个重复ACK
    发生loss事件后,发送方降低速率
  • 如何合理地调整发送速率
    加性增—乘性减: AIMD
    原理:逐渐增加发送速率,谨慎探测可用带宽,直到发生loss
    Additive Increase: 每个RTT将CongWin增大一个MSS(最大段长度)——拥塞避免
    Multiplicative Decrease: 发生loss后将CongWin减半
    慢启动: SS
    原理:当连接开始时,指数性增长
    TCP连接建立时,CongWin=1
    例:MSS=500 byte,RTT=200msec,初始速率=20k bps,可用带宽可能远远高于初始
    速率:希望快速增长
    指数性增长:初始速率很慢,但是快速攀升
    每个RTT将CongWin翻倍
    收到每个ACK进行操作
    SS慢启动

何时应该指数性增长切换为线性增长(拥塞避免)?
当CongWin达到Loss事件前值的1/2时.
实现方法:利用一个变量 Threshold, Loss事件发生时, Threshold被设为Loss事件前CongWin值的1/2。

Loss事件处理办法
3个重复ACKs:CongWin切到一半然后线性增长
Timeout事件:CongWin直接设为1个MSS,然后指数增长,达到threshold后, 再线性增长(拥塞更严重了)

TCP拥塞控制算法

Th = ?
CongWin = 1 MSS
/* slow start or exponential increase */
While (No Packet Loss and CongWin < Th) {
send CongWin TCP segments
for each ACK increase CongWin by 1
}
/* congestion avoidance or linear increase */
While (No Packet Loss) {
send CongWin TCP segments
for CongWin ACKs, increase CongWin by 1
}
Th = CongWin/2
If (3 Dup ACKs) CongWin = Th;
If (timeout) Cong

4.接收方/发送方缓存

5.全双工:同一连接中能传输双数据流

6.面向连接(连接管理)

通信双发在发送数据之前必须建立连接
连接状态只在连接的两端中维护,在沿途节点并不维护状态

TCP连接包括:两台主机上的缓存、连接状态变量、socket等
客户端初始化的序列号是随机的

三次握手 三次握手 四次握手关闭连接

7.流量控制机制:发送方不会传输的太多、太快以至于淹没接收方(buffer溢出)

image.png
接收方为TCP连接分配buffer
上层应用可能处理buffer中数据的速度较慢
速度匹配机制
Receiver通过在Segment的头部字段将RcvWindow 告诉Sender
Sender限制自己已经发送的但还未收到ACK的数据不超过接收方的空闲RcvWindow尺寸
Receiver告知SenderRcvWindow=0时,即使=0发送方也可以发送一个很小的段,防止接收不到接下来的RecvWindow

8.复用/分用

UDP(不可靠的交付任务):

1.基于“尽力而为”的网络层,没有做(可靠性)
丢失
非按序到达

2.基于Internet IP协议
复用/分用
简单的错误校验

3.无连接
UDP发送方和接收方之间不需要握手
每个UDP段的处理独立于其他段

UPD优点:
1.无需建立连接(减少延迟)-DNS
2.实现简单,无需维护连接状态
3.头部开销小(8byte)
4.没有拥塞控制:应用可更好的控制发送时间和速率

常用于流媒体应用
1.容忍丢失
2.速率敏感

DNS/SNMP

在UDP上实现可靠数据传输

  • 在应用层增加可靠性机制
  • 应用特定的错误恢复机制


    UDP报文段格式

UDP校验和:检测UDP段在传输过程中是否发生错误

相关文章

  • 计算机网络 - 目录

    计算机网络01 - 应用层 计算机网络02 - 传输层 计算机网络03 - 网络层 计算机网络04 - 数据链路层...

  • 计算机网络篇——网络层

    计算机网络系列 计算机网络篇——概述 计算机网络篇——链路层 计算机网络篇——网络层 计算机网络篇——传输层 计算...

  • 计算机网络篇——应用层

    计算机网络系列 计算机网络篇——概述 计算机网络篇——链路层 计算机网络篇——网络层 计算机网络篇——传输层 计算...

  • 计算机网络篇——传输层

    计算机网络系列 计算机网络篇——概述 计算机网络篇——链路层 计算机网络篇——网络层 计算机网络篇——传输层 计算...

  • 计算机网络篇——链路层

    计算机网络系列 计算机网络篇——概述 计算机网络篇——链路层 计算机网络篇——网络层 计算机网络篇——传输层 计算...

  • 计算机网络面试核心

    计算机网络面试核心 传输层控制协议 TCP 简介 传输层控制协议 TCP 简介面向连接的,可靠的,基于字节流的传输...

  • 【计算机网络】传输层

    【计算机网络】传输层 传输层协议概述 传输层协议为运行在不同host上的进程提供了一种逻辑通信机制。使得端到端不需...

  • 计算机基础

    1、计算机网络(应用层,传输层,网络层,数据链路层,物理层) 物理层:利用传输介质为数据链路层提供物理连接,实现比...

  • 常见面试题及解答|计算机网络

    七层模型 Q:计算机网络分哪几层 网络传输、会话表示五层模型:物理层、数据链路层、网络层、传输层、应用层七层模型:...

  • 传输层的一些知识

    tags: 计算机网络 传输层的基本功能 传输层将数据通信精确到端到端的通信。即主机进程与进程之间的通信。 传输层...

网友评论

      本文标题:计算机网络传输层

      本文链接:https://www.haomeiwen.com/subject/kmfklhtx.html