TCP协议的握手与分手
TCP的三次握手四次分手
TCP协议建立连接总共需要进行三步
- 主机A请求主机B
- B确认收到请求回复A
- A确认收到B的回复
三次握手都是进行同一个端口(随机端口)
SYN: 请求同步
ACK:确认同步
# 第一次握手,从主机A的60517端口发送到远程22端口,[SYN]请求
60517 → 22 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM
# 第二次握手,主机B响应A成功,[ACK] = 1
22 → 60517 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1406 SACK_PERM WS=128
# 第三次握手,A通知B已成功收到响应,[ACK] = 1
60517 → 22 [ACK] Seq=1 Ack=1 Win=262912 Len=0
TCP协议断开连接总共需要进行四步
- 主机A通知主机B断开连接
- B确认收到通知
- B发送通知给A确定是否断开连接
- A回复确认
四次都是走的同一个随机端口
FIN:分手同步
# 第一次分手,主机A发送断开请求,[FIN] = 1,[ACK] =1
61271 → 22 [FIN, ACK] Seq=253 Ack=349 Win=1027 Len=0
# 第二次分手,主机B确认收到请求,[ACK] = 1
22 → 61271 [ACK] Seq=349 Ack=253 Win=261 Len=0
# 第三次分手,主机B问主机A你确定要分手吗,[FIN] = 1,[ACK] = 1
22 → 61271 [FIN, ACK] Seq=349 Ack=254 Win=261 Len=0
# 第四次分手,主机A说我确定分手,[ACK] = 1
61271 → 22 [ACK] Seq=254 Ack=350 Win=1027 Len=0
tcp和http关系
TCP:只是用来建立连接的;
http:超文本传输协议,连接建立好之后用来发数据的,实际应用数据的载体;
HTTP一定是基于TCP的;TCP建立好连接之后,我们需要进行数据交互,就会在已经建立好连接的基础上使用HTTP协议;
举例:HTTP相当于信的载体,信的内容,邮编,地址等信息,然后被放到邮箱里面;
TCP相当于,你这个邮箱的载体,你只管把信放到邮箱里面,具体邮箱里面的信怎么发到人家手里,不需要HTTP去管;底层工作完全由TCP来处理了;