运输层
Posted 会思考的浣熊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运输层相关的知识,希望对你有一定的参考价值。
第5章运输层
5.1 运输层协议概述
运输层的一个很重要的功能就是复用和分用。
5.1.1 进程之间的通信
运输层的主要功能
- 运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)
- 报文差错检测
- 运输协议
IP数据报首部中的检验和字段,只检验收是否出现差错,而不检查数据部分。
5.1.2 运输层的两个主要协议
-
运输协议数据单元
-
Transport Protocol Data Unit
TPDU
- TCP 报文段(
segment
) UDP 报文或用户数据报
UDP
在传送数据之前不需要先建立连接,不需要给出任何确认TCP
不提供广播或多播服务
5.1.3 运输层的端口
16位端口号
1
. 服务器端使用的端口号
-
熟知端口号
-
well-known port number
,也称系统端口号,0~1023
登记端口号
-
1024~49151
-
动态选择,
49151~65535
2
. 客户端使用的端口号
5.2 用户数据报协议UDP
5.2.1 UDP概述
在IP层上增加的功能
- 复用,分用
- 差错检测
UDP特点
- 无连接
- 尽最大努力交付,即不保证可靠交付
- 面向报文,UDP不拆分或合并应用层报文
- 没有拥塞控制,很适合多媒体通信的要求。
- 支持一对多,多对多通信
- 首部小,只有8字节!
面向报文的 UDP
5.2.2 UDP的首部格式
每个字段的长度都是2个字节
- 源端口2B
- 目的端口2B
UDP
用户数据报的长度,其最小值是8
(仅有首部)2B- 检验和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 可靠传输的工作原理
理想的传输条件有以下两个特点:
- 传输信道不产生差错
- 不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据
在这样的理想传输条件下,不需要采取任何措施就能够实现可靠传输
运输层传送的协议数据单元叫做报文段,网络层传送的协议数据单元叫做IP数据报,二者都可以简称为分组。
5.4.1 停止等待协议
1.
无差错情况
2.
出现差错情况
-
超时重传
- 超时计时器
注意
- 必须暂时保留已发送的分组的副本
- 分组和确认分组都要编号
- 超时重传时间应当比数据在分组传输的平均往返时间更长一些
3.
确认丢失和确认迟到**
确认丢失处理
1. 丢弃这个重复的分组
2. 向发送方再次发送确认,不能认为已经发送过确认就不再发送,因为发送方之所以重传分组就表示没有收到确认
-
确认迟到处理
- 对重复的确认处理很简单, 收下后就丢弃 自动重传请求
-
Automatic Repeat reQuestARQ
表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组 。
ARQ
4.
信道利用率
-
RTT
- 往返时间 TD
- 发送分组所需要的时间 TA
- 发送确认分组所需要的时间 总时间
- TD+TA+RTT
信道利用率
以上是关于运输层的主要内容,如果未能解决你的问题,请参考以下文章