计算机网络学习笔记3(运输层)

计算机网络学习笔记3(运输层)

1.运输层服务(transport-layer services)

  • 运输层协议为不同主机(host)的进程(process)之间提供了逻辑通信

  • 运输层协议运行在端系统上

    1.在发送端,将应用报文划分成报文段(segments),发送到网络层

    2.在接收端,把报文段重组为报文,传递至应用层

  • 两个重要的传输层协议:TCP和UDP

  • 运输层提供的是进程之间的逻辑通信,而网络层提供的是主机之间的逻辑通信

  • TCP提供的是可靠的(reliable),有序的(in-order)传输

  • UDP提供的是不可靠的(unreliable),无序的(unordered)传输

  • 这两个协议都不提供延迟保证和带宽保证

2.多路复用和多路分解(multiplexing and demultiplexing)

  • 在发送端的复用:在不同的套接字中收集数据块,并为每个数据封装上首部信息

  • 在接收端的分用,将接收到的报文段交付到正确的套接字

  • 运输层的报文段结构:

    1.源端口号(source port)和目的端口号(dest port)

    2.其它首部字段

    3。应用数据

  • 主机使用IP地址和端口号来确定报文段送达正确的套接字

  • 当数据报送达UDP套接字时,必须确定目的端口号和目标IP地址

    也就是说,一个UDP套接字是由一个二元组来全面标识的,该二元组就是目的IP地址和目的端口号

  • 在接收UDP报文段时,只要目的端口和IP地址相同,都由同一个套接字来接收。

  • TCP套接字是由一个四元组来标识,四元组的内容是:源IP地址,源端口号,目标IP地址和目标端口号

  • 接收端使用这四个值来将报文段定向到相应的套接字

3.无连接运输:UDP(connectionless transport:UDP)

  • UDP是提供尽力而为(best effort)服务

  • UDP是一个无连接的协议

  • 使用UDP协议的应用:

    1.一些流媒体应用

    2.DNS

    3.SNMP

  • UDP报文段结构

    UDP报头有8个字节

    UDP报头包含源端口号,目的端口号,长度和检验和

  • length字段指示了UDP报文段的字节数(包含头部)

  • checksum是检测传输的报文中有没有出现错误

4.可靠数据传输原理(Principles of reliable data transfer)

  • rdt1.0 经完全可靠信道的可靠数据传输(reliable transfer over a reliable channel)

  • rdt1.0传输过程中没有丢包,也没有位错误

  • rdt2.0 经具有比特差错信道的可靠数据传输(channel with bit errors)

  • rdt2.0使用checksum来检测位错误

  • acknowledgements(ACKs)表示传输的包是正确的

  • negative acknowledgements(NAKs)表示传输的包有错误

  • rdt2.0又被称为停等(stop-and-wait)协议

  • rdt2.1来解决ACK和NAK出现错误的问题

  • rdt2.1给分组加上序号,0和1

  • rdt2.2采用了冗余ACK分组(deplicated packet),连续的两个ACK等同于NAK

  • rdt3.0 经有比特差错的丢包信号的可靠数据传输

  • rdt3.0 引入了计时器

  • rdt3.0 有时被称为比特交替协议(alternating-bit protocol)

5. 流水线可靠数据传输协议(pipelined protocols)

  • 有两种常用的流水线协议,分别是回退N步(Go-Back-N)和选择重传(Selective Repeat SR)

  • 流水线提高了传输协议的效率

  • Go-Back-N

    发送方可以发送多个分组

    接收方采用累积确认(cumulative acknowledgement)的方式,如果中途出现丢失,则不会接收剩下的包

    发送方有最早发送未确认的定时器,如果超时,会发送所有已发送但未确认的分组,只有一个定时器

  • 选择重传(Selective Repeat)

    发送方可以发送多个分组

    接收方对每一个包发送单独的ack信号

    发送方对每一个包都有一个定时器

Go-Back-N

  • 有N个发送窗口
  • 接收方只接收按顺序的分组
  • 失序的分组会被直接丢弃,因为接收方没有接收缓冲区
  • 接收到失序分组后会重复发送最大的顺序分组号的ack

