网络分层与TCP的三次握手与四次挥手

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HUandroid/article/details/81703379

一、网络分层
网络分层就是将网络节点所要完成的数据的发送、打包或者拆包,以及控制信息的加载等工作,分别由不同的硬件或者软件模块完成。
按照不同功能和硬软件从下到上分成:1,物理层;2,数据链路层;3,网络层;4,传输层;5,应用层


1. 物理层
所谓的物理层,是指光纤、电缆或者电磁波等真实存在的物理媒介。及负责比特流在节点间的传输,即负责物理传输。


2. 数据链路层
该层负责网络层与物理层之间的通信,其主要功能是如何在不可靠的物理线路上进行数据的可靠传递。而在链路层里,为了保证传输,从网络层接受到的数据被分割成特定的可被物理层传输的帧。所谓的帧,是一段有限的0/1序列。连接层协议功能就是识别0/1序列中所包含的帧。是用来移动数据的结构包,它不仅包含原始数据,还包括发送方和接受方的物理地址以及纠错和控制信息。


3. 网络层
该层决定如何将数据从发送方路由到接受方。网络层通过综合考虑发送的优先权、网络堵塞程度、服务质量等来决定从一个网络中的节点A到另一个网络节点B的最佳路径。好比路由器,完成主机与主机之间的通信。主要的IP协议就在这里,它负责对数据加上IP地址和其他的数据以确定传输的目标


4. 传输层
上面3层协议以及可以让不同的主机之间通信了,而每台主机实际拥有多个进程,每个进程相当于不同程序,而要达到每个程序之间的通信,而传输层就是为两台主机上的应用程序提供端到端的通信。传输层有两个传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。其中TCP是一个可靠的面相连接的协议,UDP是不可靠的协议。


5. 应用层
应用程序收到传输层的数据后,需要进行解读,而解读需要规定好格式。应用层就是规定应用程序的数据格式的。主要协议有:HTTP、FTP、Telnet、SMTP、POP3等。


二、TCP的三次握手与挥手

名词解释:seq为序列号; ACK为确认字符;FIN为结束;2MSL最大报文段生存时间


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

  • 四次挥手
    第一次
    第一次挥手:客户端设置seq和ACK,向服务器发送一个FIN报文段。此时客户端进入FIN_WAIT_1状态,表示客户端没有数据要发送给服务端了。
    第二次
    第二次挥手:服务端收到客户端发送的FIN报文段,向客户端回了个ACK确认报文段。
    第三次
    第三次挥手: 服务端向客户端发送FIN报文段,请求关闭连接,同时服务器进入LAST_ACK状态。
    第四次
    第四次挥手:客户端收到服务端发送的FIN报文段,向服务器发送ACK报文段,然后客户端进入TIME_WAIT状态。服务端收到客户端的ACK报文段后,就关闭连接。
    此时,客户端等待2MSL后依然没有收到回复,说明服务端已正常关闭,这样客户端也关闭连接。
    挥手和握手

猜你喜欢

转载自blog.csdn.net/HUandroid/article/details/81703379
今日推荐