02 TCP 协议:如何保证页面文件能被完整送达浏览器

一、数据包的旅程

互联网中的数据是通过数据包来传输的,传输的两端需要有一个共同的协议标准,这样数据包才能正确发送,准确送达
数据包如何送达主机
数据包在网络上传输,要遵守 IP 协议,每一个网络设备都有一个唯一的标识,就是 IP 地址,用于在网络上寻址

1.1 主机 A 发送数据包给主机 B

  • 传输前
    数据包上附加主机 B 的 IP 地址,用于在接下来的传输过程中正确的寻址
    数据包上附加主机 A 的 IP 地址,用于主机 B 收到数据包后回复主机 A
    附加的信息放在 IP 头(IP 数据包开头),包含:IP 版本、生存时间、源 IP、目标 IP 等信息
  • 传输中:上层数据包交给网络层,网络层附加 IP 头到数据包,组成 IP 数据包,交给底层
  • 数据包通过物理网络达到主机 B
    数据包到主机 B 的网络层,拆开数据包的 IP 头,然后将数据部分交给上层
    如果主机 B 需要回复信息给主机 A,重复上面的流程即可

1.2 UDP:把数据包送达应用程序

IP 协议只负责把数据包送达目标主机,那到底是给哪个应用程序呢,这就需要有一个和应用程序打交道的协议,可以使用 UDP

UDP(User Datagram Protocol):用户数据报协议包含一个信息,就是端口号,通过端口号就能把置顶的数据包发送到指定的应用程序
那么端口号会被放在 UDP 头(用户数据报首部),包含:源端口、目的端口等信息
数据包添加 UDP 和 IP 头
可以看出,主机 A 发送数据包给主机 B 的流程有了 UDP 应该是
传输前会先将数据包交给传输层,传输层在数据包前面上附加 UDP 头,组成 UDP 数据包,再将 UDP 数据包交给网络层
网络层再对数据包附加 IP 头,组成 IP 数据包,交给底层
数据包通过物理网络达到主机 B
数据包到主机 B 的网络层,拆开数据包的 IP 头,然后将数据部分(包含 UDP 头)交给传输层
数据包到达传输层,UDP 头就露出来了,那么此时拆开 UDP 头,查看里面的目的端口,将数据包交给对应端口号的目标应用

UDP 用户数据报
UDP 是不可靠(尽最大努力交付,不保证可靠交付,同时不使用阻塞控制)、无连接(发送之前不需要建立连接)的,但是速度快
应用场景:在线视频、对讲机、视频会议…

TCP:把数据完整的送达应用程序

TCP(Transmission Control Protocol):传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层协议
数据包丢失,TCP 提供重传机制
数据包乱序,TCP 提供数据包排序机制
TPC 和 UDP 一样,提供了源端口、目的端口,另外还提供了用于排序的序列号,用于接收端通过序列化来重排乱序的数据包

TCP 传输数据

  • 传输数据前:需要建立连接,通过三次握手建立客户端和服务端的连接
  • 传输数据时
    接收端需要对每个数据包进行确认,即接收端收到数据包后,需要发送确认数据包给发送端,如果发送端发了数据包而没收到确认消息,则认为数据包丢失,会触发重发机制
    大的数据包会拆分成小的数据包,这些小的数据包到达接收端后,接收端会根据 TCP 头中的序号进行排序,恢复成完整的数据
  • 传输数据后:数据传输完毕后,需要终止连接,通过四次挥手确保客户单和服务端都能断开连接

TCP 报文段

二、总结

  • 互联网中的数据通过数据包进行传输,数据包在传输过程中容易丢失或出错
  • IP 负责把数据包送达至目的主机
  • UDP 负责把数据包送达给目标应用
  • TCP 保证数据完整传输,通信过程:三次握手建立连接、传输数据、四次挥手断开连接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值