TCP三次握手

来源:互联网 发布:软件如何申请专利 编辑:程序博客网 时间:2024/05/16 23:07

”尽管T C P和U D P都使用相同的网络层( I P),T C P却向应用层提供与U D P完全不同的服务。
T C P提供一种面向连接的、可靠的字节流服务。
面向连接意味着两个使用T C P的应用(通常是一个客户和一个服务器)在彼此交换数据
之前必须先建立一个T C P连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说
“喂”,然后才说明是谁。“

 

tcp数据在ip数据包中的封装:

        |IP首部|TCP首部|TCP数据

        20字节 20字节   

 

图:TCP包首部

 

有关tcp的三次握手《TCP/IP详解卷一》讲的挺详细了。tcp协议和udp协议都是建立在ip协议基础上的,tcp数据包也是封装在ip数据包中的。

 

第一次握手:客户机将tcp数据包中的syn置位1,初始序列号(ISN)是客户端随机产生

                     的一个值,确认号是0;并进入SYN_SEND状态

第二次握手:服务器收到这个同步请求数据包后会对客户端进行一个同步确认。这个数

                     据包中,序列号ISN是服务器随机产生的一个值,确认号是客户端的初始序

                     列号+1;服务器进入此时服务器进入SYN_RECV态;

第三次握手:客户端收到这个同步确认数据包后,再对服务器进行一个确认。该数据包

                     中,序列号是上一个同步请求 数据包中的确认号值,确认号是服务器的初

                     始序列号+1。客户端和服务器进入ESTABLISHED状态,完成三次握手。

如图:

附:

SYN: (同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TCP连接请求。

ACK: (确认编号,Acknowledgement Number)是对TCP请求的确认标志,同时提示对端系统已经成功接收所有数据。

FIN: (结束标志,FINish)用来结束一个TCP回话.但对应端口仍处于开放状态,准备接收后续数据。

未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
Backlog参数:表示未连接队列的最大容纳数目。

参考文章:

TCP三次握手协议的简单解释

TCP序列号和确认号详解

 

0 0
原创粉丝点击