前言
1、首先回顾一下称七层网络模型和分别对应的协议
序号 | 名称 | 协议 |
---|---|---|
7 | 应用层 | HTTP、SMTP、FTP、Telnet、RTSP |
6 | 表示层 | XDR、AFP、NCP |
5 | 会话层 | TLS、RPC、ASP、Winsock |
4 | 传输层 | TCP、UDP、SCTP、SPX、ATP |
3 | 网络层 | IP、IPX、RIP、ICMP、IGMP |
2 | 数据链路层 | 以太网、ATM、HDLC |
1 | 物理层 | 线路、无线电、光纤、双绞线 |
常见的网络层:
1 | ● Socket —— 会话层 |
二、三次握手与四次挥手的简单理解
2.1 三次握手
建立起一个TCP连接需要经过“三次握手”,断开需要经过“四次挥手”
1 | 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; |
2.2 四次挥手
1 | 第一次:客户端向服务器发出停止传输请求; |
为什么连接的时候是三次握手,关闭的时候却是四次握手?
因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,”你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。