三次握手 来源知乎用户Storm
来源:互联网 发布:淘宝页面设计尺寸 编辑:程序博客网 时间:2024/06/05 15:34
一.概念
SYN(synchronous/同步)是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。
ACK(Acknowledgement/确认),即确认字符,在数据通信中,接受站发给发送站的一种传输类控制字符,表示发来的数据已接受无误。
SEQ(Sequence/序列)是发送数据包中的序列号。
Established(Established/已建立),含义TCP连接成功。
SYN_SENT表示请求连接,当你要访问其他的计算机的服务时首先要发个同步信号给该端口,此时状态为SYN_SENT,如果连接成功了就变为ESTABLISHED,此时SYN_SENT状态非常短暂。
SYN_RECV是指服务端被动打开后,接收到了客户端的SYN并且发送了ACK时的状态。再进一步接收到客户端的ACK就进入到ESTABLISHED状态。
二.流程
第一次握手:建立连接时,client发送syn(syn=j)包到server,并进入SYN_SENT状态,等待服务端确认。
第二次握手:server接收到syn包,必须确认client的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时server进入SYN_RECV状态;
第三次握手:client收到server的SYN+ACK包,向server发送确认包(ack = k+1),此包发送完毕
client和server进入ESTABLISHED(TCP连接成功,完成三次握手)
完成三次握手,client与server开始传送数据
三. 通俗来说
AB两军协同作战, A军想要与B军同时发起总攻, 于是A军派出通讯员前往B军通讯, B军收到消息, 但是A军并不知道B军已经收到消息, B军司令很担心这个问题, 于是, 派出通讯员前往A军, A军收到了通讯员的消息, 知道B军知道了要发起总共的消息, 但是A军司令担心B军不知道自己收到了消息, 如果到时候没有发起总共怎么办? 于是A军再次派出通讯员前往B军告诉B军, A军已经收到了B军已经收到了消息的消息.
这就是三次握手的基本原理, 在确保消息准备不丢失的情况下, 进行高效安全的通讯!
- 三次握手 来源知乎用户Storm
- 三次握手
- 三次握手
- 三次握手
- ”三次握手“
- 三次握手
- 三次握手
- 三次握手
- 三次握手
- 三次握手
- 三次握手
- 三次握手
- 三次握手
- 三次握手
- 三次握手
- 三次握手
- 三次握手
- 三次握手
- python 实现读取excel中的内容
- Mysql与Java类型转换
- 宜立方商城-day01
- mybatis日期查询
- ArcGIS10.2 发布要素服务
- 三次握手 来源知乎用户Storm
- 【转载】朴素贝叶斯算法原理小结
- ChainMapper/ChainReducer实现原理及案例分析
- 双系统:Windows7下安装Ubuntu16.04
- pycharm 新手使用
- X86、X64和X86_64区别
- phonegap插件实现对android原生的调用
- 关于DNF的多媒体包NPK文件的那些事儿(2)
- python猜数字游戏