OSI
五层模型中的第四层,负责在网络中的两个端系统之间提供数据传输服务TCP
(传输控制协议)和UDP
(用户数据报协议)**TCP
(传输控制协议): 提供可靠、面向连接的服务。通过三次握手建立连接,使用序号和确认号来保证数据的可靠传输,还包括流量控制和拥塞控制等机制。UDP
(用户数据报协议): 提供无连接、不可靠的服务。适用于对实时性要求较高的应用,如音频和视频传输。UDP
较轻量,但不提供数据的可靠性和顺序性。TCP
和UDP
协议都使用端口号,共有65535个端口号,其中0到1023号为众所周知的端口号,用于标识一些常见的服务。time0
时,客户端向服务端发送连接请求time1
时,服务端收到了客户端发来的连接请求,此时返回同意连接的信息time2
时,客户端收到了服务端的同意信息,那么此时客户端向服务端发送信息的通道建成time3
时,服务端又需要向客户端发送消息,但是向客户端发送信息的通道并没有建成,所以向客户端发送连接请求time4
时,客户端收到连接请求,向服务端发送了同意信息time5
时,服务端收到同意信息,那么此时服务端向客户端发送信息的通道建成,双方都可以互相发送消息time0
时,客户端向服务端发送连接请求time1
时,服务端收到了客户端发来的连接请求,此时返回同意连接的信息(同意客户端可以向服务端发送信息),但是服务端也需要向客户端发送信息,所以跟着发送了向客户端连接的请求time2
时,客户端收到了服务端同意的信息,那么客户端向服务端发送消息的通道建立完成,还看到了服务端的连接请求,所以又向服务端发送了同意连接的信息time3
时,服务端收到了同意连接的信息,此时双方就可以互相发送信息了特殊文字说明:
SYN
表示同步请求,seq
表示序列号ACK
表示确认通知,ack
表示确认号三次握手的详细步骤
TCP
报文,标志位设置为SYN
,表示发送连接请求ISN
),用于后续数据的序列化ACK
ISN
)和确认号(ACK
),确认号是客户端的序列号加一ACK
报文后,向服务端发送一个TCP报文,标志位设置为ACK
ACK
)设置为服务端的序列号加一,还有收到的确认号当作序列化返还回去为什么要三次握手
TCP
报文,标志位设置为FIN
,表示客户端不再发送数据FIN_WAIT_1
状态,等待服务端的确认TCP
报文,标志位设置为ACK
,确认客户端的FIN
CLOSE_WAIT
状态,表示接收到了关闭连接的请求TCP
报文,标志位设置为FIN和ACK
,表示服务端也不在发送数据LAST_ACK
状态,等待客户端的最后确认TCP
报文,标志位设置为ACK
,确认服务端的FIN
TIME_WAIT
状态,等待可能可能出现的延迟报文UDP
是一种无连接、简单、轻量级的传输层协议
与TCP
不同,UDP
不提供连接的可靠性和流控制,而是专注于尽可能快速地传输数据
适用场景:实时音频和视频传输、在线游戏等