TCP/IP 协议的三次握手和四次挥手
2016-06-20 17:10
615 查看
TCP/IP协议的三次握手和四次挥手:
三次握手:
三次握手是指建立TCP连接的过程,也就是说建立连接的过程需要Client和Server一共发送三个包进行确认连接。一般出现在socket编程中。
1)1th step(第一次握手):client将标志位SYN=1并随机产生一个seq=?,将该数据包发送给server,同时client进入SYN_SENT状态,等待Server确认。
2):server收到数据包后,由SYN=1知道了client想要建立连接,server将标志位SYN和应答码ACK=1,将ack=seq+1(注意和ACK不一样),随机产生一个seq=?,将>此数据包发送给client以确认连接请求!(注意是确认请求),然后server进入SYN_RCVD状态
3):client收到server的确认数据包后,检查ack是否时seq(之前client发送的)+1,ACK是否为1.如果都正确,将ACK=1,ack=seq(server发送的)+1,将此数据
包发送给server,server检查ack是否是seq+1,ACK是否为1.若确认则建立连接
四次挥手(全双工):
四次挥手也就是断开TCP连接。需要client和server共发送4个数据包确认断开。通常也出现在socket编程中。
1)第一次挥手:client发送一个FIN,告诉server断开两者之间的连接,随后client进入FIN_WAIT_1状态
2)第二次挥手:server接受到FIN之后,发送一个ACK给Client。告诉Client确认收到序号+1(
4000
与SYN相同,一个FIN占用一个序号),server进入CLOSE_WAIT>状态。
3)第三次挥手:server发送一个FIN,用来关闭server与client的连接,server进入LAST_ACK状态。
4)第四次挥手:client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK 给server ,确认序号为收到序号+1,server进入CLOSED状态,完成断开。
三次握手:
三次握手是指建立TCP连接的过程,也就是说建立连接的过程需要Client和Server一共发送三个包进行确认连接。一般出现在socket编程中。
1)1th step(第一次握手):client将标志位SYN=1并随机产生一个seq=?,将该数据包发送给server,同时client进入SYN_SENT状态,等待Server确认。
2):server收到数据包后,由SYN=1知道了client想要建立连接,server将标志位SYN和应答码ACK=1,将ack=seq+1(注意和ACK不一样),随机产生一个seq=?,将>此数据包发送给client以确认连接请求!(注意是确认请求),然后server进入SYN_RCVD状态
3):client收到server的确认数据包后,检查ack是否时seq(之前client发送的)+1,ACK是否为1.如果都正确,将ACK=1,ack=seq(server发送的)+1,将此数据
包发送给server,server检查ack是否是seq+1,ACK是否为1.若确认则建立连接
四次挥手(全双工):
四次挥手也就是断开TCP连接。需要client和server共发送4个数据包确认断开。通常也出现在socket编程中。
1)第一次挥手:client发送一个FIN,告诉server断开两者之间的连接,随后client进入FIN_WAIT_1状态
2)第二次挥手:server接受到FIN之后,发送一个ACK给Client。告诉Client确认收到序号+1(
4000
与SYN相同,一个FIN占用一个序号),server进入CLOSE_WAIT>状态。
3)第三次挥手:server发送一个FIN,用来关闭server与client的连接,server进入LAST_ACK状态。
4)第四次挥手:client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK 给server ,确认序号为收到序号+1,server进入CLOSED状态,完成断开。
相关文章推荐
- HttpURLConnection(1):网络编程的最佳实践
- tcpdump 分析 TCP 通信过程
- 浅谈网络语音技术
- tcpdump
- TCP/IP五层与OSI七层
- PHP中9大缓存技术总结(转载 http://www.php100.com/html/php/lei/2015/0919/8969.html)
- Linux服务器上监控网络带宽的18个常用命令
- Android中发送网络请求时参数为中文,导致请求的结果不正确的解决方法
- http post request header is too large 问题
- tensorflow从0开始(6)——保存加载模型
- Android OkHttp实现HttpDns的最佳实践(非拦截器)
- Android Https
- Reachability 监测网络状态(第三方框架)
- java网络编程-利用datagramsocket和datagrampacket实现一台机器向另一台机器传文件
- ffmpeg 搭配ffserver输出http协议视频流
- PXE无人值守网络安装Ubuntu14.04
- C#中HttpWebRequest的用法详解
- 深入HTTP head的使用详解
- JavaScript---网络编程(9-2)--DHTML技术演示(2-2)-表格加强
- JavaScript---网络编程(9-2)--DHTML技术演示(2-2)-表格加强