计算机网络——传输层

传输层概论

  1. 传输层:
    1. 核心任务:为应用进程之间提供端到端的逻辑通信服务(端到端:应用进程与应用进程之间;网络层的点到点:主机与主机之间)。
    2. 从通信和信息处理的角度看,传输层向上层,即应用层提供通信服务。
    3. 主要的功能:传输层寻址;应用层报文的分段和重组;报文的差错检测;进程之间的可靠数据传输控制;面向应用层实现复用和分解;端到端的流量控制;拥塞控制。
    4. 注意点:传输层协议提供逻辑通信服务;传输层协议只需在端系统中实现;通信的真正端点并不是主机,而是主机中运行的应用进程
    5. 端口号:客户端(网络层)可以通过IP地址找到对应的服务器端,但是服务器端有很多个端口(每个应用程序对应一个端口号),传输层要确定访问哪一个应用程序就需要知道是要访问哪一个端口,这样客户端才能真正访问到服务器。为了对端口进行区分,将每个端口进行了编号,即为端口号。
  2. 端口号:用统一的寻址方法对应用进程进行标识。在全网范围内使用“IP地址+端口号”来唯一标识通信端点。传输层端口号为16位整数,包含三类端口:
    1. 熟知端口号:数值为0-1023。
    2. 登记端口号:数值为1024-49151.为没有熟知端口号的应用进程使用的,使用这个范围的端口号必须在IANA登记,防止重复。
      1. FTP:21/20,文件传输协议,21用于连接,20用于传输数据。
      2. TELNET:23,远程登录。
      3. SMTP:25,电子邮件传输协议。POP3,邮局协议版本3,110。基于TCP的应用层协议。
      4. DNS:53,域名系统。基于UDP的协议。
      5. TFTP:69,简单文件传输协议。
      6. HTTP:80,超文本传输协议。
      7. SNMP:161,简单网络管理协议。
      8. HTTPS:443,超文本传输安全协议。
    3. 客户端口号或短暂端口号:数值为49152-65535,留给客户进程选择暂时使用。
    4. 无连接服务与面向连接服务
      1. 无连接服务:数据传输之前无需对端进行任何信息交换(即握手动作),直接构造传输层报文段并向接收端发送。——UDP协议
      2. 面向连接服务:在数据传输之前,需要双方交换一些控制信息,建立逻辑连接,然后再传输数据,数据传输结束后还需要拆除连接。——TCP协议

传输层的复用与分解

  1. 多路复用与多路分解:是传输层的一项基本功能,支持众多应用进程共用同一个传输层协议(复用),并能够将接收到的数据准确地交付给不同的应用进程(分解)。
  2. 无连接的多路复用与多路分解:
    1. UDP套接字:<目的IP地址,目的端口号>
    2. UDP套接字的端口号是UDP实现复用与分解的重要依据。
  3. 面向连接的多路复用与多路分解:
    1. TCP套接字:<源IP地址,源端口号,目的IP地址,目的端口号>,标识一条TCP连接。
    2. 当一个TCP报文段从网络层到达一台主机时,该主机根据这4个值来将报文段分解到相应的套接字。

