上一篇文章简单介绍了现在的计算机网络模型和每层的作用,对计算机网络有了一个初步的认识。
在计算机网络模型的各个层次中,我们最关心的莫过于传输层和网络层了;尤其是传输层,作为应用层的下层,开发同学在工作中也接触的比较多。比如拥有高性能网络通信能力的netty、dubbo等中间件,都涉及了传输层尤其是TCP协议的很多细节和上层的协议优化。
作为与开发同学关系最紧密的传输层,掌握其相关的知识是非常必要的。
传输层简介
传输层位于应用层的下面一层,它提供了主机间的进程(应用)的通信能力;它屏蔽了底层网络路由、数据传输的实现细节,让上层应用更加专注于自身业务;
而对应用层的应用来说,在与其它主机上应用进行网络通信时仿佛就是在与另外一个进程间通信。
另外需要指出的是,传输层并不是真正进行数据传输的地方(真正进行数据传输的是物理层),而是通过数据传输协议(TCP、UDP)提供数据传输能力到应用层。
TCP协议
TCP协议全名叫做Transmission Control Protocol,即传输控制协议。
一句话总结TCP协议就是:
TCP(Transmission Control Protocol)协议是面向连接、面向字节流的,提供可靠交付的数据传输协议。
三个关键词:
- 面向连接
- 面向字节流
- 可靠交付
下面我将会围绕这三个关键词展开讨论。不过在讨论之前,我们先来回顾一下TCP报文格式:
面向连接
TCP协议是面向连接的协议,这意味着它拥有建立连接、释放连接的过程。
发送数据之前,那么客户端和服务端就要先建立连接;数据发送完之后,要及时释放连接。
建立连接:三次握手
先来看建立连接流程图: