前端镀金计划:网络传输之TCP/IP协议族

前言

作为一名前端开发人员,我们最主要的日常工作之一就是与网络打交道。众所周知,浏览器获取一个页面资源依托于HTTP协议。当我们想浏览器的地址栏中输入一段url时,浏览器会首先通过访问DNS服务器获得url域名所对应的ip地址,然后将http报文发送给ip所在的服务器。服务器接收报文后作出响应,将请求的资源发送给浏览器。

以上过程看起来非常直观且容易理解,然而这个过程只是真正的网络传输过程的一个抽象。实际上,HTTP协议得以准确无误的发送和接受数据,依托于其下面的TCP/IP协议族以及更底层(物理层)的种种协议。通过大致了解TCP/IP协议族的规则和特性,可以为我们理解HTTP协议以及处理网络传输过程中发生的种种问题提供非常大的帮助。本文就将通过一名前端的视角,带领大家了解一些TCP/IP协议族的基本知识。


正文

TCP/IP协议族是什么

我们知道,在网络的世界中,数据之间的主要在计算机之间进行传递。然而,这些计算机却由各种不同的厂商生产,型号各异,甚至运行着完全不同的操作系统。那么是什么促使这些形态各异的计算机彼此连接,相互通信呢?答案就是依靠TCP/IP协议族。

TCP/IP为什么被称为协议族呢?原因在于它不仅仅是单个协议,而是一组不同层次上的多个协议的组合。

四层模型

网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。传统上,我们将网络分为七层,即著名的OSI七层模型。这样做的好处是显而易见的,通过将一个复杂的流程,分化为一些功能独立的子进程,可以有效的降低复杂度。同时使流程更加清晰,出现问题也可以更加快速的定位。

在TCP/IP协议族中,将协议系统划分为四层,每一层负责不同的功能:

  • 数据链路层:有时也被成为链路层或者网络接口层,一般包括计算机中的网卡以及对用的驱动程序。数据链路层主要负责处理从电缆,网线等传输媒介传递过来的信号,将其转化为对应的二进制数据。

  • 网络层:网络层也被成为互联网层。这一层中主要负责管理数据分组在网络中的活动,例如数据分组传输的选路。在TCP/IP协议族中,网络层主要包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议)以及IGMP协议(Internet组管理协议)。

  • 传输层:传输层中主要负责为计算机中的应用程序提供端到端的通信。这一层的主要协议是TCP协议和UDP协议。这两个协议互不相同:TCP协议的特点是高可靠性,他负责把应用程序交给它的数据分成合适的大小的数据块,然后交给下面的网络层或者反过来将网络层传过来的数据块拆解成适合应用程序使用的数据段传递给应用程序。TCP拥有非常完备的校验,分发,重传等确保数据传输可靠的手段,因此应用层可以无需考虑这些细节。而另一方面,UDP则是更注重传输效率的协议,它为应用程序提供快速简单的端到端的数据分组传输,而不确保这些数据能否真正的道道另一端。这两种协议各有优缺点,下面的内容会再次介绍。

  • 应用层:应用层可以简单理解为中计算机应用程序,我们日常接触的HTTP,FTP等协议就是这一层的协议。

当我们日常通过浏览器发送一条http请求的时候,http报文即从我们计算机的应用层开始向下传递,每经过一层,该层对应的协议就会在上层传来数据的基础上添加一个首部,这个首部中包含了该层协议所管理的一些信息。通过这种方式将数据层层打包最后经由数据链路层交给最下面的物理层传递出去,这些数据在互联网中经过数台路由器或其他代理服务器等设备,最终交给目标计算机。目标计算机得到数据后层层向上传递,每一层会将该层对应协议负责的首部摘除后再传给上层。最后抵达应用层对应的某个应用程序。

虽然实际的过程中充满了各种其他细节和问题,不过互联网一份数据的传输过程大体就是如上面所说的这样一个过程。

上面的这个过程可以用一张图来展示:

TCP/IP四层模型

下面我们就依据一份数据在各层中传递时的形式来逐个详细分析这四层每一层的特点

数据链路层

数据链路层位于TCP/IP四层模型的最底端,位于OSI七层模型的第二层。

数据结构

在这一层中,上层传来的数据经过协议处理后的一份数据,我们称之为一帧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值