`
jarit
  • 浏览: 139460 次
社区版块
存档分类
最新评论

三次握手Three-way Handshake

 
阅读更多

三次握手Three-way Handshake

一个虚拟连接的建立是通过三次握手来实现的

 

1. (B) –> [SYN] –> (A)

假如服务器A和客户机B通讯. 当A要和B通信时,B首先向A发一个SYN (Synchronize) 标记的包,告诉A请求建立连接.

注意: 一个 SYN包就是仅SYN标记设为1的TCP包(参见TCP包头Resources). 认识到这点很重要,只有当A受到B发来的SYN包,才可建立连接,除此之外别无他法。因此,如果你的防火墙丢弃所有的发往外网接口的SYN包,那么你将不能让外部任何主机主动建立连接。

2. (B) <– [SYN/ACK] <–(A)

接着,A收到后会发一个对SYN包的确认包(SYN/ACK)回去,表示对第一个SYN包的确认,并继续握手操作.

注意: SYN/ACK包是仅SYN 和 ACK 标记为1的包.

3. (B) –> [ACK] –> (A)

B收到SYN/ACK 包,B发一个确认包(ACK),通知A连接已建立。至此,三次握手完成,一个TCP连接完成

Note: ACK包就是仅ACK 标记设为1的TCP包. 需要注意的是当三此握手完成、连接建立以后,TCP连接的每个包都会设置ACK位

握手阶段:
序号 方向 seq ack
1  A->B 10000 0
2 B->A 20000 10000+1=10001
3 A->B 10001 20000+1=20001
解释:
1:A向B发起连接请求,以一个随机数初始化A的seq,这里假设为10000,此时ACK=0

2:B收到A的连接请求后,也以一个随机数初始化B的seq,这里假设为20000,意思是:你的请求我已收到,我这方的数据流就从这个数开始。B的ACK是A的seq加1,即10000+1=10001

3:A收到B的回复后,它的seq是它的上个请求的seq加1,即10000+1=10001,意思也是:你的回复我收到了,我这方的数据流就从这个数开始。A此时的ACK是B的seq加1,即20000+1=20001

数据传输阶段:
序号  方向      seq ack size
23 A->B 40000 70000 1514
24 B->A 70000 40000+1514-54=41460 54
25 A->B 41460 70000+54-54=70000 1514
26 B->A 70000 41460+1514-54=42920 54
解释:
23:B接收到A发来的seq=40000,ack=70000,size=1514的数据包
24:于是B向A也发一个数据包,告诉B,你的上个包我收到了。B的seq就以它收到的数据包的ACK填充,ACK是它收到的数据包的SEQ加上数据包的大小(不包括以太网协议头,IP头,TCP头),以证实B发过来的数据全收到了。
25:A在收到B发过来的ack为41460的数据包时,一看到41460,正好是它的上个数据包的seq加上包的大小,就明白,上次发送的数据包已安全到达。于是它再发一个数据包给B。这个正在发送的数据包的seq也以它收到的数据包的ACK填充,ACK就以它收到的数据包的seq(70000)加上包的size(54)填充,即ack=70000+54-54(全是头长,没数据项)。

其实在握手和结束时确认号应该是对方序列号加1,传输数据时则是对方序列号加上对方携带应用层数据的长度.如果从以太网包返回来计算所加的长度,就嫌走弯路了.
另外,如果对方没有数据过来,则自己的确认号不变,序列号为上次的序列号加上本次应用层数据发送长度.

 

分享到:
评论

相关推荐

    TCP协议详解

    TCP协议内容详细说明: 三次握手Three-way Handshake…… 四次握手Four-way Handshake……

    巧解HTTP三次握手四次挥手流程(超详细).docx

    所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。 三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在...

    SimuTcpClient模拟tcp协议的三次握手 mfc 使用winpcap开发; 在多线程同步方面有些小问题

    -Simulated three-way handshake protocol tcp mfc using winpcap development in a multi-thread synchronization aspects of some small problems windows xp sp2 and above the original system can not send tcp...

    计算机网络第3章3.5-3.7笔记

    3.5 面向连接的传输:TCP 3.5.1 TCP连接 TCP被称为是面向连接的(connection-oriented),是因为在发送数据前,两个进程必须先相互“握手”,即它们必须相互...这种连接建立过程称为三次握手(three-way handshake)。

    TCP_three_way_handshake.rar_tcp 握手

    简单讲解客户端和服务端在进行TCP连接时“三路握手”的实现过程

    操作系统安全:syncookie配置.docx

    SYN Flood攻击利用的是IPv4中TCP协议的三次握手(Three-Way Handshake)过程进行的攻击。 TCP服务器收到TCP SYN request包时,在发送TCP SYN + ACK包回客户机前,TCP服务器要先分配好一个数据区专门服务于这个即将形成...

    用户层和传输层协议分析指导书

    这就是所谓的 TCP 联机的'三次握手( Three-Way Handshake )'的原理。 经过三向交握之后,你的 client 端的 port 通常是高于 1024 的随机取得的 port,至于主机端则视当时的服务是开启哪一个 port 而定。 实验内容:...

    具有三步握手机制的二维时钟二维概率CSMA

    通过引入三向握手机制,提高了系统的可靠性和稳定性,在一定程度上降低了信息包的冲突可能性,解决了终端隐藏和终端暴露的问题,提高了信道利用率。 通过建模分析和计算机仿真-MATLAB,分析结果和仿真结果表明理论...

    清华大学的计算机网络课件

    问题1-16:在教材的1.5.2节提到协议有三个要素,即语法、语义和同步。语义是否已经包括了同步的意思? 问题1-17:为什么协议不能设计成100%可靠的? 问题1-18:什么是因特网的穆尔定律? 问题1-19:局域网、广域网和...

Global site tag (gtag.js) - Google Analytics