关于Tcp的一些浅见
2015-06-10 09:46
441 查看
从小我们就被教育Tcp三次握手,四次挥手云云.
其实教科书把我们得思维限制死了,现实的状况更加有趣.譬如服务器端也会主动"say hi",客户端和服务器端会同时向对方发出syn.
博主总结出以下几条机器对于TCP信号的反应,对所谓的"客户端"和"服务器端"都适用.
建立连接的规则:
1.收到 syn 必定回复 ack
2.在listen 状态下收到 syn , 要额外恢复一个syn , 即syn + ack, 并且转化到 syn-rcvd 状态
3.在 syn-sent 状态下收到syn , 也要转化到 syn-rcvd 状态
4.在listen 状态下发出 syn , 转化到 syn-sent 状态
5.在syn-sent 或 syn-rcvd 下收到ack, 转化到 established
关闭连接的规则:
1.收到 fin 必定回复 ack
2.在established 下发送fin 后转化fin-wait-1
3.在fin-wait-1 下收到ack 后转化fin-wait-2
4.在fin-wait-2 下收到fin 后转化time-wait
5.在established 收到fin 后转化close-wait, 等待全部data 输送完毕后发送fin, 尔后转化last-ack状态
6.在fin-wait-1 下收到fin 后转化closing
7.closing 下收到ack 后转化为time-wait
8.time-wait下等待定时器过期(2msl)后进入closed
可以对照着这个图一条一条验证:
三次握手
四次挥手
其实教科书把我们得思维限制死了,现实的状况更加有趣.譬如服务器端也会主动"say hi",客户端和服务器端会同时向对方发出syn.
博主总结出以下几条机器对于TCP信号的反应,对所谓的"客户端"和"服务器端"都适用.
建立连接的规则:
1.收到 syn 必定回复 ack
2.在listen 状态下收到 syn , 要额外恢复一个syn , 即syn + ack, 并且转化到 syn-rcvd 状态
3.在 syn-sent 状态下收到syn , 也要转化到 syn-rcvd 状态
4.在listen 状态下发出 syn , 转化到 syn-sent 状态
5.在syn-sent 或 syn-rcvd 下收到ack, 转化到 established
关闭连接的规则:
1.收到 fin 必定回复 ack
2.在established 下发送fin 后转化fin-wait-1
3.在fin-wait-1 下收到ack 后转化fin-wait-2
4.在fin-wait-2 下收到fin 后转化time-wait
5.在established 收到fin 后转化close-wait, 等待全部data 输送完毕后发送fin, 尔后转化last-ack状态
6.在fin-wait-1 下收到fin 后转化closing
7.closing 下收到ack 后转化为time-wait
8.time-wait下等待定时器过期(2msl)后进入closed
可以对照着这个图一条一条验证:
三次握手
四次挥手
相关文章推荐
- 专题-计算机网络和协议
- 【网络】Get 请求与 Post 请求的区别
- TCP accept返回的socket,服务端TCP连接数限制
- Apache mod_rewrite实现HTTP和HTTPS重定向跳转
- http://www.softreg.com.cn/共享软件中心。
- 使用NSURLConnection获得网络数据
- 分公司网络建设----Juniper防火墙SRX240支持宽带拨号
- linux 内核TCP 相关参数解释
- 美国政府所有网站开始使用HTTPS加密
- http请求头
- NGINX 配置 SSL 证书 + 搭建 HTTPS 网站教程
- 实验五 Java网络编程及安全
- http发送http报文
- java基础——网络编程
- CodeIgniter针对lighttpd服务器URL重写的方法
- 青春毕业爱情下课 蒋蒋新歌献礼毕业季
- VIEWGOOD(远古)外语院系网络电视整体应用平台解决方案
- 6.9 android相机预览最佳分辨率计算 SwipeRefreshLayout下拉刷新的使用 仿开源中国api包内容的网络访问结构
- 网络通信聊天程序(群聊)
- 分公司网络建设---Juniper 设备策略路由配置