目录
TCP和UDP协议
TCP/IP协议族的传输层协议
- TCP(Transmission Control Protocol)
- 传输控制协议
- UDP(User Datagram Protocol)
- 用户数据报协议
TCP/IP
应用层 |
传输层 |
网络层 |
数据链路层 |
物理层 |
TCP UDP
TCP协议
TCP是面向连接的、可靠的进程到进程通信的协议
TCP提供全双工服务,即数据可在同一时间双向传输
面向连接网络协议,是指通信双方之间在进行通信之前要先建立连接。比如打电话,双方通话前需要先建立连接。
无连接网络协议,是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包送到网络线路上,由系统自主选定路线进行传输。比如QQ、微信发送信息。
TCP是面向连接的、可靠的进程到进程通信的协议。TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接收缓存,用来临时存储数据。
TCP报文段
- TCP将若干个字节构成一个分组,叫报文段(Segment)
- TCP报文段分装在IP数据报中
IP首部 TCP报文段
TCP报文段
源端口号(16) | 目标端口号(16) | |||||||
序号(32) | ||||||||
确认号(32) | ||||||||
首部长 度(4) | 保留 (6) | U R G | A C K | P S H | P S T | S Y N | F I N | 窗口大小(16) |
校验和(16) | 紧急指针(16) | |||||||
选项 |
- 序号:发送端为每个字节进行编号,便于接收端正确重组
- 确认号:用于确认发送端的信息
- 窗口大小:用于说明本地可接受数据段的数目,窗口大小是可变的
- 首部长度:用它可以确定TCP首部数据结构的字节长度。一般情况下TCP首部是20字节,但首部长度最大可以扩展为60字节。
- 控制位:
URG:紧急位。紧急指针有效位。
ACK:确认位。只有当ACK=1时,确认序列号字段才有效;当ACK=0时,确认号字段无效。
PSH:急迫位。标志位为1时,要求接收方尽快将数据段送达应用层。
RST:重置位。当RST值为1时,通知重新建立TCP连接。
SYN:同步(连接)位。同步序号位,TCP需要建立连接时将这个值设为1。
FIN:断开位。当TCP完成数据传输需要断开连接时,提出断开连接的一方将这个值设为1。
TCP连接
TCP建立连接的过程称为三次握手
PC1 PC2
1. 发送SYN报文
(Seq=x,SYN=1)
2.发送SYN+ACK报文
(Seq=y,Ack=x+1,
SYN=1,ACK=1)
3.发送ACK报文
(Seq=x+1,Ack=y+1,
ACK=1)
TCP断开连接的四次挥手
PC1 PC2
1.发送FIN/ACK
(FIN=1,ACK=1)
2.发送ACK报文
(ACK=1)
3.发送FIN/ACK报文
(FIN=1,ACK=1)
4.发送ACK报文
(ACK=1)
常用的TCP端口号及其功能
端口 | 协议 | 说明 |
---|---|---|
21 | FTP | FTP服务器所开放的控制端口 |
23 | TELNET | 用于远程登录,可以远程控制管理目标计算机 |
25 | SMTP | SMTP服务器开放的端口,用于发送邮件 |
80 | HTTTP | 超文本传输协议 |
110 | POP3 | 用于邮件的接收 |
UDP协议
- 无连接、不可靠的传输协议
- 花费的开销小
UDP协议是无连接、不保证可靠性的传输层协议。发送端不关心发送的数据是否到达目标主机、数据是否出错等,收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。传输数据速度更快,效率更高
UDP报文的首部格式
源端口号(16) | 目标端口号(16) |
UDP长度(16) | UDP校验和(16) |
- UDP长度:用来指出UDP的总长度,为首部加上数据
- 校验和:用来完成对UDP数据的差错检验,它是UDP协议提供的唯一的可靠机制
常用的UDP端口号及其功能
端口 | 协议 | 说明 |
69 | TFTP | 简单文件传输协议 |
111 | RPC | 远程过程调用 |
123 | NTP | 网络时间协议 |