计算机网络基础:三次握手建立连接,四次挥手断开连接过程理解

OSI(开放系统互联模型)

OSI把网络通信的工作分为7层,分别是物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

物理层:比特流传输
数据链路层:提供介质访问和链路管理
网络层:IP选址和路由选择
传输层:建立、管理和维护端到端的连接
会话层:建立、管理和维护会话
表示层:数据格式转化、数据加密
应用层:为应用程序提供服务

TCP/IP模型

TCP/IP协议是一个开放的网络协议簇,TCP/IP采用4层层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求,这4各层次分别是:网络接口层、网络层、传输层、应用层。
各层主要设备:
物理层:中继器、集线器、双绞线
数据链路层:网桥、以太网交换机、网卡
网络层:路由器、三层交换机
传输层:四层交换机、四层路由器
应用层:各种应用程序

TCP三次握手建立连接

TCP是面向连接的协议,因此每个TCP连接都有三个阶段:连接建立、数据传送和连接释放。连接建立经过三个步骤,通常称为三次握手。
计算机网络基础:三次握手建立连接,四次挥手断开连接过程理解_第1张图片

  • 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器的确认;SYN:同步序列号
  • 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
  • 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

TCP三次握手为什么不能是两次

主要是防止两次握手情况下已经失效的连接请求突然又传送到服务器端而产生错误。例如:客户端A向服务器端B发送TCP连接请求,第一个连接请求报文在网络的某个节点长时间滞留,A超时后认为报文丢失,于是再重传一次连接请求,B收到后建立连接。数据传输完毕后双方断开连接,而这时之前滞留的连接请求到达了服务器端B,而B认为A又发来连接请求。如果两次握手建立连接,A无连接请求,造成B的资源浪费

TCP四次挥手断开连接

计算机网络基础:三次握手建立连接,四次挥手断开连接过程理解_第2张图片

  1. TCP客户端发送一个FIN,用来关闭客户端到服务器的数据传送
  2. 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN占用一个序号。
  3. 服务器关闭客户端的连接,发送一个FIN给客户端
  4. 客户端发回ACK报文确认,并将确认序列号设置为收到序号加1。

为什么连接的时候是三次握手,关闭的时候确是四次握手

因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时u,当Server端收到FIN报文时,很可能不会立即关闭Socket,所以只能先回复一个ACK报文,告诉Client端,‘你发的FIN报文我收到了’。只有等到我Server所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四次握手。

如果已经建立了连接,但是客户端突然出现故障了怎么办

TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75分钟发送一次。若一连发送10个探测报文仍没反应,服务器认为客户端出了故障,接着就关闭连接。

你可能感兴趣的:(计算机网络,TCP,tcp/ip,TCP,三次握手,四次挥手)