Selective Repeat

  • 接收方对每个正确接收的分组都发送一个独立的ack信号
  • 接收方有不止一个接收窗口

3种滑动窗口协议的比较

  • Alternating bit:

    0<=发送窗口的大小<=1

    接收窗口为1个

  • Go-Back-N

    0<=发送窗口的大小<=MAX_SEQ

    接收窗口为一个

  • Selective Repeat

  • 0<=发送窗口的大小<=(MAX_SEQ+1)/2

  • 接收窗口的大小为(MAX_SEQ+1)/2

6.面向连接的运输:TCP (connection-oriented transport:TCP)

  • TCP是点到点的,一个发送方对应一个接收方的连接
  • TCP提供的是可靠的,有序的比特流
  • TCP是流水线式的运输,由TCP拥塞控制和流量控制来决定窗口的大小
  • TCP提供的是全双工(full-duplex)服务,在同一个连接中数据双向流动
  • 最大报文段长度(Maximum segment size MSS)
  • TCP是面向连接的,建立连接的过程要经历三次握手
  • TCP有流量控制的功能

1.TCP报文段结构

  • TCP的首部有20个字节

  • 有源端口号和目的端口号

  • 有32位的序号字段和确认号字段,用来实现可靠数据传输

  • 有4比特的头部长度字段,16比特的接收窗口字段

  • 有6比特的标志字段,RST代表reset,SYN代表建立连接,FIN代表释放连接

  • 有16位的检验和字段

  • sequence numbers

    是报文段首字节的字节流编号

  • acknowledge number

    主机A填充到报文段的确认号是主机A期望从主机B接收到的下一字节的确认号(next byte expected from other side)

    采用累积确认

2.可靠数据传输(Reliable data transfer)

  • TCP重传事件由两个事件引起:

    1.超时事件

    2.冗余acks

  • TCP快速重传

  • 一旦收到3个冗余ACKs,就立刻启动快速重传

2.估计往返时间(Timer RTT)

  • 需要设置超时重传机制的时间,如果时间过长,就会减慢丢包的响应,如果时间过短,就会产生不必要的重传
  • 报文段的样本RTT(SampleRTT)就是从某报文被发出到对该报文的确认被收到之间的时间量
  • EstimatedRTT=(1-$$\alpha$$)*EstimatedRTT+$$\alpha$$ *SampleRTT
  • 这种平均方式称为指数加权移动平均
  • \[\alpha$$一般取0.125 \]

  • \[\beta$$一般取0.25 \]

3.TCP连接建立

  • 采用三次握手建立连接
  • 一方被动地等待一个进来的连接请求
  • 另一方通过发送连接请求,设置一些参数
  • 服务器回发确认应答
  • 应答到达请求方,请求方最后确认,连接建立
  • 三次握手:
  • SYN=1,ACK=0
  • SYN=1,ACK=1
  • SYN=0,ACK=1

4.TCP连接释放

  • 任何一方在没有数据要发送的时候,都可以发送一个FIN置位了的TCP字段
  • 当FIN被确认时,该方向上的连接被关闭
  • 当双向连接都关闭时,连接释放

5.TCP流量控制(flow control)

  • TCP通过让发送方维护一个称为接收窗口的变量来提供流量控制
  • 接收窗口(rwnd)根据缓存可用空间的数量来设置
  • rwnd<=RcvBuffer

7.拥塞控制原理(Principles of congestion control)

1.拥塞控制方法

  • 端到端拥塞控制
  • 网络辅助的拥塞控制

8.TCP拥塞控制(TCP congestion control)

1.慢启动(slow start)

  • 当连接开始时,拥塞窗口以指数形式增长,直到遇见第一个丢失事件
  • 当产生超时后,会重新把拥塞窗口设置为1MSS
  • 当拥塞窗口超过阈值时,变为线性增长

2.拥塞避免

  • cwnd是上次遇到拥塞时的一半,之后每次发送只加1

3.快速恢复

  • 当产生拥塞时,拥塞窗口不设置为1,而变为产生阈值加3MSS
posted @ 2022-05-02 15:43  ANewPro  阅读(312)  评论(0编辑  收藏  举报