> 文章列表 > 浏览器网络之TCP与UDP

浏览器网络之TCP与UDP

浏览器网络之TCP与UDP

文章目录

  • 网络模型
  • TCP协议
    • 建立连接——三次握手
    • 断开连接——四次挥手
    • 为什么要三次握手与四次挥手
  • 不常使用的协议——UDP
    • TCP与UDP的区别
    • UDP的使用场景
  • 总结

网络模型

在理解TCP与UDP 之前,首先需要对网络结构有一些基本的认识,在互联网发展的初期,国际标准化组织提出了两种最受认可的网络架构模型:OSI模型TCP/IP 模型,其中,TCP与UDP同位于传输层
在计算机通过DNS解析获取到目标服务器IP后,需要通过传输层建立端到端的连接,最常用的协议就是TCP协议与UDP协议。

浏览器网络之TCP与UDP

TCP协议

建立连接——三次握手

在三次握手建立连接的过程中,有两个概念需要了解

SYN 报文: 起标识作用,SYN = 1就表示这是一个连接请求或连接接受报文。

  • 客户端进行连接请求时,SYN=1 而 ACK=0。
  • 服务端同意建立连接,则响应报文中SYN=1,ACK=1. 。

ACK 报文: TCP协议规定,只有ACK=1时有效,且连接建立后所有发送的报文的ACK必须为1。

建立连接过程如下
浏览器网络之TCP与UDP

  • 1 由客户端发出请求连接,报文情况是: SYN=1,ACK=0,seq=t。
  • 2 SYN=1时不能携带数据,但要消耗一个序号,所以和 SYN 一起抵达战场的还有一个记录序号的 seq,其值为 k。
  • 3 然后服务端进行回复确认,报文内容是:SYN=1,ACK=1,同时还有服务端为自己初始化的序号 seq=k, 以及确认号 ack=t+1,
  • 4 客户端再进行一次确认,这一步用不到 SYN 了,报文内容是:ACK=1, ack=k+1。

断开连接——四次挥手

在断开连接时,出现了一个新的报文: FIN 报文,它用来释放一个连接。 FIN=1 时,就表示此报文段的发送方的数据已经发送完毕,请求释放运输连接

浏览器网络之TCP与UDP

  • 1 客户端就会向服务端抛出一个 FIN=1 报文以及序列号 seq=x。
  • 2 服务器接收到报文回复了一个 ACK=1 的标识以示确认,还有确认码 ack=x+1 以及序列号 seq=y。
  • 3 服务器继续向客户端抛出一个 FIN=1 报文,请求断开连接。
  • 4 客户端收到了服务端的报文,向服务端抛出一个 ACK=1 的报文。

为什么要三次握手与四次挥手

TCP连接是全双工协议,就是说双方都可以同时向对方发送或接收数据

  • 建立请求时

通过三次握手,客户端经历了一次请求和一次响应,服务端也经历了一次请求和一次响应,通过三次握手,确认了当前网络状态可以进行连接又确认了目标对象能够响应消息、确。在这样安全、稳定的前提下,两台计算机之间才可以建立起 TCP 连接

  • 断开请求时

当客户端第一次发送请求给服务端时,只能确认自己没有数据要传输给服务器了,但并不能确认服务器是否还有数据要发送

服务端第一次回复客户端时,表示服务端已经收到了客户端的断开请求,但是可能还有数据正在传输中,因此,在确认全部数据都传输完成后,服务端会再一次发送报文给客户端

客户端收到服务端第二次的报文后,为了保证数据安全,会再向服务端发送一次报文,服务端收到后得知客户端已经知道断开连接的消息,才正式断开连接,而客户端在一段时间内若没有在收到服务端任何消息时,自动关闭连接

不常使用的协议——UDP

TCP与UDP的区别

  • TCP 协议下,连接的建立需要三次握手,确保双方能够确实建立起稳定的传输通道。断开连接时需要四次挥手,确保双方数据安全完整。因此,TCP 又被称为面向连接的可靠传输

  • UDP 协议下,数据想发就发,想断就断。没有复杂的三次握手或者四次挥手,UDP 又被称为无连接的不可靠传输

UDP的使用场景

UDP既然不那么安全,也就让它具备了更强的灵活性,常用于一些实时性要求高,安全性要求相对较低的场景,如:

  • 实时应用程序:视频会议、在线游戏、语音聊天
  • 在线直播、网络电话
  • 快速传输少量数据,如DNS 服务

总结

网络模型

TCP协议

  • 建立连接——三次握手
  • 断开连接——四次挥手
  • 为什么要三次握手与四次挥手

不常使用的协议——UDP

  • TCP与UDP的区别
  • UDP的使用场景