TCP相较UDP,是一种面向连接的可靠数据包传递。
1)先发起请求的为客户端。
2)SYN是发起连接请求标志位,ACK是应答请求标志位,FIN是结束连接标志位,虽然只是占1个位,但是需用1个字节发送的。
这些个标志位可以类比flag置1或置0的操作。
3)SYN消耗一个包号。
4)包号是传输字节的编号,一个字节对应一个包号(编号)
第一次:客户端(C) --(发起连接请求)--> 服务器端(S)
SYN 1000(0) //1000是包号,0是包中携带的数据(字节数),SYN占1个字节
第二次:客户端(C) <--(应答客户端连接请求,同时发起连接请求)-- 服务器端(S)
SYN 8000(0), ACK 1001 //ACK 应答第1次的SYN,确认号是下一个希望接收到字节的编号
//向客户端发送连接请求
第三次:客户端(C) --(应答服务器的连接请求)--> 服务器端(S)
ACK 8001 //只需要对服务器进行应答即可,不需要再发起请求了
三次握手,跟发送的数据无关,只是确定网络是否畅通。类比打电话的喂
第二次握手后,客户端已经建立了对服务器的连接,第三次握手后,服务器才建立了对客户端的连接。
断开连接的四次握手,是由于允许半关闭的状态,即允许一端先关闭(不发送连接请求了,只能接),另一端再关闭。