理解TCP中的三次握手
来源:互联网 发布:登陆千牛淘宝客服不亮 编辑:程序博客网 时间:2024/04/28 11:06
TCP三次握手
TCP(Transmission Control Protocol) 传输控制协议
TCP是端到端的传输控制协议,提供可靠的连接服务,采用三次握手方式来建立连接。
要理解三次握手流程,需要先了解TCP协议格式,因为在三次握手过程中,发送的都是没有数据,只有报头信息的TCP报文,通过报头中某些字段值的不同含义从而实现连接的建立。TCP报文格式如下:
上述的TCP报文格式中每个字段意义已经描述得很清楚,现针对三次握手中要用到的字段再做简单描述,
TCP报文格式中有6位的tcp标志位,每个标志位对应着TCP连接的不同状态,完整的6个标志位组成了TCP连接的完整状态。
具体每个标志位的含义如下:
- URG (urgent 紧急 =1时表示Urgent Pointer字段值有效)
- ACK (acknowledgement 确认 =1表示Acknowledgement number字段值有效)
- PSH (push =1时表示传送数据)
- RST (reset =1时表示连接需要复位)
- SYN( synchronous =1时表示建立连接,序号同步)
- FIN (finish 结束 =1时表示终止连接)
三次连接具体过程描述:
第一次握手:Client端发送标志位SYN=1,随机产生Seq number=8000的SYN包到Server,此时Client进入SYN_SEND状态。Server根据SYN=1知道Client要求建立TCP连接
第二次握手:Server收到SYN请求后如果允许建立连接,就向Client发送Ack number=8001 (Client的Seq Number+1),随机产生Seq Number=15000,状态标志位,SYN=1,ACK=1的SYN+ACK包,此时Server进入SYN_RECV状态。
第三次握手:Client收到SYN+ACK包后检查Ack number是否正确,是否等于第一次握手中发送的Seq number+1,同时检查标志位ACK是否为1,若两项检查都正确,Client会再次发送Ack number=15001(Server的Seq Number+1),ACK=1的ACK包,Server收到后检查Ack number值与ACK=1无误后则连接建立成功, 此时Client和Server均进入ESTABLISHED状态。
完成三次握手后Client与Server开始传送数据。
三次握手过程中报头信息的变化
第一次握手
SYN包没有携带任何数据,使用了报头中SYN标志位和Seq number字段,其中SYN=1标志请求建立一个连接
第二次握手
SYN+ACK包也没有携带任何数据,使用了报头中的SYN和ACK标志位,以及Seq Number 和 Ack Number字段,
其中SYN=1标志Server端同步初始顺序号,以便Server向Client发送信息。
ACK=1标志已确认收到SYN包,同时给出期望从Client端收到的下一个序号。
需要注意的是在第二次握手中还定义了动态窗口大小。
第三次握手
ACK包没有携带任何数据,使用标志位ACK=1以及Seq Number和Ack Number字段。
本文出自 “我儿子真帅!” 博客,转载请与作者联系!
- 理解TCP中的三次握手
- 理解TCP中的三次握手
- TCP中的三次握手
- 理解tcp的三次握手
- TCP 三次握手简单理解
- TCP三次握手的理解
- TCP三次握手的理解
- TCP协议中的三次握手
- TCP协议中的“三次握手”
- TCP+UDP区别&&TCP三次握手理解
- 理解TCP为什么需要进行三次握手
- 理解TCP为什么需要进行三次握手
- 这样理解TCP/IP的三次握手
- 通俗理解TCP握手次数是三次?
- 理解TCP为什么需要进行三次握手
- TCP三次握手的简单理解
- TCP连接三次握手的通俗理解
- TCP连接建立的三次握手理解
- 端口查看与关闭方法小结
- 我眼中的云计算
- 恢复Outlook Express目录结构
- 理解双绞线中直通线、交叉线的实际意义
- 理解单播、组播和广播
- 理解TCP中的三次握手
- IOS模式简介
- VIM IDE搭建(一)---ctags
- 理解IOS配置文件
- ActiveState Komodo IDE v7.1.2.73175 for Windows Incl Keygen-BEAN
- Linux学习笔记(十)
- 随笔3 - C#下的结构体(值类型)与类(引用类型)
- Java中,ResultSet 的用法
- ActiveState Perl Dev Kit Pro v9.2.0.296171 for Windows Incl Keygen-BEAN