传输层
传输层主要解决端到端(应用进程之间)的通信,对收到的报文进行差错检测。
- 传输层主要控制协议
- 用户数据报协议UDP
- 传输控制协议TCP
- 端口号(0~65535),只具有本地意义,用于标记本计算机中应用层的各个进程在和运输层交互的层间接口
- 服务器端使用的端口号,包括熟知端口号/系统端口号,数值为0~1023;登记端口号,数值为1024~49151
- 客户端使用的端口号,49152~65535
一、用户数据报协议UDP

- 特点:
- UDP是无连接的,减少了开销和发送数据之前的时延
- UDP尽最大努力交付,不保证可靠交付
- UDP面向报文,一次交付一个完整报文,UDP 发送的报文长度由应用进程决定
- UDP没有拥塞控制,网络出现的拥塞不会使源主机的发送速率降低
- UDP支持一对一,一对多,多对多的交互通信
- UDP数据报首部开销小,只有8个字节,比TCP的20个字节的首部要短
- UDP用户数据报由数据字段和首部字段组成,首部字段只有8个字节,4个字段,每个字段占2个字节

-
- 源端口:源端口号,在需要对方回信时选用,不需要时可用全0
- 目的端口:在终点交付报文时必须使用
- 长度:UDP用户数据报的长度,最小值是8
- 检验和:检测用户数据报在传输中是否有错,在计算检验和时,要在用户数据报UDP之前增加12个字节的伪首部,检验的是UDP首部和UDP数据部分
- 伪首部:包括原IP数据报中的源IP地址,目的IP地址,全0,UDP报文在IP数据报的首部字段协议值为17,UDP 用户数据报的长度
- UDP数据报检验和既检验了UDP 用户数据报的源端口号和目的端口号以及用户数据报的数据部分,还检验了IP数据报的源地址和目的IP地址
二、传输控制协议TCP
- 特点:
- TCP是面向连接的传输层控制协议,在使用TCP协议前必须建立连接
- 每一条TCP连接只能有两个端点,只支持点对点(一对一)
- TCP提供可靠交付的服务,通过TCP 连接传送的数据,无差错,不丢失,不重复,并且按序到达
- TCP提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据,TCP连接的两端设有发送缓存和接收缓存,用来临时存放双向通信的数据
- TCP是面向字节流的,根据对方给出的窗口值和当前网络拥塞的程度决定一个报文段应包含多少个字节
- TCP支持拥塞控制和流量控制
- TCP连接
- 套接字/插口:每条TCP连接的端点。端口号拼接到IP地址构成套接字socket
套接字socket=(IP地址:端口号) - 每一条TCP连接唯一的被通信两端的两个端点(两个套接字)所确定
- 套接字/插口:每条TCP连接的端点。端口号拼接到IP地址构成套接字socket
- TCP报文段:TCP传送的数据单元

