TCP协议详解(连接与终止)

传输控制协议(TCP)

介绍

TCP是一个面向连接的协议,为用户进程提供可靠的全双工字节流,具有如下特性:

(1)可靠性

当TCP向另一端发送数据时,它要求对端进行确认,否则会重传数据并进行等待,多次失败后才会放弃。当然,TCP并不能保证数据一定会被对方接收,只是保证了数据的传输可靠性和进行故障通知。

(2)流量控制

在任何时刻,TCP都通过流量窗口去告知对端它一次能够从对端接收多少字节的数据,即接收缓存区中当前可用的空间量,保证发送端发送的数据不会溢出。当接收到来自发送端的数据时,窗口大小就减小;当接收端从缓存区读取数据时,窗口大小就增大;故当TCP对应某个套接字的接收缓存区填满时,必须等待接收端从缓存区读取数据后,方能继续接收数据。

(3)全双工

TCP的连接是全双工的,即应用可以同时既发送数据又接收数据。因此,TCP必须为每个数据流方向提供跟踪诸如序列号和通告窗口大小等状态信息。当然,建立全双工连接后,根据需要可以转换成单工连接(半关闭,之后我们再进行讨论)。

TCP的连接和终止

下面我们将讨论TCP连接如何建立与终止。

TCP连接(三次握手)

1) 服务器准备好接收外来的连接。主要通过调用socketbindlisten这三个函数来完成,称为被动打开

2) 客户端通过调用connect函数发起主动打开,向服务器发送一个SYN信号,告诉服务器该客户端初始序列号。SYN信号格式:通常SYN分节不带数据,其所在IP数据报只含有一个IP部首、一个TCP部首及可能有的TCP选项。

3) 服务器确认(ACK)客户端的SYN,同时返回一个SYN(服务器的初始序列号)和ACK(确认)。

4) 客户端确认服务器的SYN。

TCP终止(四次挥手)

终止一个TCP连接通常需要四布。

1) 客户端先调用close(主动关闭),发送一个FIN分节。

2) 服务器接收到FIN分节执行被动关闭,该接收也作为文件结束符放在接收数据缓存的最后,意味着服务器在相应连接上再无额外数据接收。至此,客户端停止向服务器发送数据。

3) 一段时间后,接收到文件结束符的服务器将调用close关闭套接字,同样的,发送FIN分节。

4) 客户端接收到FIN并确认,即完成TCP连接的终止。

代码示例

未完待续。。。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP报文中,Control Bits字段(也称为标志位)用于传递各种控制信息,共有6个标志位,分别为URG、ACK、PSH、RST、SYN和FIN。下面对每个标志位进行详细解释: 1. URG(紧急指针):当该标志位被设置时,表示紧急指针字段有效。紧急指针用于指示报文中的紧急数据的位置。通常情况下,紧急数据是在普通数据之前发送的,用于传递一些重要且需要立即处理的信息。 2. ACK(确认号):当该标志位被设置时,表示确认号字段有效。ACK标志用于确认接收方已经成功接收到发送方的数据。TCP协议使用确认号字段来实现可靠传输机制。 3. PSH(推送):当该标志位被设置时,表示接收方应该立即将收到的数据交给应用程序处理,而不是等待缓冲区填满再交付。它用于告知接收方应该尽快将数据传递给应用层,以提高传输效率。 4. RST(复位):当该标志位被设置时,表示要求对方重新建立连接。RST标志用于中断连接或响应错误情况。当发生严重错误或非法操作时,可以发送RST报文来终止连接。 5. SYN(同步):当该标志位被设置时,表示发起连接请求或同意连接请求。SYN标志用于建立连接的握手过程中的同步信号。 6. FIN(结束):当该标志位被设置时,表示发送方已经完成数据的发送,希望关闭连接。FIN标志用于连接的关闭过程中,通知对方不再有数据发送。 这些控制位的组合和设置状态可以实现TCP协议的各种功能,如建立连接、可靠传输、数据推送和连接终止等。通过这些标志位的变化,TCP协议能够实现数据的可靠传输和连接的管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值