互联网,实际上是一套理论和协议组成的体系架构。
协议,是一套众所周知的规则和标准。
数据是通过数据包来传输的,传输大文件,会将文件分割成一个个小数据包。
数据包要在网络上进行传输,就要符合IP协议标准(网际协议, Internet Protocol)
IP协议:传输数据包到计算机IP地址
IP协议就是网际协议。
计算机的地址就称为IP地址,请求任何一个网站,实际上是你的计算机向另外一台计算机发送请求。
如果要想把一个数据包从主机A发送给主机B,那么在传输之前,数据包上会被附加上主机B的IP地址信息,这样在传输过程中才能正确寻址。额外地,数据包上还会附加上主机A本身的IP地址,有了这些信息主机B才可以回复信息给主机A。
通过IP协议可以把数据包传输给对方电脑,但无法判断给对方电脑上的那个应用程序。
要做到这件事情需要通过UDP协议
UDP协议 传输数据包到计算机具体的应用程序
UDP协议,即 User Datagram Protocol
UDP一个很重要的信息是端口号,每个想访问网络的应用程序都会绑定一个端口号,通过端口号就可以把数据包发给计算机具体的目标应用程序了
在使用UDP发送数据时,可能会出错,UDP能识别这种错误,但是UDP并没有提供重传机制,并且UDP在发送之后无法判断是否到达目的地
因此,UDP的缺点是无法保证数据的可靠性,但是优点是传输速度非常快,因此在在线视频、互动游戏这方面有应用
而TCP协议保证了数据可靠性,负责将数据完整地传输到应用程序
TCP协议 将数据包完整地传输到应用程序
对于浏览器请求,或者邮件这些对数据可靠性要求较高的应用来说,使用UDP会存在问题:
- 数据包在传输过程中容易丢失
- 对于一个大文件,数据包在不同的时间点到达应用,顺序混乱,UDP无法组装、还原成完整文件
对于这种场景,需要使用TCP协议(Transmission Control Protocol 传输控制协议)
- 针对数据包丢失这一问题, TCP提供重传机制
- TCP引入排序机制,用序列号标记数据包,用于将乱序的数据包组装成完整的文件
如何重传?
接收方需要对每个操作进行确认,即接收方在接收到数据包之后,要发送确认包给发送端,如果发送端规定时间没有收到确认包,则触发重传机制
TCP为了保证数据传输的可靠性,牺牲了数据包的传输速度 —————— 三次握手,数据包校验机制,将数据包的数量提高了一倍
HTTP协议
HTTP协议和TCP协议都是TCP/IP协议簇的子集。
HTTP协议属于应用层,TCP协议属于传输层,HTTP协议位于TCP协议的上层。
请求方要发送的数据包,在应用层加上HTTP头以后会交给传输层的TCP协议处理,应答方接收到的数据包,在传输层拆掉TCP头以后交给应用层的HTTP协议处理。建立 TCP 连接后会顺序收发数据,请求方和应答方都必须依据 HTTP 规范构建和解析HTTP报文