TCP三次握手和Time-Wait状态
2015-12-22 11:54
501 查看
第一次握手:建立连接时。client发送
(
第二次握手,server收到
第三次握手是client收到server端的
这里多说一点,既然提到了连接时的三次握手,就顺便把断开连接时的四次挥手也复习一下。
首先client主动发送
但
若
例如以下图:
是不是全部运行主动关闭的
有没有什么情况使主动关闭的
主动关闭的一方在发送最后一个
就会进入
这个是
主要有两个原因:
防止上一次连接中的包,迷路后又一次出现,影响新连接
(经过
可靠的关闭
在主动关闭方发送的最后一个
主动方要处于
syn包和一个随机序列号
seq=x到server,并进入
SYN_SEND状态,等待server进行确认。
(
syn,同 步序列编号)。
第二次握手,server收到
syn包,必须确认客户的
SYN。然后server发送一个
ACK=1, SYN=1, seq=y的随机数和
ack=x+1的确认数的包发送回去。
第三次握手是client收到server端的
SYN+ACK包,然后向server端发送确认包
ack=y+1, seq=x+1, ACK=1,client和server端进入
ESTABLISHED状态,完毕三次握手。详细图演示样例如以下(
ACK表示首部中的
ACK位置1。
ack表示首部中确认序号字段的值):
这里多说一点,既然提到了连接时的三次握手,就顺便把断开连接时的四次挥手也复习一下。
首先client主动发送
Fin=1,seq=u。它等于前面已传 送过去的最后一个字节的序号加1.这时
A进入
FIN-WAIT-1状态。等待
B的确认。
B收到连接后马上发出确认。确认号是
ack=u+1,而这个报文段 自己的序号是
v。等于
B前面已传送过的数据的最后一个字节的序号加1.然后
B即进入
CLOSE-WAIT状态。因而
A到
B的这个链接如今已经断开了,这时 的
TCP连接处于半关闭状态。即
A已经没有数据须要发送了。
但
B若发送数据,
A还是要接受的。
A收到来自
B的确认之后就进入了
FIN-WAIT-2状态等 待
B发出连接释放报文段。
若
B已经没有要向
A发送数据。其应用进程就通知
TCP释放连接。这时
B发出的连接释放报文段必须使用
FIN=1.如今假定
B的序 号为
w,
B还必须反复上次已发送过的确认号
ack=u+1.这时
B就进入了
LAST-ACK状态。等待
A确认。
A在收到
B的连接释放之后必须对此发出确 认。在确认号中把
ACK置1。确认号
ack=w+1,而自己的序号是
seq=u+1。接着
A进入
TIME-WAIT状态。为了保证
B能够收到确认释放报文段。
例如以下图:
是不是全部运行主动关闭的
socket都会进入
TIME_WAIT状态呢?
有没有什么情况使主动关闭的
socket直接进入
CLOSED状态呢?
主动关闭的一方在发送最后一个
ack后
就会进入
TIME_WAIT状态 停留
2MSL(
max segment lifetime)时间
这个是
TCP/IP不可缺少的,也就是“解决”不了的。也就是
TCP/IP设计者本来是这么设计的
主要有两个原因:
防止上一次连接中的包,迷路后又一次出现,影响新连接
(经过
2MSL,上一次连接中全部的反复包都会消失)
可靠的关闭
TCP连接
在主动关闭方发送的最后一个
ack(fin),有可能丢失。这时被动方会又一次发
fin, 假设这时主动方处于
CLOSED状态 ,就会响应
rst而不是
ack。所以
主动方要处于
TIME_WAIT状态,而不能是
CLOSED。
相关文章推荐
- 高性能Java网络框架 MINA
- TCP/IP、Http、Socket的区别
- servlet-------HttpServletRequest对象
- 网络打印机的一般故障
- NSURLSession下载与缓存
- 安全科普:理解SSL(https)中的对称加密与非对称加密
- HTTP协议基础
- 网络编程概念总结(笔记)-------来自传智播客视频
- http://blog.chinaunix.net/uid-20484604-id-1941290.html
- TCP server和client的一些测试
- C++使用CHttpFile实现Http请求
- jquery easyui 弹出消息框 (转载) jQuery EasyUI API 中文文档 - 消息框(Messager) http://www.cnblogs.com/hantianwei/archive/2012/03/19/2407113.html
- http://home.cnblogs.com/
- linux抓包工具tcpdump
- 利用nginx搭建http和rtmp协议的流媒体服务器
- HTTP 头部字段
- 使用360浏览器出现域名解析错误和有道词典连接不了网络的解决方法
- 六款 c http 服务器
- 网络异常那些事
- 在Xcode7/7.1中使用Http请求,App Transport Security has blocked a cleartext HTTP (http://) resource load sin