浏览器工作原理 - 数据包是如何完整的发送到应用程序

88 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」5的第天,点击查看活动详情

把数据包送达目的主机

数据包要在互联网上进行传输,就要符合网际协议(Internet Protocol,简称 IP)标准。计算机的地址就称为 IP 地址,访问任何网站实际上只是你的计算机向另外一台计算机请求信息。互联网上不同的在线设备都有唯一的地址,相当于我们的身份证号,有且仅有一个。

如果要想把一个数据包从主机 A 发送给主机 B,那么需要携带一下信息:

  • 主机 B 的 IP 地址信息
  • 主机 A 本身的 IP 地址

这些附加的信息会被装进一个叫 IP 头的数据结构里。

image.png

把数据包送达应用程序

IP 是非常底层的协议,只负责把数据包传送到对方电脑,但是对方电脑并不知道把数据包交给哪个程序。那么就需要基于 IP 之上开发能和应用打交道的协议,比如 UDP(User Datagram Protocol 用户数据包协议),或者TCP(Transmission Control Protocol,传输控制协议

他们都需要一个头部信息,头部信息中包含了目标端口和本机端口号,不同的是TCP协议的头部信息中还提供了用于排序的序列号,以便接收端通过序号来重排数据包。

TCP协议的特点

  • TCP 是面向连接的运输层协议。应用程序在使用 TCP 协议之前,必须先建立 TCP 连接。在传送数据完毕后,必须释放已经建立的 TCP 连接
  • 每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是点对点的(一对一) TCP 提供可靠交付的服务。通过 TCP 连接传送的数据,无差错、不丢失、不重复,并且按序到达- - TCP 提供全双工通信。TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP 连接的两端都设有发送缓存和接受缓存,用来临时存放双向通信的数据
  • 面向字节流。TCP 中的“流”指的是流入到进程或从进程流出的字节序列

一个完整的 TCP 连接的生命周期包括了“建立连接”“传输数据”和“断开连接”三个阶段。

第一次:客户端给服务端发送一个带有SYN标志的数据包 第二次:服务端给客户端发送带有SYN和ACK标志得数据包 第三次:客户端给服务端发送带有ACK标志的数据包

image.png

UDP协议的特点
  • UDP是无连接的,即通信时不需要创建连接(发送数据结束时也没有连接可以释放)所以减小了开销和发送数据前的时延;

  • UDP采用最大努力交付,不保证可靠交付,因此主机不需要维护复杂的连接状态;

  • UDP是面向报文的,只在应用层交下来的报文前增加了首部后就向下交付IP层;

  • UDP是无阻塞控制的,即使网络中存在阻塞,也不会影响发送端的发送频率

  • UDP支持一对一、一对多、多对一、多对多的交互通信

  • DUP的首部开销小,只有8个字节,它比TCP的20个字节的首部要短。

总结

  • 互联网中的数据是通过数据包来传输的,数据包在传输过程中容易丢失或出错。
  • IP 负责把数据包送达目的主机。
  • UDP 负责把数据包送达具体应用。
  • 而 TCP 保证了数据完整地传输,它的连接可分为三个阶段:建立连接、传输数据和断开连接。