您现在的位置是:首页 >技术教程 >浏览器网络之TCP与UDP网站首页技术教程
浏览器网络之TCP与UDP
网络模型
在理解TCP与UDP 之前,首先需要对网络结构有一些基本的认识,在互联网发展的初期,国际标准化组织提出了两种最受认可的网络架构模型:OSI模型 与 TCP/IP 模型,其中,TCP与UDP同位于传输层。
在计算机通过DNS解析获取到目标服务器IP后,需要通过传输层建立端到端的连接,最常用的协议就是TCP协议与UDP协议。
TCP协议
建立连接——三次握手
在三次握手建立连接的过程中,有两个概念需要了解
SYN 报文: 起标识作用,SYN = 1就表示这是一个连接请求或连接接受报文。
- 客户端进行连接请求时,SYN=1 而 ACK=0。
- 服务端同意建立连接,则响应报文中SYN=1,ACK=1. 。
ACK 报文: TCP协议规定,只有ACK=1时有效,且连接建立后所有发送的报文的ACK必须为1。
建立连接过程如下
- 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 时,就表示此报文段的发送方的数据已经发送完毕,请求释放运输连接
。
- 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的使用场景