-
- TCP首部前20个字节固定,后面有4n个字节根据需要添加
- 源端口和目的端口:各占2个字节
- 序号:占4字节,指代本报文段所发送的数据的第一个字节的序号
- 确认号:占4字节,期望收到对方下一个报文段的第一个数据字节的序号,若确认号=N,则到序号N-1为止的所有数据都已正确收到
- 数据偏移:4位,TCP报文段的首部长度,数据偏移的最大值是60字节
- 保留:占6位,全置0
- 紧急URG:当URG=1表示系统由紧急数据应尽快传送
- 确认ACK: TCP建立连接后,传送的所有报文段ACK=1
- 推送PSH:当PSH=1,立即将报文段发送
- 复位RST:当RST=1表明释放连接,重新建立运输连接
- 同步SYN:在连接建立时同步序号,当SYN=1而ACK=1,表明请求建立连接,SYN=1和ACK=1表明与对方建立连接
- 终止FIN:当FN=1,释放连接
- 窗口: 占2字节,表明从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量,以字节为单位,窗口值是接收方让发送方设置其发送窗口的依据
- 检验和:占2字节,检验范围包括首部和数据两部分,要加上12字节的伪首部
- 紧急指针:占2字节,紧急指针尽在URG=1时有效,指出了紧急数据在报文段中的位置
- 选项:长度可变,最长可达40字节
- 可靠传输
- 停止等待协议:每发送完一个分组就停止发送,等待对方确认,收到确认后再发送下一个分组,但信道利用率低
- 无差错情况
- 有差错情况下的超时重传:A超过了规定时间(超时计时器)仍未收到确认,默认分组丢失,A重传前面发送过的分组给B
- A在发送完一个分组后必须暂时保留已发送的分组的副本,只有在接收到确认信号才可清除暂时保留的副本
- 分组和确认分组都必须进行编号,明确哪一个发送出去的分组收到了确认,呢一个分组还未收到确认
- 超时计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些
- 确认丢失:B发送给A的确认丢失了,A在超时计时器到期后重传数据分组,B此时丢弃重复分组,再次向A 发送确认
- 确认迟到:A收到重复的确认,A丢弃确认信号,B丢弃重复分组
- 连续ARQ协议
- 使用流水线传输,发送方连续发送多个分组,使信道上一直有数据不间断在传送
- 接收方采用累积确认的方式,在收到几个分组后,对按序到达的最后一个分组确认
- 累积确认的优缺点:容易实现,即使确认丢失也不必重传,但不能反映出接收方已经正确收到的所有分组的信息
- 可靠传输的实现
- 以字节为单位的滑动窗口,发送窗口不能超过接收窗口的数值
- 发送方的应用进程把字节流写入TCP的发送缓存,接收方的应用进程从TCP的接收缓存读取字节流
- 发送缓存用来暂时存放发送方TCP准备发送的数据和TCP 已发送出但尚未收到确认的数据
- 接收缓存用来暂时存放按序到达的。尚未被接收应用程序读取的数据和未按序到达的数据
- 发送窗口和接收窗口并不总是一样大,对不按序到达的数据先临时缓存到接收窗口中,等到字节流中所缺少的字节收到后,在按序交付到上层的应用程序
- TCP要求接收方必须有累积确认的功能,减少传输开销
- 超时重传时间有特殊算法
- 选择确认SACK机制
- 以字节为单位的滑动窗口,发送窗口不能超过接收窗口的数值
- TCP流量控制:发送方的发送速率要让接收方来得及接收
- 利用滑动窗口控制传输数据大小
- TCP为每一个连接设置持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器,若持续计时器设置时间到期,就发生一个零窗口探测报文段,对方确认后得到窗口值,若值为0,接收方重新设置持续计时器,若不为0,打破死锁僵局
- TCP拥塞控制
- 目的:防止过多的数据注入到网络,使网络中的路由器或链路不致过载
![]()
- 网络拥塞
- 随着提供的负载加大,网络吞吐量的增长速率逐渐减小,在网络吞吐量还未达到饱和时,就已经有一部分输入分组被丢弃
- 当网络的吞吐量明显小于理想吞吐量,网络进入轻度拥塞状态
- 当提供的负载达到某一数值时,网络的吞吐量反而随提供的负载增大而下降,网络进入拥塞状态
- 当提供的负载持续增大到某一数值时,网络吞吐量下降到0,陷入死锁
- TCP拥塞控制方法
- TCP 发送方要维持一个拥塞窗口cwnd的状态变量,拥塞窗口的大小取决于网络的拥塞程度,动态变化,发送方要让自己的发送窗口取拥塞窗口和接收方的接受窗口中较小的一个
- TCP拥塞控制采用四种算法:慢开始、拥塞避免、快重传和快恢复
- 目的:防止过多的数据注入到网络,使网络中的路由器或链路不致过载
- 停止等待协议:每发送完一个分组就停止发送,等待对方确认,收到确认后再发送下一个分组,但信道利用率低
三、TCP的运输连接管理
1. 建立连接(三次握手)

- A的TCP客户进程创建传输控制模块TCB,向B发出连接请求报文段,此时首部中的同步位SYN=1,同时选择一个初始序列号seq=x,SYN 报文段不能携带数据,消耗一个序号,TCP客户进程进入SYN-SENT(同步已发送)状态
- B收到连接请求报文段后,向A发送确认,在确认报文段中首部SYN=1,ACK=1,确认号为seq=x+1,同时为自己创建一个初始序号seq=y,此时TCP 服务器进入SYN-RCVD同步收到状态
- TCP客户进程收到B 的确认后,向B发出确认,确认报文段ACK=1,自己的序号seq=x+1,确认序号seq=y+1此时TCP 连接建立,A进入ESTABLISHED 已建立连接状态
- 当B收到A的确认后,也进入ESTABLISHED 已建立连接状态
- A发送确认是为了防止已失效的连接请求报文段突然又传送到了B产生错误
2. 释放连接(四次挥手)

- A把连接释放报文段首部的终止控制位FIN=1,自身序号seq=u(A前面已传送的数据最后一个字节序号加1),A进FIN-WAIT-1状态,等待B的确认
- B收到连接释放报文段后发出确认,确认号ack=u+1,自身序号v(B前面已传送的数据最后一个字节序号加1),B进CLOSE-WAIT状态,表明从A到B方向的连接已释放,TCP连接进入半关闭状态,A已经没有数据要发送了,A收到B的确认后进入FIN-WAIT-2状态,等待B发出的连接释放报文段
- 若B没有要向A发送的数据,B发哦是哪个释放连接请求,把连接释放报文段首部的终止控制位FIN=1,自身序号seq=w(在半关闭状态可能B又发送了一些数据),B还必须重复上次已经发送过的确认号ack=u+1,B进入LAST-ACK最后确认状态,等待A的确认
- A收到B的连接释放报文段后,对B 发出确认,确认号ack=w+1,自身序列号seq=u+1,进入TIME-WAIT状态,TCP 等待释放
- 当A经过时间等待计时器设置的2MSL(最长报文段寿命,2分钟)时间后,A进入到CLOSED状态,当A撤销相应的传输控制块后,TCP连接彻底释放关闭
- A等待计时器设置的2MSL时间是为了保证A发送的最后一个ACK报文段能到达B,并且在TCP连接持续的时间内所产生的报文段都能从网络中消失,下一个新的TCP连接不会出现旧的连接请求报文段
3. TCP 有限状态机



浙公网安备 33010602011771号