运输层

Posted 会思考的浣熊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运输层相关的知识,希望对你有一定的参考价值。

第5章运输层


5.1 运输层协议概述

运输层的一个很重要的功能就是复用分用


5.1.1 进程之间的通信

运输层的主要功能

  • 运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)
  • 报文差错检测
  • 运输协议

IP数据报首部中的检验和字段,只检验收是否出现差错,而不检查数据部分。


5.1.2 运输层的两个主要协议

运输协议数据单元 TPDU
Transport Protocol Data Unit
  • TCP 报文段(segment)
  • UDP 报文用户数据报

  • UDP在传送数据之前不需要先建立连接,不需要给出任何确认

  • TCP不提供广播或多播服务

5.1.3 运输层的端口

16位端口号

1. 服务器端使用的端口号

熟知端口号
well-known port number,也称系统端口号, 0~1023
登记端口号
1024~49151
2. 客户端使用的端口号
动态选择, 49151~65535

5.2 用户数据报协议UDP


5.2.1 UDP概述

在IP层上增加的功能

  • 复用,分用
  • 差错检测

UDP特点

  • 无连接
  • 尽最大努力交付,即不保证可靠交付
  • 面向报文,UDP不拆分或合并应用层报文
  • 没有拥塞控制,很适合多媒体通信的要求。
  • 支持一对多,多对多通信
  • 首部小,只有8字节!

面向报文的 UDP


5.2.2 UDP的首部格式

这里写图片描述

每个字段的长度都是2个字节

  1. 源端口2B
  2. 目的端口2B
  3. UDP用户数据报的长度,其最小值是8(仅有首部)2B
  4. 检验和2B

伪首部的第3个字段是全零,第4个字段是IP首部中的协议字段的值,(对UDP来说是17),第5个字段是UDP用户数据报的长度。

我的看法,伪首部简介的保证了IP传送的时候最基本的信息不会出错,如果这些信息都出错了,就赶快抛弃,根本没有传下去的必要了。


5.3 传输控制协议TCP概述


5.3.1 TCP最主要的特点

  • 面向连接
  • 端点,点对点
  • 可靠交付
  • 全双工
  • 面向字节流
stream,流入到进程或从进程流出的字节序列
面向字节流
应用程序和TCP每次交互式一次一个数据块【大小不等】,但TCP把这些数据仅看成是一连串的无结构的字节流,不关注内容

TCP不保证发送的数据块的接收的数据块具有大小对应关系,但是保证收发的字节流完全一样


5.3.2 TCP的连接

每一条TCP连接唯一地被通信的两个端点(即两个套接字)所确定,UDP是不是这样呢?

TCP连接的端点就是套接字。

同一个名词 socket有多种不同的意思
应用编程接口 API 称为 socket API, 简称为 socket
socket API 中使用的一个函数名也叫作 socket
调用 socket 函数的端点称为 socket
调用 socket 函数时其返回值称为 socket 描述符,可简称为 socket
在操作系统内核中连网协议的 Berkeley 实现,称为 socket 实现


5.4 可靠传输的工作原理

理想的传输条件有以下两个特点:

  1. 传输信道不产生差错
  2. 不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据
    在这样的理想传输条件下,不需要采取任何措施就能够实现可靠传输

运输层传送的协议数据单元叫做报文段,网络层传送的协议数据单元叫做IP数据报,二者都可以简称为分组。


5.4.1 停止等待协议

1. 无差错情况
2. 出现差错情况

超时重传
超时计时器

注意

  1. 必须暂时保留已发送的分组的副本
  2. 分组和确认分组都要编号
  3. 超时重传时间应当比数据在分组传输的平均往返时间更长一些


3. 确认丢失和确认迟到**

这里写图片描述

确认丢失处理
1. 丢弃这个重复的分组
2. 向发送方再次发送确认,不能认为已经发送过确认就不再发送,因为发送方之所以重传分组就表示没有收到确认

确认迟到处理
对重复的确认处理很简单, 收下后就丢弃
自动重传请求 ARQ
Automatic Repeat reQuestARQ 表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组 。

4. 信道利用率

这里写图片描述

RTT
往返时间
TD
发送分组所需要的时间
TA
发送确认分组所需要的时间
总时间
TD+TA+RTT

信道利用率