(一)TCP传输控制协议
可靠的、面向连接的字节流服务,全双工,有端口寻址功能
1、TCP的三种机制
1.使用序号对分段的数据进行标记,便于调整数据包
2.TCP使用确认、校验和和定时器系统提供可靠性
3.TCP使用可变大小的滑动窗口协议进行流量控制,在传输实体缓冲区进行排序和重传纠错
2、TCP报文首部格式
源端口 | 目的端口 | |||||||
序列号 | ||||||||
确认号 | ||||||||
报头长度 | 保留 | URG | ACK | PSH | RST | SYN | FIN | 窗口 |
校验和 | 紧急指针 | |||||||
选项 | ||||||||
数据 |
源端口、目的端口:长度为16位,端口用于标识应用程序,端口范围0-65535
序列号:长度为32位
确认号:长度为32位,如果确认号是N,则表示N-1之前(包括N-1)的所有数据都已正确收到
报头长度:即数据偏移字段,长度为4位
保留字段:长度为6位
紧急URG:紧急有效,需要尽快送达
确认ACK:建立连接后的报文回应,ACK设置为1
推送PSH:接收方应尽快将这个报文段交给上层协议,无需等缓存满
复位RST:复位为初始状态,重新连接
同步SYN:发起连接
终止FIN:释放连接
窗口:长度为16位,用来进行流量控制,这个值是本机期望下一次接收的字节数
校验和:长度为16位,对整个TCP报文首部进行校验,包括TCP头部和TCP数据
紧急指针:长度为16位
选项:长度可变到40字节,为保证报头长度是32位的倍数
3、TCP三次握手建立连接
SYN:已经发出了连接请求
ACK确认
SEQ自身序号
SYN-SENT:连接正处于已主动发出连接建立请求
LISTEN:处于连接监听状态
ESTABLISHED:连接已经建立
1表示同意建立连接,0表示拒绝
4、TCP四次挥手释放连接
FIN:已经发出了释放请求
5、TCP拥塞控制
TCP拥塞控制,每个源端判断当前网络中有多少可用容量,从而知道他可以安全完成传送的分组数。拥塞控制就是防止过多的数据注入网络,避免网络中间设备过载而发生拥塞。
TCP拥塞控制机制:
(1)超时重传计时器
重传是保证TCP可靠的重要措施。TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的时间到了,但还没有收到确认,就重传这一报文段。
重传时间与往返时间、平均时延、时间偏差等有关。
(2)慢启动
发送方在接收到确认之前逐步扩大窗口的大小,按1、2、4、8等指数规律翻倍,最后到达门限阈值。出现超时,将拥塞窗口回到1,再次开始慢启动。
(3)拥塞避免
窗口到达门限阈值以后,进入拥塞避免阶段,TCP采用线性增加方式放大窗口,按照+1递增。发生拥塞,门限阈值减半,再发生再减半,按指数规律成倍减半。
(4)快速重传
发送端一连收到3个重复的ACK,就开始重传,不等计时器。
(5)可变滑动窗口
(6)选择重发ARQ
(二)UDP用户数据报协议
不可靠的、无连接的数据报服务,无差错流控机制,有端口寻址功能,开销较小。
在传送数据较少且较小的情况下,UDP比TCP更加高效
1、UDP报文首部格式
源端口号(16位) | 目的端口号(16位) |
长度(16位) | 校验和(16位) |
数据 |
源端口号、目的端口号:0-65535
长度:标明UDP头部和UDP数据的总长度字节
校验和:对UDP头部和UDP数据进行校验,有错就丢弃,相当于TCP的有错重传机制,UDP的校验和是可选项,TCP的校验和是必选项
(三)TCP与UDP比较
同:TCP和UDP均提供端口寻址
异:TCP支持数据传输,UDP支持音视频传输
UDP:SNMP、“STDD”、TFTP、DHCP、DNS
TCP:SMTP、POP3、HTTP
(四)端口
端口用于标识主机进程,范围0-65535
分为:系统端口、登记端口、客户端使用端口
1、系统端口
范围0-1023
协议号 | 名称 | 功能 |
20 | FTP-DATA | FTP数据传输 |
21 | FTP | FTP控制 |
22 | SSH | SSH登录 |
23 | TELNET | 远程登录 |
25 | SMTP | 简单邮件传输协议 |
53 | DNS | 域名解析 |
67 | DHCP | DHCP服务器开启,用来监听和接收客户请求信息 |
68 | DHCP | 客户端开启,用于接收DHCP服务器的消息回复 |
69 | TFTP | 简单FTP |
80 | HTTP | 超文本传输协议 |
110 | POP3 | 邮局协议 |
143 | IMAP | 交互式邮件存取协议 |
161 | SNMP | 简单网管协议 |
162 | SNMP(trap) | SNMP trap报文 |
2、登记端口
范围1024-49151,为没有熟知端口号的应用程序使用,必须在IANA(互联网数字分配机构)登记避免重复
3、客户端使用端口
范围49152-65535,仅在客户进程运行时使用,使用完毕后,进程释放端口