运输层为相互通信的应用进程提供了逻辑通信
复用:发送方不同的应用进程使用同一个运输层协议
分用:接收方的运输层把数据正确交付给目的进程
端口
为了使不同操作系统的进程能够相互通信,必须用统一的方法对应用进程进行标志
端口用一个 16 位 端口号,只具有本地意义
熟知端口:0-1023,所有用户进程都知道
常用熟知端口号:
DNS:53
SMTP:25
FTP:20、21
TELNET:23
HTTP:80
HTTPS:443
用户数据报协议UDP
用户数据报协议 UDP(User Datagram Protocol)
传送的数据单位协议: UDP 报文或用户数据报
无连接协议,不需确认,不提供可靠交付
应用:路由选择协议 ,IGMP多播
增加的功能:
复用和分用的功能
差错检测的功能
特点:
无连接,尽最大努力交付,面向报文(不拆分),没有拥塞控制,支持一对一、一对多、多对一和多对多的交互通信,首部开销小(8 个字节)
UDP首部
首部8个字节:源端口号,端口号,UDP长度,检验和
伪首部,计算校验和:
17:封装UDP报文的ip数据报首部协议字段是17
UDP:首部(8B)+数据段
计算校验码:伪首部+首部+数据部分(UDP数据报的源端口、目的端口、UDP数据报的数据部分、IP数据报的源地址和目的地址)
二进制反码求和,全1则无差错。IP的校验和只校验了IP数据报的首部
TCP
传输控制协议 TCP (Transmission ControlProtocol)
传送的数据单位协议:TCP 报文段
面向连接(建立连接——释放连接)不提供广播或多播服务
应用:电子邮件、远程终端接入、万维网、文件传送
特点:面向连接,只能有两个端点(点对点),可靠交付,全双工,面向字节流
TCP首部格式
20B
序号:占 4 字节,本报文发送的第一个字节序号
确认号:占 4 字节,是期望收到下一个的序号
数据偏移(即首部长度)——占 4 位,TCP首部的最大长度是60字节
控制位(一个一位)
紧急 URG —— URG = 1 表明紧急指针字段有效,发送方加急处理
确认 ACK —— ACK = 1 确认号字段才有效
推送 PSH —— PSH = 1 尽快交付,不用等缓存满,接收方加急处理
同步 SYN —— SYN = 1 表示连接请求或连接接受报文,在连接建立时用来同步序号**
终止 FIN —— FIN = 1 要求释放**
复位 RST —— RST = 1 必须释放连接,再重新
窗口字段:发送本报文段的一方的接收窗口,允许对方发送的数据量。
检验和:加上伪首部检验首部+数据
紧急指针:URG为1时有意义,指出紧急数据一共多少字节
选项:最大报文段长度MSS(数据字段的最大长度)
TCP的连接
TCP连接的建立采用客户服务器方式
套接字 (socket):TCP 连接的端点,socket = (IP地址 : 端口号)
第三个报文段可以携带数据
最后要等待2MSL(最长报文段寿命),重新发
TCP可靠传输
停止等待协议:发送完一个分组就停止发送等待确认。一旦出现传输差错(检测差错被丢弃或丢失),则超时重传。重传时间时间优加权平均求得
确认丢失:A重传,B丢弃,并再次确认
确认迟到:A(已)重传,A丢弃,B丢弃,并再次确认
信道利用率
U
=
T
D
T
D
+
R
T
T
+
T
A
U=\frac{T_D } {TD+RTT+TA}
U=TD+RTT+TATD
TD发送时间,TA回答时间
自动重传请求 ARQ
使用确认和重传机制,就可以在不可靠的传输网络上实现可靠通信
快速重传:累计确认之后
TCP的流量控制
滑动窗口:接收方根据自己接受缓存的大小,动态调整发送方的
接受窗口大小(rwnd)拥塞窗口(cwnd)
真正的发送窗口值 min(rwnd,cwnd)
如果回答丢失,会出现发一个空的探测报文段
TCP拥塞
拥塞窗口cwnd
ssthresh:慢开始门限=拥塞最高值/2
慢开始
快重传,快恢复
不到1,到门限值