TCP三次握手和四次挥手
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP三次握手和四次挥手相关的知识,希望对你有一定的参考价值。
三次握手
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三次握手和四次挥手的主要内容,如果未能解决你的问题,请参考以下文章