TCP和UDP以及TCP的三次握手和四次挥手

1、TCP和UDP

Internet 的传输层有两个主要协议,互为补充。一个是TCP协议,一个是UDP协议。

UDP:用户数据报协议,是一种无连接的传输数据的协议。
TCP:传输控制协议,是一种面向连接的传输数据的协议。

2、TCP和UDP的区别

TCP UDP
面向连接的 无连接的
面向字节流 面向报文
可靠的,数据能完整、不丢失的传输 不可靠的,数据很容易在传输丢失
只能1对1 支持1对1,1对多
首部字节为20 首部字节为8

3、适用于什么场景?

UDP面对TCP的优点在于传输速度很快,当强调的是传输性能而不是完整性的时候,我们会使用UDP,比如音频和多媒体应用, DNS、TPTP、SNMP等。

其他情况下基本使用TCP,TCP确保了数据的完整性,除了比UDP慢之外,UDP有的TCP全都有。

4、TCP的三次握手与四次挥手

要理解这一方面首先就要了解一下TCP报文
在这里插入图片描述
这里我们要了解几个关键词分别是ACK,SYN、FIN、seq以及ack

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

SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此, SYN置1就表示这是一个连接请求或连接接受报文。

FIN (finis)即完,终结的意思, 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接

seq:序号。
ack:确认编号

4.1三次握手

为什么有三次握手?用一句话概括就是客户端和服务器端建立连接时,直到各自可收发最少需要三次握手。

在这里插入图片描述
客户端发送连接请求给服务端,服务器端被唤醒,想要和客户端建立连接并回复客户端请求已经接收,客户端接收请求并回复客户端已接受。

我们用白话文的形式模拟一下场景:
c“你在吗?”并拍了拍s
s“我在,你还在吗?”
c"我在。"

4.2四次挥手

在这里插入图片描述
为什么ACK和FIN没有一起发出去,还要经过两步?
因为可能客户端在发送FIN断开的请求的时候,服务器还没有接收完之前客户端发送的数据,服务器首先回复客户端已经接收到信息了,等接收完再和客户端断开连接。
白话文:
c“我要和你断开连接了”
s“知道啦,等我把你之前传给我的东西接收完,等一下”
s“我好啦,我们断开吧”
c“我知道啦”

猜你喜欢

转载自blog.csdn.net/d1063270962/article/details/109598608