目录
传输层解析
传输层概述
传输层的作用
传输层的协议
TCP协议概述
UDP协议概述
TCP协议
TCP的封装格式
TCP的连接与断开
TCP的流控与差错控制
TCP的计时器
TCP的应用
UDP协议
UDP的封装格式
UDP的应用
UDP的流程与差错控制
传输层解析
传输层概述
传输层的作用
- 网络层提供点到点的连接
- 传输层提供端到端的连接
- 定义了端口号0~65535
- 进程到进程通信
传输层的协议
TCP协议概述
- TCP(Transmission Contorl Protocol)
- 传输控制协议
- 可靠的、面向连接的协议
- 传输效率低
UDP协议概述
- UDP(User Datagram Protocol)
- 用户数据报协议
- 不可靠的、无连接的服务
- 传输效率高
TCP协议
TCP的封装格式
- TCP报文段
- 将若干个字节构成一个分组
- TCP报文段封装在IP数据报中
- 序列号:发送端为每个字节编号,便于接收端正确重组
- 确认号:用于确认发送端的信息
- 窗口大小:用于说明本地可接收数据段的数目,窗口大小是可变的
- 滑动窗口机制:通过滑动窗口大小来控制当前接口接收数据的多少
- SYN:同步位,TCP需要建立连接时将该值设为1
- ACK:确认位,当该值为1时,用于确认发送方的数据
- FIN:当TCP断开连接时将该位置为1
- URG:紧急指针开关,当该值为1时,紧急指针字段才会出现
- PSH:向上推送的快速推送开关,当该值为1时,数据直接推送给应用程序
- RST:断开控制连接
TCP的连接与断开
- TCP提供全双工服务
—— 即数据可在同一时间双向传输
—— 理解全双工,才能理解TCP连接与断开
- TCP的连接:三次握手
第一次握手
客户端将首部的同步位SYN置为1,主动发送请求连接,随机产生一个值(初始序号)seq=x,并将该数据包发送给服务端,客户端进入请求连接(SYN_SENT)的状态,等待服务端确认。
第二次握手
服务端收到数据包后由SYN=1知道客户端请求建立连接,服务端将在确认报文段中发送同步位SYN=1,确认位ACK=1,确认号ack=x+1,初始序号seq=y,并将该数据包发送给客户端以确认连接请求,服务端进入SYN_RCVD状态(中间状态)。
第三次握手
客户端收到确认后,检查确认号ack是否为x+1(说明服务端发送正常),确认报文段ACK是否为1(说明服务端接收正常),如果正确则将标志位ACK置为1,ack=y+1,并将该数据包发送给服务端,服务端检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,客户端和服务端进入ESTABLISHED(established已确认)状态,完成三次握手,随后客户端和服务端之间可以开始传输数据了。
- TCP建立连接过程中的状态
- TCP的断开:四次挥手
第一次挥手
客户端发送一个FIN,用来关闭客户端到服务端的数据传送,客户端进入FIN_WAIT_1状态。
第二次挥手
服务端收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入CLOSE_WAIT状态。此时TCP链接处于半关闭状态,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接收。
第三次挥手
服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态。
第四次挥手
客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个ACK给服务端,确认序号为收到序号+1,服务端进入CLOSED状态,完成四次挥手。
- TCP的流控机制:活动窗口
TCP的流控与差错控制
- TCP差错控制的3种方式
—— 校验和
—— 确认(对发送的数据进行确认,序列号和确认号)
—— 超时(计时器)
TCP的计时器
- TCP的重传计时器
—— 为了控制丢失的数据段
在客户端向服务端建立连接时,在发送连接的时候计时器就已经开启,当服务端的确认号ACK在时间期限内发送,则继续进行三次握手;如果超过时间期限服务端还没有发送ACK,则客户端在规定时间期限后,在向服务端发送一个连接请求。
- TCP的保活计时器
—— 防止两个TCP连接之间长时间的空闲
- TCP的时间等待计时器
—— 连接终止期间使用,当发送了最后一个ACK后,不立即关闭连接,而是等待一段时间,保证能接收到重复的FIN数据段
TCP的应用
端口号 | 协议 | 作用 |
21 | FTP | 文件传输协议,用于文件上传和下载 |
22 | SSH | 用于远程登录,管理网络设备 |
23 | Telnet | 用于远程登录及控制 |
25 | SMTP | 简单邮件传输协议,用于发送邮件 |
53 | DNS | 域名解析服务,当用户输入网站的名称后,由DNS负责将它解析成IP地址 |
80 | HTTP | 超文本传输协议,通过http实现网络上超文本的传输 |
443 | HTTPS | 超文本传输协议,附带安全加密功能 |
UDP协议
UDP的封装格式
UDP的应用
端口 | 协议 | 说明 |
69 | TFTP | 简单文件传输协议 |
53 | DNS | 域名解析服务 |
123 | NTP | 网络时间协议 |
111 | RPC | 远程过程调用 |
UDP的流程与差错控制
- UDP没有流控机制
- UDP只有校验和来提供差错控制
—— 需要上层协议来提高差错控制:如TFTP协议