在没有讲到正题之前我们还是先来熟悉下网络的7层协议都是哪些,主要是干啥的吧。
7层协议分别是:
具体每一层都做些什么,在这里就不做详细解释了,下面进入正题,关于标题中的三种协议分别处于7层的那一层,起到什么样的作用。下面一一详细解释。
1. TCP(传输控制协议)。
官方话来说是一种面向连接,可靠的基于字节流的传输层协议。一目了然此协议处于网络的传输层。有关TCP的报文传输就不走详细解释,在这里我们主要看一下TCP是如何建立链接的。
毫无疑问任何网络连接都需要有信息请求和响应的。所以这就构建了TCP的三次握手原则。分别是
(1)客户端发送SYN(SEQ=x)报文给服务器。进入报文发送状态
(2)服务器收到报文SYN后回应一个SEQ = yACK = x+1的报文进入receive状态
(3)客户端收到服务器发送的报文SYN,回应一个ACK=y+1的报文进入建立状态。
以上三次握手完成,便意味着成功建立链接了,可以传输数据了。
2. HTTP(超文本传输协议)。
是一个基于请求与相应模式。无状态的应用层协议。最显著的特点是每次请求都需要服务器回送响应,在请求结束后会主动释放链接。从建立链接到关闭连接的过程称为”一次连接“。是基于TCP的链接。
3. Socket(套接字)简单的来说就是连接两边的插座。
用于描述IP地址和端口进行客户端和服务器端的链接匹配。是通信的基石是支持TCP/TP协议的网络通信的基本操作单元。包含网络通信的五中必备信息。链接使用的协议。本地主机的ip地址,本地协议端口,远地主机的ip地址,远程协议端口。
应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
Socket的三次握手:连接握手:
(1.客户端发送建立连接请求
(2.服务端确认连接请求
(3.客户端确认已经连接
以上3步完成后即可使用send recv了
断开握手:如果要正确断开必须经过4次握手。
(1.客户端发送请求停止TCP连接请求
(2.服务端收到请求后将这一个socket关闭
(3.服务端发送反向请求客户端关闭socket连接
(4.客户端确认服务端请求,关闭socket连接。
4. 总结三者之间的关联:
TCP协议要基于健全的socket,而http协议又要基于TCP协议,所以简单的来说三者是辅助与被辅助的关系。