孤独的人生是可悲的,于是家庭诞生了;再大的家庭也就那么点人脉,于是社会诞生了:在庞大复杂的社会体系里,个人才能体现出多方面的价值。计算机也是一样,20世纪80年代为了实现资源共享,人们决定将单体计算机组建成网络;到了20世纪90年代,人们不再满足于这样的局域网,决定将网络联网组建成网络的网络,于是出现了因特网(Internet)。
由于局域网的技术纷繁多样,除了现在占主流的以太网之外,历史上还有各种其他网络技术,相应地,硬件地址也不一定是MAC地址了。于是便产生了路由器,由路由器来负责连接这些网络。这就意味着,每个局域网内部的信息传输有自己的链路层地址系统,且仅在该局域网内部有效,跨局域网的信息传输就需要制定一个更高层次的地址规范,来统一标记因特网中的个体设备,于是,网络的地址就出现了“分层”的需求,需要分层的,还有相应的协议处理机制。
我们常用的TCP/IP协议栈定义了一个五层架构:应用层、传输层、网络层、链路层和物理层,如图1-6所示。其中协议部分只关注上面的四层。
图1-6 TCP/IP协议栈定义的五层架构
说明
开放系统互连(Open System Interconnection,OSI)参考模型定义了七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。其中会话层、表示层和应用层在TCP/IP协议栈中合并为应用层。
物理层指网线、光纤等物理传输媒介。
链路层主要包括操作系统中的设备驱动程序,包括网卡驱动,常与物理层传输媒介打交道。我们前面提到的以太帧和以太网交换机转发即属于本层范畴,而MAC地址就是链路层的硬件地址信息。
网络层主要处理IP(Internet Protocol)报文在网络之间的选路,这一层协议包括IP协议、Ping程序用到的ICMP协议等。
传输层主要为两台主机的应用程序通信提供传输通道的建立,常见的有传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Datagram Protocol,UDP)两种。TCP协议提供可靠的传输保障机制,而UDP协议则不保证可靠性,传输可靠性由应用程序负责保证。
应用层负责特定应用程序的细节处理,比如录像回放的点播功能、Web服务等。由于同一台机器会运行多个网络应用程序,为了确保不同的应用程序正确的收发和处理属于自己的报文,TCP 和UDP提供了端口号,在TCP和UDP头部分,有“源端口”和“目的端口”字段。不同的应用程序对应不同的端口号,例如Web服务通常对应80端口,RTSP点播服务对应554端口等。IP地址和端口号合在一起称为“套接字(Socket)”,常用的有TCP Socket和UDP Socket。提供相应服务功能的主机会创建相应的Socket,例如提供Web服务的主机会创建TCP Socket 80:IP地址+TCP 80端口;提供RTSP点播服务的主机会创建UDP Socket 554:IP地址+UDP 554端口——RTSP也支持TCP Socket。
看到这里,老U疑虑重重,为什么弄得这么复杂?好吧,我们来看个形象的比喻。A、B两家公司是分别位于杭州和旧金山的知名安防公司,他们准备进行战略合作,两家公司的CEO需要互通公函。在这个信息爆炸瞬息万变的年代,CEO是绝不可能亲自走路去送公函的,何况快递业现在这么发达。公函需从杭州的A公司总部到达旧金山的B公司总部,什么交通工具可以一步到达呢?目前没有,这中间需要经过杭州快递员开车上门取货,通过货车送到杭州萧山机场,然后通过飞机航空运送到旧金山国际机场,然后再通过货车送到B公司。至于怎么协调两地货车和飞机以保证公函的送达,那是快递公司的事情。由于公函的重要性,公司的行政部门必须跟踪确认公函的及时到达,若中间出现丢失,他们必须重新发函并与快递公司进行交涉。
过程非常完美,对不对?其实整个模型与TCP/IP的五层架构非常类似:公路和空中航线是物理层;两地的货车和飞机是链路层,货车只知道且负责本地区域的陆路传递,飞机只知道且负责航空传递,每个角色均不知道也不必知道其他角色范畴内的传输机制;快递公司负责协调公函从A公司送达B公司,这是网络层;两家公司的行政部门要确保公函的及时到达,这是传输层;两家公司的CEO只管签署公函即可,这就是应用层。协议其实就是现实社会的模型抽象,很有意思!
让我们回到真实的TCP/IP世界,简单浏览一下这里的运作机制。
当我们在NVR的人机界面上点播了一路前端IPC的实况视频,IPC的视频流处理程序(应用层)对视频进行压缩编码,然后交付TCP发送程序;TCP发送程序(传输层)根据实际传输状况控制报文段的大小和重传的必要性,进行TCP封装后交付给IP包发送程序;IP包发送程序(网络层)收到TCP报文后再封装成IP包,通过查找路由表找到网关的IP地址和出接口,然后交付给以太帧发送程序;以太帧发送程序(链路层)通过查找ARP表(ARP即Address Resolution Protocol,地址解析协议)后完成对IP包的以太帧封装,从正确的网口发送出去。而NVR从链路层收到这个以太帧,会剥掉以太帧封装,再通过IP包接收程序剥掉IP封装,最后通过TCP接收程序剥掉TCP封装,还原出最初的视频包交给视频解码程序处理。
这个过程中,TCP协议对发送报文段的尺寸控制和重传控制是为了保证业务数据的完整性,而IP包处理程序的目标是实现网络之间的信息选路和传递,以太帧处理程序的作用是为了实现局域网内的报文传输。任何一层的协议处理机制都是必不可少的。
家园网友互动
Q:如如 发表于2015-8-13 18:05:39
我是监控“小白”,问个问题,路由协议属于哪一层协议?
A:网语者 发表于2015-8-13 19:27:49
路由协议本身属于应用层。