TCP/IP、UDP、HTTP详解

TCP/IP、UDP、HTTP详解

在开始之前,我们来回顾一下七层、四层、五层网络模型

网络层次划分

TCP/IP、UDP、HTTP详解
TCP/IP、UDP、HTTP详解

物理层(Physical Layer)

该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输

数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。

网络层(Network Layer)

网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。如果您想用尽量少的词来记住网络层,那就是"路径选择、路由及逻辑寻址"。

传输层(Transport Layer)

在这一层,信息传送的协议数据单元称为段或报文。 网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而传输层则负责将数据可靠地传送到相应的端口。

会话层

会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。

表示层

表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。

应用层

为操作系统或网络程序提供访问网络服务的接口

TCP/IP协议

TCP/IP、UDP、HTTP详解

TCP协议的三次握手和四次挥手

TCP/IP、UDP、HTTP详解
注:seq:"sequance"序列号;ack:"acknowledge"确认号;SYN:"synchronize"请求同步标志;;ACK:"acknowledge"确认标志";FIN:"Finally"结束标志。

TCP建立连接过程:

首先Client端发送连接请求报文,Server端接收连接后回复ACK,并为这次连接分配资源。client端接收到ACK报文之后也向server端发送ACK,并分配了资源,这样TCP就建立了。

TCP断开连接过程

假设client端发起中断连接请求,也就是发送FIN报文。server端接到FIN报文后,意思是说“我client端没有数据要发给你了”,但是如果你还有数据没有发送完成,则不急关闭socket,可以继续发送数据。 所以你先发送ACK,“告诉client端,你的请求我收到了,但是我还没准备好,请你继续等我的消息”。这个时候client端就进入FIN_WAIT状态,继续等待server端的FIN报文。当server端确定数据已发送完成,则向client端发送FIN报文,“告诉Client端,好了,我这边数据发完了,准备好关闭连接了”。client端收到FIN报文后,“就知道可以关闭连接了,但是他还是不相信网络,怕server端不知道要关闭,所以发送ACK后进入了TIME_WAIT状态,如果server端没有收到ACK则可以重传”。server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明server端已经正常关闭,那好,我client端也可以关闭连接。TCP连接就这样关闭了!

上一篇:回顾一下TCP/IP连建立断开,以及常见大量的TIME_WAIT和CLOSE_WAIT状态原因


下一篇:三次握手和四次挥手