数据包如何送达主机:IP通过IP地址把数据包发给指定电脑
IP(Internet Protocol):计算机的地址
IP数据包开头信息:IP版本、源IP地址、目标IP地址、生存时间等
网络层:数据包+IP头,拆开数据包的IP头、将数据交给上层
主机如何将数据包转交给应用:UDP 通过端口号把数据包分发给正确应用
UDP(User Datagram Protocol):用户数据包协议,IP和应用打交道的协议
传输层:数据包+UDP头,解开UDP头、识别端口、交给上层应用
问题:
- UDP传输 容易丢包,不重发
- 大文件会被拆分成小数据包,经过不同路由,不同时间到达接收端,UDP不知道如何组装还原
UDP通信不建立链接,所以传输速度非常快,可以应用在在线视频、互动游戏等
数据是如何被完整地送达应用程序:TCP
TCP(Transmission Control Protocol 传输控制协议):面向连接的、可靠的、基于字节流的传输层通信协议
- 丢包可以重传
- 引入了数据包排序机制,可以把乱序数据包组合成完整文件
TCP 生命周期
- 建立连接:三次握手->建立TCP链接的时候,客户端和服务器总共要发送3个数据包以确认连接的建立
- 传输数据:接收端对每个数据包进行确认操作(接收到content-type请求头开始渲染)
- 断开连接:四次挥手
总结
-
tcp协议和http协议的关系:
-
http 和 websoket 都是应用层,用来封住请求的文本信息
-
tcp 属于传输层
-
http 协议位于 tcp 上层
-
tcp和udp 都是传输层协议:只能二选一
-
丢包原因:网络波动、物理线路故障、设备故障、恶意程序拦截、网络阻塞等
-
浏览器打开多个页签:每个页签的端口是一样的,网络进程知道每个TCP连接对应的标签是哪一个,接收到数据后,会把数据分发给对应的渲染进程