传输层协议
TCP
TCP(Transmission Control Protocol)——传输控制协议。对数据的传输进行一定的控制。
TCP连接请求–三次握手–四次挥手–断开连接
序号(sequence number——seq):TCP数据包过大,需要对数据进行分段,对数据段进行编号,传输过去后再进行重组。
确认号(acknowledge number——ack):ack(确认号)=seq(序号)+1==表示服务器期望收到你的下一个序号的包。
【状态控制码】(code control flag):标志位【可类比信号灯:1–亮,0–灭】表示数据包的类型。
ACK–acknowledge:确认位。如=1,则这个消息是一个确认消息。
RST–reset:重置。如=1,表示这个消息释放连接。一般出现这种情况为TCP连接出现错误,即主机服务器崩溃,断开连接。需重新建立连接。
SYN–synchronous:同步。如=1,表示这个消息:(1)一个发起连接的消息;【or】(2)确认接受连接。
FIN–final:终止。如=1,表示发送报文结束、完毕,需释放连接。(之后可进行TCP四次挥手)
TCP三次握手
TCP三次握手–后续:数据发送报文
TCP四次挥手
UDP协议
UDP(User Datagram Protocol)——用户数据报协议。
UDP协议的头部结构:
16位原端口号 | 16位目标端口号 |
---|---|
16位UDP长度 | 16位UDP校验和 |
数据部分 | (如果有) |
UDP协议不会建立连接——无连接传输协议。
因为没有序号、确认号、标志位==不可靠协议,允许丢包,出错情况出现。
优点:速度很快,资源消耗小。
使用场景:
1、不需要可靠机制,只要传输速度快。
2、例如流媒体,多媒体游戏,IP电话,通常使用UDP协议进行封装。
3、资源消耗特别小的场景。
↑
(基于UDP协议)类似特点常用协议:
DNS(域名解析协议)、SNMP(简单网络管理协议)、DHCP(动态主机配置协议,动态获取IP)、RIP(动态路由协议)
基于TCP协议的常用协议:
HTTP、HTTPs、FTP(文件传输协议)……
TCP与UDP对比
1、TCP面对连接,所以有三次握手和四次挥手;UDP无连接协议
2、TCP因为有可靠的连接机制=可靠协议;UDP没有链接和确认机制=会丢包,会出错,不可靠的协议
3、TCP协议数据量很大,防止丢包,正确重传,对数据正确性很关心;UDP数据量量小
4、TCP协议速度很慢,效率低;UDP协议速度很快,传输效率很高。
以上为基于https://www.bilibili.com/video/BV1ZM4y1376o?p=1做的学习笔记