TCP初步--从模型到连接

1. TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

连接

Connections:
The reliability and flow control mechanisms described above require that TCPs initialize and maintain certain status information for each data stream.
The combination of this information, including sockets, sequence numbers, and window sizes, is called a connection.

在这里插入图片描述
建立一个 TCP 连接需要客户端与服务器端达成以上三个信息的共识。

Socket:由 IP 地址和端口号组成
序列号:用来解决乱序问题等
窗口大小:用来做流量控制

TCP 四元组可以唯一的确定一个连接,源地址、源端口、目的地址、目的端口。

源地址和目的地址的字段(32位)是在 IP 头部中,作用是通过 IP 协议发送报文给对方主机。

源端口和目的端口的字段(16位)是在 TCP 头部中,作用是告诉 TCP 协议应该把报文发给哪个进程。

UDP 不提供复杂的控制机制,利用 IP 提供面向无连接的通信服务。

2. 建立TCP连接

TCP 是面向连接的协议,使用 TCP 必须先建立连接,建立连接是通过三次握手实现的。

在这里插入图片描述
第一次
第一次握手:建立连接时,客户端发送SYN包(seq=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。 [3]
第三次
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
三次握手的原因:
避免历史连接
同步双方的初始序列号
减少双方不必要的资源开销

The principal reason for the three-way handshake is to prevent old duplicate connection initiations from causing confusion.

如果是历史连接(序列号过期或超时),则第三次握手发送的报文是 RST 报文,不再是ACK以此来中止历史连接。

3. 断开TCP连接

TCP 断开连接是通过四次挥手的方式实现的。双方都可以主动断开连接,断开连接后主机中的资源将被释放。
在这里插入图片描述

4. TCP流量控制

TCP 使用滑动窗口机制来实现流量控制,接收方在返回的数据中会包含自己的接收窗口的大小,以控制发送方的数据发送。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gallant Hu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值