HTTP基于TCP吗?
- 回答1:
- 回答2:
看 HTTP 版本呀,HTTP/1.1 和 HTTP/2 都是基于 TCP 传输协议的,而 HTTP/3 是基于 UDP 传输协议的。
一、UDP协议概述
用户数据报协议(User Datagram Protocol)简称UDP协议,它是在IP的数据报服务上增加了端口和简单的差错检测来实现进程到进程之间的数据传输。
U
D
P
头
部
\color{red}{UDP头部}
UDP头部很简单,包括源端口,目的端口,UDP总长度,校验和,各占16位/2字节,共8字节。
最后例题中UDP数据报首部:
源端口 :发送方所使用的端口号,若不需要对方回发消息,则可全置为0。目的端口 :目的端口号,在终点交付报文的时候需要用到。UDP总长度 :长度16位,指定了UDP数据报的总长度。校验和 :检测UDP数据报在传输中是否有错,有错则丢弃。【长度16位,用于UDP的差错检测,防止UDP报文出错,同时伪首部参与计算,避免UDP用户数据报传送到错误的目的地。UDP的首部,数据部分,伪首部都会参与检验和的计算,各字段是按照16比特为单位进行计算的,因此数据部分是要保证是16比特的倍数,不够用0填充。】
二、UDP协议有如下几个特点:
- 无连接。UDP是无连接的协议,数据传输之前不需要建立数据连接,也没有超时重传等机制,拥塞控制以及流量控制,但是传输速度快,灵活。
- 不可靠,尽最大努力交付。报文有可能存在重复,失序,丢失。
- 面向报文。TCP(面向连接的传输控制协议)是面向字节传输,而UDP是面向报文传输,对于应用层交下来的报文段不进行拆分合并,直接保留原有报文段的边界然后添加UDP的首部就交付给网络层。不论报文的长短,UDP都不会进行处理。因此为了避免报文段过短降低传输效率以及报文段过长导致网络层对IP数据进行分片操作,应用层应该选择合适长度的报文交付给运输层的UDP。
- 支持一对一,一对多,多对一,多对多的交互通信,组播以及广播功能。这点弥补了TCP的不足.
- UDP首部只有8字节(源端口号,目的端口号,UDP总长度,检验和,各16位/2字节)。TCP首部固定20字节。
须知:UDP的应用:
某些实时应用要求以稳定的速度发送,能容 忍一些数据的丢失,但是不能允许有较大的时延(比如实时视频,直播等)。
- 应用层协议DNS(域名服务)、DHCP动态主机配置协议)、TFTP(简单文件传输协议)、SNMP(简单网络管理协议)、RIP(路由信息协议)传输层协议都是采用的
UDP协议 。 - 应用层协议FTP(文件传输协议)、Telnet(远程终端协议)、SMTP(简单邮件传输协议)、HTTP(超文本传输协议)、BGP(边界网关协议)传输层协议采用的是
TCP协议 。
DNS如果运行在TCP之上而不是UDP,那么DNS的速度将会慢很多。 HTTP使用TCP而不是UDP,是因为对于基于文本数据的Web网页来说,可靠性很重要。
习题解析:UDP 用户数据报的首部十六进制表示是:0632 0045 001C E217,试求源端口、目的端口、 用户数据报的总长度、数据部分长度等。
题目描述:UDP 用户数据报的首部十六进制表示是:0632 0045 001C E217,试求源端口、目的端口、 用户数据报的总长度、数据部分长度。这个用户数据报是从客户发送给服务器发送给客户?使用 UDP 的这个服务器程序是什么?
- 源端口:1586(前4个字节0632)
- 目的端口:69(00 45)
- 用户数据报总长度:28 字节(00 1C,其中UDP首部占8字节)
- 数据部分长度:以上求出的长度为UDP数据报的总长度28字节,由于UDP数据报的首部占8字节,所以数据字段长度占28-8=20字节
因为目的端口号 69 < 1023,是常用的服务端口,所以这个数据报是发往服务器端的20 字节
须知:
- 0~1023:常用的服务端口
- 1024~49151是被注册的端口,也成为“用户端口”
- 其中 1024~5000为临时端口
因为端口号为69,
所以使用 UDP 的这个服务器程序是TFTP【简单文件传输协议】
- TFTP:是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。
这个用户数据报是:从客户发送给服务器 服务器程序:TFTP。
|