fayeah / blogs

方法论、问题驱动、总结
6 stars 0 forks source link

如何保证html文件完整地发送到浏览器 #25

Open fayeah opened 4 years ago

fayeah commented 4 years ago

互联网的数据通过数据包来传输,如果数据包过大,会拆分成一个个小的数据包。

了解数据包的传输,先了解几个概念:

image

从图中可以看出传输数据的步骤为:

  1. 应用层将数据发送给传输层
  2. 传输层给数据加上UDP/TCP头,将包装好的数据发送给网络层
  3. 网络层为数据加上IP头,发送给底层
  4. 底层通过物理网络发送给目的主机B
  5. 主机B网络层解开IP头,并将拆开的数据部分发送给传输层
  6. 传输层解开UDP/TCP头部信息,并将拆开的数据发送给应用层

至此,数据就能正确地发送到对应的主机里面对应的应用程序 了。

但是UDP和TCP又有什么区别呢?

TCP完整的生命周期

TCP生命周期包含“建立连接”“传输数据”和“断开连接”三个阶段。 image

首先,建立连接,发送端和接收端需要发送3个数据包以确认连接建立成功; 其次,传输数据阶段,接收端需要对每个数据包进行确认操作,也就是说一旦发送端在一定时间内没有收到接收端的确认包,就会立即触发重发机制。 最后,断开连接阶段,四次挥手断开连接。

HTTP协议和TCP协议的关系

HTTP协议是应用层协议,而TCP是传输层协议,HTTP需要依靠TCP来发送/接受数据。HTTP组装好HTTP头信息发送给TCP,TCP在接收端的传输层解开TCP头信息,将拆好的数据发送给HTTP。

参考:https://time.geekbang.org/column/article/113550