TCP协议的三次握手过程

简介:

TCP(Transmission Control Protocol) 传输控制协议

TCP的连接建立过程又称为TCP三次握手。

  • 首先发送方主机向接收方主机发起一个建立连接的同步(SYN)请求;
  • 接收方主机在收到这个请求后向发送方主机回复一个同步/确认(SYN/ACK)应答;
  • 发送方主机收到此包后再向接收方主机发送一个确认(ACK)。

 

 

TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)

Sequence number(顺序号码) Acknowledge number(确认号码)

第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;

第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包

第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。

完成三次握手,主机A与主机B开始传送数据。


在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器 进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.

实例:

IP 192.168.1.116.3337 > 192.168.1.123.7788: S 3626544836:3626544836
IP 192.168.1.123.7788 > 192.168.1.116.3337: S 1739326486:1739326486 ack 3626544837
IP 192.168.1.116.3337 > 192.168.1.123.7788: ack 1739326487,ack 1

第一次握手:192.168.1.116发送位码syn=1,随机产生seq number=3626544836的数据包到192.168.1.123,192.168.1.123由SYN=1知道192.168.1.116要求建立联机;

第二次握手:192.168.1.123收到请求后要确认联机信息,向192.168.1.116发送ack number=3626544837,syn=1,ack=1,随机产生seq=1739326486的包;

第三次握手:192.168.1.116收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,192.168.1.116会再发送ack number=1739326487,ack=1,192.168.1.123收到后确认seq=seq+1,ack=1则连接建立成功。

 

图解:
一个三次握手的过程(图1,图2)

 

(图1)

(图2)
 

 

第一次握手的标志位(图3)
我们可以看到标志位里面只有个同步位,也就是在做请求(SYN)
3 
 (图3)

第二次握手的标志位(图4)
我们可以看到标志位里面有个确认位和同步位,也就是在做应答(SYN + ACK)
4 
(图4)

第三次握手的标志位(图5)
我们可以看到标志位里面只有个确认位,也就是再做再次确认(ACK)
5 
 
(图5)

一个完整的三次握手也就是 请求---应答---再次确认

 

转自:http://www.cnblogs.com/rootq/articles/1377355.html





本文转自夏雪冬日博客园博客,原文链接:http://www.cnblogs.com/heyonggang/archive/2012/12/17/2821267.html,如需转载请自行联系原作者

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
缓存 网络协议 安全
TCP通信机制:三次握手、四次挥手、滑动窗口
TCP通信机制:三次握手、四次挥手、滑动窗口
1146 1
TCP通信机制:三次握手、四次挥手、滑动窗口
|
网络协议 算法 网络性能优化
理解TCP协议三次握手、四次挥手、流量控制、拥塞控制 、重传机制
TCP概述 TCP是一种面向连接的协议,在发送数据前通信双方必须在彼此间建立一条连接 所谓的连接其实就是客户端和服务器的内存里保存一份关于对方的信息,如IP地址、端口 TCP是一种字节流,它会处理IP层的丢包、重复以及错误问题 在建立连接的过程中,双方交换的一些参数可以放到TCP的头部 总结 :TCP提供了一种可靠、面向连接、字节流、传输层的服务,采用三次握手建立一个连接,四次挥手关闭一个连接
401 2
理解TCP协议三次握手、四次挥手、流量控制、拥塞控制 、重传机制
|
缓存 网络协议 安全
TCP三次握手四次挥手及常见问题解决方案
TCP三次握手四次挥手及常见问题解决方案
TCP三次握手四次挥手及常见问题解决方案
|
网络协议 测试技术
|
网络协议 网络性能优化
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(下)
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(下)
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(下)
|
缓存 网络协议 网络性能优化
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(上)
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(上)
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(上)
|
网络协议 安全 Linux
《我要进大厂》- 计算机网络夺命连环23问,你能坚持到第几问?(TCP 三次握手、四次挥手
《我要进大厂》- 计算机网络夺命连环23问,你能坚持到第几问?(TCP 三次握手、四次挥手
《我要进大厂》- 计算机网络夺命连环23问,你能坚持到第几问?(TCP 三次握手、四次挥手
|
存储 网络协议 算法
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)(下)
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)(下)
|
网络协议 安全 机器人
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)(上)
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)(上)
|
网络协议 安全 Linux
Linux网络原理及编程(5)——第十五节 TCP的连接(三次握手、四次挥手)
本节我们来介绍TCP连接的建立和断开。我们主要介绍两个过程、两个状态。
266 0
Linux网络原理及编程(5)——第十五节 TCP的连接(三次握手、四次挥手)