内容来自Introduction to TCP/IP
这篇介绍的是 TCP/IP五层模型,我们从应用层开始,经过传输层、网络层、数据链路层到物理层逐一介绍。
五层模型概览
五层模型中的每一层都有自己的职责,互相不越界,但互相依赖完成互联网中端到端的通讯。
- 应用层:是应用程序发起网络通讯的地方,比如Email客户端、浏览器,它们使用传输层发送连接请求
- 传输层:为运行在不同主机上的应用建立连接,TCP用来建立可靠连接,UDP用来建立快速连接。它使用端口来区分应用中的进程
- 网络层:负责创建在网络中传送的数据包(Packet),使用IP地址来标识数据包的源和目标
- 数据链路层:负责创建在网络中传送的帧(Frame),帧封装了数据包,使用MAC地址标识源和目标
- 物理层:对帧中的位进行编解码,作为收发器处理网络中的信号
数据的逐层封装
- 应用层:生成请求信息,比如下载一个网页
- 传输层:在上层的基础上添加TCP或UDP消息头,包括源和目标的地址、端口,如果是TCP还包括数据包的序列号。传输层生成的数据,如果是给TCP使用称为Segment,如果是给UDP使用称为Datagram
- 网络层:在上层的基础上添加的消息头包括源和目标的IP地址,这时数据称为数据包
- 数据链路层:在上层的基础上添加MAC地址信息作为消息头,这时数据称为帧,帧被送到物理层以比特的形式传送出去
五层模型涉及到的一些术语总结如下,每层都有对应的协议,数据在不同协议下有专有名称,反过来,通过专用名称也能知道目前数据处在哪一层。
应用层
这是网络结构中最上面一层,规定应用程序的数据格式,发起网络连接请求
传输层
传输层使用TCP或UDP在主机之间创建了虚拟连接,
- TCP通过错误检查、重传、确认等机制保障连接是可靠的,数据是不会丢失的
- UDP不可靠,会丢失数据,优点是速度快、开销小
- 浏览器是典型的使用TCP连接的应用,语音电话是典型 的使用UDP的应用
- TCP只能点对点的单播,UDP可以多播或广播
传输层添加的消息头中包含的不仅仅是端口号,下图列出了详细信息,可见TCP消息头要比UDP复杂的多
网络层
当从传输层收到需要发送的数据,网络层添加包含IP地址的消息头,打包成Packet发给数据链路层。但从链路层收到Packet,网络层需要检查主机是否包含目标IP地址,因为一个主机有时不止一个IP地址,所以是包含,如果是的再传给传输层。路由就是在此层处理IP地址相关工作。下图是IPv4数据包消息头格式
链路层
链路层使用Media Access Controller (MAC)生成要传送的帧(Frame),MAC控制着物理传送媒介,WIFI使用的无线传送媒介和以太网使用的有线传输媒介有着不同的要求,因此需要不同的MAC和PHY,上层应用既不会感知到也不会受到物理接口差别的影响
和传输层类似,将发送的数据添加MAC地址消息头发给物理层,当收到数据,检查目标MAC与主机是否匹配,是的话发送传输层。交换机就是在此层处理MAC地址相关的工作。以太网和WIFI使用的协议不一样,下图列出了两者详细的格式。所以同时支持有线和无线的设备至少有两个MAC地址
物理层
通过在网线或天线上发送或接受信号来传送帧中的比特
小结
从上面的介绍能看出来传输层和网络层内容比较多,其所对应的TCP和IP也比较复杂,它们是网络通讯的重点和代表,这也是为什么TCP/IP经常出现在网络编程中