TCP和UDP协议
区别
- TCP是面向连接的协议,而UDP是无连接的协议;
- TCP协议的传输是可靠的,而UDP协议的传输“尽力而为”;
- TCP协议可以实现流控,而UDP不行;
- TCP可以分段,而UDP不行;
- TCP消耗资源较大,传输效率较低;UDP耗费资源较小,速度快。
TCP和UDP的使用场景:
TCP协议更适用于对可靠性要求较高,但是对传输效率和资源占用要求较低的场景;UDP更适用于对传输效率要求较高,可靠性要求较低的场景(即时类通讯)。
面向连接
在正式传输数据之前,先适用预先的协议,建立点到点的连接。
TCP建立的连接实际建立了一个双向的会话连接,即通讯双方都可以向对方发送数据。
TCP的头部
TCP ---- 可变长头部
URG ---- 紧急位 ---- 表示紧急指针是否有效
ACK ---- 确认位 ---- 表示确认号是否有效,携带ACK标志的数据报文段为确认报文段
PSH ---- 催促位 ---- 提示接收端的应用程序应该立即从TCP接收缓冲区中读走数据,为接收后数据腾出空间
RST ---- 断开位 ---- 表示要求对方重新建立连接,携带RST标志位的TCP报文段称为复位报文段
SYN ---- 请求位 ---- 表示请求建立一个连接,携带SYN标志的TCP报文段称为同步报文段
FIN ---- 结束位 ---- 通知对方本端要关闭了,携带FIN标志的TCP报文段称为结束报文段
校验和 ---- 确保数据完整性 ---- 伪头部校验 ---- 除了校验传输层头部和数据内容外,还会将网络层头部中的一部分内容一起进行校验。(将网络层封装的12个字节的内容一起进行校验:32位源IP地址,32位目标IP地址,8位协议号,8位保留,16位报文长度)
TCP头部长度最短20字节
UDP头部
UDP的校验可有可无
封装和解封装图
TCP的三次握手和四次挥手
三次握手 ---- TCP建立连接的过程
四次挥手 ---- TCP会话的断开
TCP的可靠性 — 确认,重传,排序,流控
IP协议
TTL ---- 生存时间 ---- 数据包每经过一个路由器的转发,其数值减1,当一个数据包的TTL值为0是,路由器将不再转发而直接丢弃。
协议号 ---- 上层所适用的协议类型
TCP ---- 6
UDP ---- 17
IP的分片和TCP的分段
MTU(限制IP分片) ---- 最大传输单元 ---- 默认值1500字节
MSS(限制TCP分段) ---- 最大段长度 ---- 理论值1460字节,这个值需要进行协商,这个参数在TCP的SYN包携带,如果双方不一致,则将按照小的执行。(在三次握手中的前两次SYN包中进行协商)
为什么要分?
因为MTU最大传输单元为1500字节。