TCP协议中的“三次握手”

一、关于TCP协议

    TCP(Transmission Control Protocol)协议通常被称为面向连接的协议,这一协议保证可靠有序地将数据从发送者传送到接收者。


1.创建可靠会话

    TCP与UDP的关键区别在于可靠性,TCP的可靠性在于其使用了面向连接的会话。在主机间使用TCP协议传送数据前,传输层会专门开启一个进程用于建立源主机和目的主机之间的连接。通过该连接,可以跟踪主机之间的会话或者通信数据流。同时,该进程还保证每台主机都知道并做好了通信的准备。完整的TCP会话要求在主机之间建立双向会话。
    会话创建后,目的主机针对收到的数据段向源主机发送确认信息。在TCP会话中,这些确认信息构成了可靠性的基础。源主机在收到确认信息时,即表明数据成功发送,且可以退出数据跟踪。如果源主机未在规定时间内收到确认信息,它将向目的主机重新发送数据。可以得知,使用TCP协议的额外开销部分源自确认信息和重新发送信息所产生的网络流量。

2.TCP服务器进程

    运行在服务器上的应用进程会一直处于等待状态,直到客户端发出信息请求或者服务请求,然后启动通信。服务器上运行的每个应用程序进程都配置有一个端口号,由系统默认分配或系统管理员手动分配。当某个动态服务器应用程序分配到特定端口时,该端口在服务器上视为“开启”,这表明应用层将接受并处理分配到该端口的数据段。在同一服务器上可以同时开启很多端口,每个端口对应一个动态服务器应用程序,不能为两个应用程序配置相同的端口。

二、TCP中的“三次握手”


1.“三次握手”的功能

    每个TCP连接都代表其中包含着两股单向通信数据流或者会话。若要简历连接,主机应该执行“三次握手”。TCP报头中的控制位指出了连接的进度和状态。
    “三次握手”执行如下功能:
  • 确认目的主机存在于网络中
  • 确认目的主机中有准备接受请求的目的端口
  • 通知目的主机,源主机想要在该端口上建立会话
    总结起来,三次握手需要解决的问题就是:有目的主机吗?目的主机中有源主机想要使用的目的端口吗?都有是吧,好,那我要建立会话了。

2.TCP中的控制字段

    为了理解“三次握手”的过程,必须先了解两台主机间交换的不同值。在TCP数据段报头中(header部分),有6个包含控制信息的1bit字段,用于管理TCP进程,如下:
  • URG —— 紧急指针(urgent)
  • ACK —— 确认字段(acknowledge)
  • PSH —— 推送功能(push)
  • RST —— 重置连接(reset)
  • SYN —— 同步序列号(sync)
  • FIN —— 发送方已传输完所有数据(finish)
    这些字段用作标志,它们只有两个值:1或者0。当值设为1时,表示数据段中包含控制信息。

3.“三次握手”的细节

先po出一张高清大图:




具体步骤:
    1.SYN
    TCP客户端发送带有SYN控制标志的数据段,指示包含在报头中的序列号字段的初始值,开启“三次握手”。序列号的初始值又称为初始序列号(ISN),由系统随机生成,用于跟踪会话过程中从客户端到服务器的数据流。在会话过程中,每从客户端向服务器发送一个字节的数据,ISN就增加1。
    2.SYN和ACK
    TCP服务器需要确认从客户端收到SYN数据段,从而建立从客户端到服务端的会话。为了达到此目的,服务器要向客户端发送带ACK确认标志的数据段,表明确认编号有效。客户端将这种带确认标志的数据段理解为确认信息,即服务器已收到从TCP客户端发出的SYN信息。
    确认编号字段的值等于客户端初始序列号加1。客户端和服务端之间的会话实际上是由两个单向会话构成的:一个是从客户端到服务端的会话,另一个恰好相反。所以,为了开启从服务端到客户端的会话,服务器应该采用和客户端同样的方法使用SYN标志。
    SYN标志表明初始序列号已包含在报头中,且该值将用于跟踪会话过程中从服务器返回客户端的数据流。
    3.ACK
    最后,TCP客户端发送包含ACK标志的数据段,以表示对服务器发送的SYN信息的响应。在数据段中,不包含用户数据。确认号字段的值比从服务器接收的初始序列号值大1。一旦在客户端和服务端建立了双向会话,该通信过程中交换的所有数据段都将包含ACK标志。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值