网络分层自上而下分为四层:是应用层、传输层、网络层、数据链路层和物理层。越靠下的层越接近硬件各个层的具体内容如下
1.物理层
该层负责比特流在节点间的传输,即负责物理传输。该层的协议既与链路有关,也与传输介质有关。
其通俗来讲就是把计算机连接起来的物理手段。
2.数据链路层
该层控制网络层与物理层之间的通信,其主要功能是如何在不可靠的物理线路上进行数据的可靠传
递。为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据的结
构包,它不仅包括原始数据,还包括发送方和接收方的物理地址以及纠错和控制信息。其中的地址确定了
帧将发送到何处,而纠错和控制信息则确保帧无差错到达。如果在传送数据时,接收点检测到所传数据中
有差错,就要通知发送方重发这一帧。
3.网络层
该层决定如何将数据从发送方路由到接收方。网络层通过综合考虑发送优先权、网络拥塞程度、服务
质量以及可选路由的花费来决定从一个网络中的节点
A
到另一个网络中节点
B
的最佳路径。
4.传输层
该层为两台主机上的应用程序提供端到端的通信。相比之下,网络层的功能是建立主机到主机的通
信。传输层有两个传输协议:
TCP
(传输控制协议)和
UDP
(用户数据报协议)。其中,
TCP
是一个可靠的
面向连接的协议,
UDP
是不可靠的或者说无连接的协议。
5.应用层
应用程序收到传输层的数据后,接下来就要进行解读。解读必须事先规定好格式,而应用层就是规定
应用程序的数据格式的。它的主要协议有
HTTP
、
FTP
、
Telnet
、
SMTP
、
POP3
等。
SYN百科解析:同步序列编号(
Synchronize Sequence Numbers)。是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递
TCP三次握手的过程如下。
•
第一次握手:建立连接。客户端发送连接请求报文段,将
SYN
设置为
1
、
Sequence Number
(
seq
)为
x
;接下来客户端进入
SYN_SENT
状态,等待服务端的确认。
•
第二次握手:服务器收到客户端的
SYN
报文段,对
SYN
报文段进行确认,设置
Acknowledgment
Number
(
ACK
)为
x+1
(
seq+1
);同时自己还要发送
SYN
请求信息,将
SYN
设置为
1
、
seq
为
y
。服务端将
上述所有信息放到
SYN+ACK
报文段中,一并发送给客户端,此时服务端进入
SYN_RCVD
状态。
•
第三次握手:客户端收到服务端的
SYN+ACK
报文段;然后将
ACK
设置为
y+1
,向服务端发送
ACK
报
文段,这个报文段发送完毕后,客户端和服务端都进入
ESTABLISHED
(
TCP
连接成功)状态,完成
TCP
的
三次握手。
当客户端和服务端通过三次握手建立了
TCP
连接以后,当数据传送完毕,断开连接时就需要进行
TCP
的
四次挥手。
其四次挥手如下所示。
•
第一次挥手:客户端设置
seq
和
ACK
,向服务端发送一个
FIN
报文段。此时,客户端进入
FIN_WAIT_1
状态,表示客户端没有数据要发送给服务端了。
•
第二次挥手:服务端收到了客户端发送的
FIN
报文段,向客户端回了一个
ACK
报文段。
•
第三次挥手:服务端向客户端发送
FIN
报文段,请求关闭连接,同时服务端进入
LAST_ACK
状态。
•
第四次挥手:客户端收到服务端发送的
FIN
报文段,向服务端发送
ACK
报文段,然后客户端进入
TIME_WAIT
状态。服务端收到客户端的
ACK
报文段以后,就关闭连接。此时,客户端等待
2MSL
(最大报
文段生存时间)后依然没有收到回复,则说明服务端已正常关闭,这样客户端也可以关闭连接了。
如果有大量的连接,每次在连接、关闭时都要经历三次握手、四次挥手,这很显然会造成性能低下。
因此,
HTTP
有一种叫作
keepalive connections
的机制,它可以在传输数据后仍然保持连接,当客户端需要再
次获取数据时,直接使用刚刚空闲下来的连接而无须再次握手如图所示