TCP协议学习

1 什么是TCP协议

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。

2 三次握手、四次挥手

2.1 TCP三次握手过程

2.1.1 学习了解

1 客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
2 服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
3 客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。

2.1.2 抓包验证

在这里插入图片描述
创建连接
在这里插入图片描述
在这里插入图片描述

1 192.168.3.96:55584 -> 110.242.68.4:80 客户端发送【SYN】(Seq=x)报文给服务端
2 110.242.68.4:80 -> 192.168.3.96:55584 服务端收到【SYN】报文,回应一个【SYN ACK】报文 (Seq=y, Ack=x+1)
3 192.168.3.96:55584 -> 110.242.68.4:80 客户端收到服务端的【SYN ACK】报文,回应一个【ACK】报文(Seq=x+1,Ack=y+1)

2.1.3 画图

客户端 服务端 LISTEN CLOSED 【SYN】(Seq=x) SYN_SEND 【SYN ACK】(Seq=y, Ack=x+1) SYN_RECV 【ACK】(Seq=x+1,Ack=y+1) ESTABLISHED ESTABLISHED 数据传输 数据传输 客户端 服务端

2.2 TCP四次挥手过程

2.2.1 学习了解

(1) 某个应用进程首先调用close,称该端执行“主动关闭”(active close)。该端的TCP于是发送一个FIN报文,表示数据发送完毕。
(2) 接收到这个FIN的对端执行 “被动关闭”(passive close),这个FIN由TCP确认。
注意:FIN的接收也作为一个文件结束符(end-of-file)传递给接收端应用进程,放在已排队等候该应用进程接收的任何其他数据之后,因为,FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。
(3) 一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。
(4) 接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。

2.2.2 抓包验证

断开连接
在这里插入图片描述

在这里插入图片描述

1 192.168.3.96:55584 -> 110.242.68.4:80 客户端关闭连接,发送【FIN, ACK】报文给服务端(Seq=u,Ack=y),这个ACK不确定是干什么的
2 110.242.68.4:80 -> 192.168.3.96:55584 服务端收到客户端的【FIN, ACK】报文,回应一个【ACK】报文(Seq=v,Ack=u+1)
3 110.242.68.4:80 -> 192.168.3.96:55584 服务端发送【FIN, ACK】报文给客户端(Seq=w,Ack=u+1)
4 192.168.3.96:55584 -> 110.242.68.4:80 客户端收到服务端发送的【FIN,ACK】报文,回应一个【ACK】报文(Seq=u+1,Ack=w+1)给服务端

2.2.3 画图

客户端 服务端 ESTABLISHED ESTABLISHED 【FIN,ACK】(Seq=u,Ack=y) FIN_WAIT1 【ACK】(Seq=v,Ack=u+1) CLOSE_WAIT FIN_WAIT2 【FIN, ACK】(Seq=w,Ack=u+1) LAST_ACK 【ACK】(Seq=u+1,Ack=w+1) WAIT_TIME CLOSE 等待一段时间(2MSL)后关闭 CLOSED 客户端 服务端

3 TCP首部格式

TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。一个TCP报文段分为首部和数据两部分,而TCP的全部功能体现在它首部中的各字段的作用。
TCP报文段首部的前20个字节是固定的(下图),后面有4n字节是根据需要而增加的选项(n是整数)。因此TCP首部的最小长度是20字节。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值