码迷,mamicode.com
首页 > 其他好文 > 详细

TCP三次握手和四次挥手

时间:2018-06-13 11:30:03      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:网络通信基础知识

三次握手

1.客户端发送 SYN(SEQ=x)报文给服务器端,进入 SYN_SEND 状态。
2.服务器端收到 SYN 报文,回应一个 SYN (SEQ=y)ACK(ACK=x+1)报文,进入 SYN_RECV 状态。
3.客户端收到服务器端的 SYN 报文,回应一个 ACK(ACK=y+1)报文,进入 Established 状态。

打电话例子:
A:“喂,你听得到吗?” A->SYNSEND
B:“我听得到呀,你听得到我吗?” 应答与请求同时发出 B->SYN_RCVD | A->ESTABLISHED
A:“我能听到你,今天 balabala……” B->ESTABLISHED

四次挥手

1.某个应用进程首先调用 close,称该端执行“主动关闭”(active close)。该端的 TCP 于是发送一个 FIN 分节,表示数据发送完毕。
2.接收到这个 FIN 的对端执行 “被动关闭”(passive close),这个 FIN 由 TCP 确认。
3.一段时间后,接收到这个文件结束符的应用进程将调用 close 关闭它的套接字。这导致它的 TCP 也发送一个 FIN。
4.接收这个最终FIN的原发送端 TCP(即执行主动关闭的那一端)确认这个 FIN。 既然每个方向都需要一个 FIN 和一个 ACK,因此通常需要 4 个分节。

打电话例子:
A:“喂,我不说了。” A->FIN_WAIT1
B:“我知道了。等下,上一句还没说完。Balabala…..” B->CLOSE_WAIT | A->FIN_WAIT2
B:”好了,说完了,我也不说了。” B->LAST_ACK
A:”我知道了。” A->TIME_WAIT | B->CLOSED

为什么TCP连接只要三次而释放需要四次呢?

这是由于TCP的半闭造成,因为TCP连接是全双工,所以进行关闭时每个方向都需要单独关闭,这个单方向的关闭叫做半关闭。当一方完成它数据发送任务的时候,就发送一个FIN来向另一方通告对方我将要终止这个方向的连接。

TCP的状态(SYN,FIN,ACK,PSH,RST,URG)

1.SYN(synchronous):建立连接
2.FIN(finish):结束连接
3.ACK(acknowledgement):确认
4.PSH(push):传送
5.RST(reset):重置
6.URG(urgent):紧急

常用的TCP端口及功能

端口 协议 说明
21 FTP FTP服务器所开放的控制端口
23 TELNET 用于远程登录,可以远程控制管理目标计算机
25 SMTP SMTP服务器开放的端口,用于发送邮件
80 HTTP 超文本传输协议
110 PoP 用于邮件的接受

常用的UDP端口号及功能

端口 协议 说明
69 TFTP 简单的文件传输协议
111 RPC 远程过程调用
123 NTP 网络时间协议

TCP三次握手和四次挥手

标签:网络通信基础知识

原文地址:http://blog.51cto.com/13803922/2128765

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!