Chinaunix首页 | 论坛 | 博客
  • 博客访问: 649443
  • 博文数量: 156
  • 博客积分: 7030
  • 博客等级: 少将
  • 技术积分: 1560
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-16 12:46
文章分类

全部博文(156)

文章存档

2009年(3)

2008年(7)

2007年(47)

2006年(99)

我的朋友

分类: 系统运维

2008-07-28 16:37:11

 
TCP 连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程:
1. 客户端向服务器发送一个SYN置位的TCP报文,其中包含连接的初始序列号x和一个窗口大小(表示客户端上用来存储从服务器发送来的传入段的缓冲区的大小)。
2. 服务器收到客户端发送过来的SYN报文后,向客户端发送一个SYNACK都置位的TCP报文,其中包含它选择的初始序列号y、对客户端的序列号的确认x+1和一个窗口大小(表示服务器上用来存储从客户端发送来的传入段的缓冲区的大小)。
3. 客户端接收到服务器端返回的SYN+ACK报文后,向服务器端返回一个确认号y+1和序号x+1ACK报文,一个标准的TCP连接完成。
TCP 使用类似的握手过程来结束连接。这可确保两个主机均能完成传输并确保所有的数据均得以接收
TCP Client
Flags
TCP Server
1 Send SYN (seq=x)
----SYN--->
SYN Received
2 SYN/ACK Received
<---SYN/ACK----
Send SYN (seq=y) ACK (x+1)
3 Send ACK (y+1)
----ACK--->
ACK Received Established
x: ISN (Initial Sequence Number) of Client
y: ISN of the Server

 

第一次是客户端发起连接;第二次表示服务器收到了客户端的请求;第三次表示客户端收到了服务器的反馈。这之后双方均确认了连接的有效性,如果第三次服务器未收到,假设一个CS发送了SYN后无故消失了,那么S在发出SYN+ACK应答报文后是无法收到CACK报文的(第三次握手无法完成),这种情况下S一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30-2分钟);

阅读(10821) | 评论(2) | 转发(1) |
给主人留下些什么吧!~~

chinaunix网友2011-03-06 19:25:07

写得挺好的 很清楚

hxdianji2008-07-29 00:00:44

学习,谢谢楼主