一 TCP和UDP协议介绍
1, UDP协议是无连接、不保证可靠性的传输层协议。发送端不关心发送的数据是否到达目标主机,接收方也不会告诉发送方数据是否出错/有没有收到信息。但它传播速度快,效率高。
2, TCP是面向连接的、在传送数据之前必须先建立连接,数据传送结束后要释放连接,可靠的进程到进程通信的协议。TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接收缓存,用来临时存储数据。
二 TCP的报文格式
源端口号 | 16 | 表示数据的来源进程 |
目的端口号 | 16 | 表示数据要到哪个进程去 |
序号 | 32 | 发送端为每个字节进行编号,便于接收端正确重组 |
确认号 | 32 | 对发送端的确认信息。表示期望接收的下一个字节的序列号,用于确认已接收到的数据。 |
首部长度 | 4 | 用它可以确定TCP首部数据结构的字节长度。一般情况下TCP首部是20字节,但首部长度最大可以扩展为60字节。 |
6位标志位 | 6 | URG, ACK, PSH, RST, SYN, FIN |
URG | 1 | 紧急指针 ,表示其是否有效 |
ACK | 1 | 确认位,表示确认号是否有效 |
PSH | 1 | 急迫位。标志位为1时,要求接收方尽快将数据段送达应用层。 |
SYN | 1 | 同步位,请求建立连接 |
FIN | 1 | 断开位,通知对方本端要关闭连接 |
窗口大小 | 16 | 用于说明本地可接收数据段的数目,窗口大小是可变的 |
校验合 | 16 | 用来做差错控制。字段检验的范围包括首部和数据这两部分。数据段在发送时和到达目的地时会进行校验和计算,若这两次的校验和一致,则说明数据基本是正确的,否则将认为该数据已被破坏,接收端将丢弃该数据 |
紧急指针 | 16 | 指向需要优先处理的报文,配合URG使用按序到达是TCP协议保证可靠性的一种机制 |
三 TCP三次握手