1. OSI七层网络模型 #

OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 首先来看看OSI的七层模型:

sevenlayer

2.TCP/IP 参考模型 #

TCP/IP是传输控制协议/网络互联协议的简称。早期的TCP/IP模型是一个四层结构,从下往上依次是网络接口层、互联网层、传输层和应用层。后来在使用过程中,借鉴OSI七层参考模型,将网络接口层划分为了物理层和数据链路层,形成五层结构。

fivelayer

3. 传输层 #

传输层是面向连接的、可靠的的进程到进程通信的协议。TCP提供全双工服务,即数据可在同一时间双向传播。TCP将若干个字节构成一个分组,此分组称为报文段(Segment)。提供了一种端到端的连接。 传输层的协议主要是TCP ,TCP(Transimision Control Protocal)是一种可靠的、面向连接的协议,传输效率低。

4. TCP格式 #

tcpframe

5. 三次握手 #

TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号 并交换 TCP窗口大小信息。 handshake2

为了方便描述我们将主动发起请求的172.16.17.94:8080 主机称为客户端,将返回数据的主机172.16.17.94:8080称为服务器,以下也是。

7. 四次挥手 #

goodbye2

注意:在握手和挥手时确认号应该是对方序列号加1,传输数据时则是对方序列号加上对方携带应用层数据的长度。

8. 问题 #

  1. 为什么需要三次握手? 确保双方收发都是正常的
  2. 为什么需要四次挥手? 双方数据发送完毕,都认为可以断开
  3. 为什么需要等待? A向B发的FIN可能丢失
  4. 为什么握手是三次,但挥手却是四次? 当Server端收到FIN报文时,很可能并不会立即关闭SOCKET

9.同学们的文章 #