了解网络是如何工作的

经典的五层网络协议

物理层:作用是定义物理设备如何传输设备(即首先用网线、光纤等把两台计算机设备连接起来,可以产生0,1,0,1…的电信号);

数据链路层:通信实体间建立数据链路连接(即制定了0、1传输的一些规则);

网络层:数据在节点之间传输创建逻辑链路(即它决定了数据将会发送给谁)(实现了主机A到主机B之间的通信)。

传输层:向用户提供了可靠的端对端服务 tcp/ip协议(它会把端口细化出来)(实现了端口:80到:80之间的通信)。

应用层:为应用软件提供了很多服务(即http服务)!!!

其中,前端开发中用到最多的是应用层和传输层的相关协议。

TCP协议:

  1. TCP协议是面向对象连接的运输层协议,在数据传输前必须建立连接,数据传输之后释放连接;
  2. TCP提供可靠交付的服务,所谓可靠是指在传输过程中无重复、无丢失、无错误,但是同时会增加开销;
  3. 每一条连接都是点对点连接(一对一);
  4. 面向对象字节流,所谓字节流指的是在传输过程中流出进程的字节序列,虽然传输过程是一个一个数据报,但这只是为了方便传输,之后在目的端重新装配;
  5. TCP提供全双工通信。所谓全双工是指一端既可以是客户端也可以是服务器。

TCP建立连接时的三次握手:

TCP的三次握手

TCP建立连接为什么是三次握手,而不是两次或四次?

TCP,名为传输控制协议,是一种可靠的传输层协议,IP协议号为6。

顺便说一句,原则上任何数据传输都无法确保绝对可靠,三次握手只是确保可靠的基本需要。

举个日常例子,打电话时我们对话如下:

三次握手实质上是为了尽量避免因网络波动而引起服务器端的消耗,从而实现更好的价值。

TCP断开连接时的四次挥手:

断开时的四次挥手

1.先由客户端向服务器端发送一个FIN,请求关闭数据传输。

2.当服务器接收到客户端的FIN时,向客户端发送一个ACK,其中ack的值等于FIN+SEQ

3.然后服务器向客户端发送一个FIN,告诉客户端应用程序关闭。

4.当客户端收到服务器端的FIN是,回复一个ACK给服务器端。其中ack的值等于FIN+SEQ

为什么是四次挥手?

确保数据能够完整传输。

当被动方收到主动方的FIN报文通知时,它仅仅表示主动方没有数据再发送给被动方了。

但未必被动方所有的数据都完整的发送给了主动方,所以被动方不会马上关闭SOCKET,它可能还需要发送一些数据给主动方后。

再发送FIN报文给主动方,告诉主动方同意关闭连接,所以这里的ACK报文和FIN报文多数情况下都是分开发送的。

标签

发表评论