停等协议与滑动窗口协议

  1. 可靠数据传输基本原理及步骤:
    1. 差错检测:利用差错编码实现数据报传输过程中的比特差错检测。
    2. 确认:接收方向发送方反馈接收状态
    3. 重传:若接收方没有正确接收到数据,则发送方重新发送接收方没有正确接收到的数据
    4. 序号:确保数据是按顺序提交的。
    5. 计时器:解决数据丢失问题
  2. 停等协议
    1. 主要特点:每发送一个报文段后就停下来等待接收方的确认。
    2. 基本工作过程:
      1. 发送方发送经过差错编码和编号的报文段,等待接收方的确认;(发送并等待确认
      2. 接收方如果正确接收报文段,即差错检测无误且序号正确,则接收报文段,并向发送方发送ACK(确认),否则丢弃报文段,并向发送方发送NAK(否认);(接收并确认/否认
      3. 发送方如果收到ACK,则继续发送后续报文段,否则重发刚刚发送的报文段。(继续发送/重发
  3. 滑动窗口协议:
    1. 停等协议的主要性能问题:降低了信道利用率
    2. 解决方法:流水线协议或管道协议——允许发送方在没有收到确认前连续发送多个分组。即此时的发送窗口大小>1。
    3. 流水线协议的改进:增加分组序号范围;发送方和(或)接收方必须缓存多个分组。(和:发送窗口和接收窗口都大于1;或:发送窗口大于1,接收窗口=1)。
    4. 典型的流水线协议:滑动窗口协议
    5. 两种代表性的滑动窗口协议:
      1. 回退N步协议(Go-Back-N,GBN):发送窗口>1,接收窗口=1。未按顺序到达的分组或某个分组出错,则会引起发送方重发该分组及其之后的所有分组。
      2. 选择重传协议(Selective Repeat,SR):发送窗口>1,接收窗口>1。缓存正确到达但失序的分组,仅要求发送方重传未被接收方确认的分组,等缺失分组到达后一并向上层按序提交。

传输层的两个重要协议

  1. TCP:传输控制协议。是TCP/IP体系中较为复杂的协议,是传输层中最重要的协议。
    1. TCP的主要特点:TCP是面向连接的传输层协议;TCP提供可靠的交付服务;TCP提供全双工通信;TCP是面向字节流的。
    2. TCP报文段结构:TCP首部+TCP数据部分。TCP首部结构如下:
      1. 源端口。
      2. 目的端口。
      3. 序号:分段后的报文段之后重组时的重要依据。
      4. 确认号:数据发给对方时要返回确认。
      5. 数据偏移:相同序号的数据报如果被拆分后,数据在原本的哪些位置。
      6. 保留。
      7. URG:紧急指针位,当特殊情况下,紧急指针可以有效,此时URG的值为1,无效则为0。
      8. ACK:确认位,值为1是确认号有效。
      9. PSH:通知TCP可以进行很快的提交。
      10. RST:复位,通知重新建立连接。
      11. SYN:同步请求,双方通信要先建立连接,有一方向另一方发出建立了解的请求为同步请求。同步要协商起始的数据是多少。
      12. FIN:拆除连接使用时值为1。
      13. 窗口:进行流量控制。双方可协商大小。
      14. 校验和:进行检错和差错控制。
      15. 紧急指针。
      16. 选项(长度可变):上述首部字段固定为20字节。只有一个选项,最大报文段。
      17. 填充:保证TCP的首部大小。
    3. TCP的三次握手:建立连接
      1. SYN连接请求:客户端主动打开连接请求,发送SYN=1,seq=x
      2. SYN、ACK确认:服务端被动打开,收到客户端SYN连接请求后,返回SYN=1,ACK=1,seq=y,ack=x+1
      3. ACK确认:客户端收到确认服务端确认可以建立连接后,发送ACK=1,seq=x+1,ack=y+1。之后两端便可进行数据传送。
    4. TCP的四次挥手:断开连接
      1. 任意一方发送断开连接请求,以客户端为例。发送FIN=1,seq=u
      2. 服务器收到断开连接请求,给客户端发送确认,成为半确认。ACK=1,seq=v,ack=u+1
      3. 但是服务器可能还有数据需要给客户端,故还可以进行一段时间的数据传送。之后服务器向客户端发送断开连接的请求,为FIN=1,ACK=1,seq=w,ack=u+1
      4. 客户端收到断开连接请求后,返回确认断开,ACK=1,seq=u+1,ack=w+1。服务器立马停止运行,客户端等待几秒后停止运行。
    5. TCP可靠数据传输:
      1. 实现机制:差错编码、确认、序号、重传、计时器等。
      2. 基于滑动窗口协议,但是发送窗口大小动态变化。
        1. 封装TCP报文段
        2. 发出一个报文段后启动一个计时器
        3. 通过校验和发现数据差错
        4. 通过序号重新排序,丢弃重复的报文段。
        5. 流量控制
    6. TCP流量控制:
      1. TCP协议利用窗口机制实现流量控制,但不是简单的滑动窗口协议。
      2. TCP建立连接时,双方都为之分配了固定大小的缓冲空间;TCP的接收端只允许另一端发送其缓冲区所能接纳的数据。(接收端在给发送端发送确认段时,通告接收窗口大小;发送端在接下来发送数据段时,确保未确认段的应用层数据总量不超过接收端通告的接收窗口大小,从而确保接收端不会发生缓存溢出。)
    7. TCP拥塞控制:
      1. 窗口机制:通过调节窗口的大小实现对发送数据速率的调整。
      2. 窗口调整的基本策略:AIMD(Additive Increase,Multiplicative Decrease),加性增加,乘性减少。
      3. TCP的拥塞控制算法:慢启动、拥塞避免、快速重传、快速恢复。
  2. UDP:用户数据报协议。
    1. UDP是在IP数据报服务之上增加了一些功能,增加了复用和分用的功能以及差错检测的功能,
    2. UDP的主要特点:UDP是无连接的;UDP尽最大努力交付;UDP面向报文且没有拥塞控制;UDP开销较小传输效率较高
    3. UDP数据报结构:
      1. 源和目的端口号:用于UDP实现复用与分解。
      2. 长度字段:在UDP报文段中的字节数(首部和数据的总和)。
      3. 校验和:接收方用来检测报文段是否出现了差错。
源端口号目的端口号
长度校验和
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值