计算机网络 --- TCP与UDP协议
UDP协议
- UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。
- 也就是当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据
- 由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响
- UDP协议的Header包括四个字段: 1. 源端口 2. 目的端口 3. 长度 4. 校验码
- 源端口: 可选字段,表示发送方进程的端口,接收方可根据此字段(不一定准确)发送信息
- 目的端口: 目的端口是数据接收方的端口号,它只在目标的IP地址下才有效
- 长度: 长度是协议头和数据报中数据长度的总和,表示整个数据报的大小
- 校验码: 校验码使用 IP 首部、UDP 首部和数据报中的数据进行计算,接收方可以通过校验码验证数据的准确性,发现传输过程中出现的问题
TCP协议
- TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议. TCP协议建立的是一种点到点的,一对一的可靠连接,与UDP相比以牺牲效率为代价换取高可靠性的服务
- 无差错, 不丢失,不重复, 数据有序
- TCP是双工的协议,会话的双方都可以同时接收、发送数据
- TCP可以接收来自多个应用程序的数据流,用端口号标识他们,然后把他们送给Internet层处理;同时TCP接收来自Internet层的数据包,用端口号区分他们,然后交给不同的应用程序。(UDP同理)
- TCP 报文格式:
序号(seq)
- 长度为四个字节 [0, 4294967295]
- TCP数据是字节流,每个字节都有唯一的序号
- 起始序号在建立TCP连接的时候设置
- 序号表示本报文段数据的第一个字节的序号
确认号 (ack)
- 长度为四个字节 [0, 4294967295]
- 期待收到对方下一个报文的第一个数据字节序号
- 也就是如果确认号= N, 则序号N-1为止的所有数据都已经正确收到
控制位: 总共六个比特位
- URG: Urgent, URG = 1,表示紧急数据
- ACK:A