应用层协议可分为3类:
(1)依赖于TCP的应用协议,如远程终端协议Telnet,文件传输型的电子邮件协议SMTP,文件传输协议FTP,超文本传输协议HTTP,外部网关协议BGP等。
(2)依赖于UDP的协议,例如单纯文件传输协议TFTP,简单网络管理协议SNMP,域名系统DNS,内部网关协议RIP,动态主机配置协议DHCP和引导程序协议BOOTP等。
(3)依赖于TCP和UDP的协议,如通信用管理信息协议CMOT。当然,一些没有标准化的建立在TCP/ IP协议簇之上的用户应用程序(或专用程序)也属于应用层。
目的主机收到数据包后,如何经过各层协议栈最后到达应用程序呢?整个过程如下图所示。
以太网驱动程序(网卡)首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(payload,指除去协议首部之外实际传输的数据)是IP、ARP还是RARP协议的数据报,然后交给相应的协议处理。假如是IP数据报,IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP还是IGMP,然后交给相应的协议处理。假如是TCP段或UDP段,TCP或UDP协议再根据TCP首部或UDP首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。什么设备具有mac地址IP地址是标识网络中不同主机的地址,而端口号就是同一台主机上标识不同进程的地址,IP地址和端口号合起来标识网络中唯一的进程。
注意,虽然IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP和RARP属于链路层,IP属于网络层。虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报,但是从功能上划分,ICMP、IGMP与IP同属于网络层,TCP和UDP属于传输层。
整个数据封装的格式如下图所示:
我们还是用邮局的例来说明:
1)用户:即电脑主机,所在地是某乡镇
2)应用层用户数据:信的内容(使用http协议来写)
3)传输层收信职员:用户需要投递信件,写好目的地址是北京,邮编门牌号,然后交给邮局收信职员(传输层:需要可靠的传输:tcp封装信封投递到邮局,目的地址是ip,门牌号:mac地址。网卡的’MAC‘地址(每一块网卡的MAC地址都是不一样的,这是网卡的制造商写死在网卡的芯片中的))
4)网络层邮局排序工人:邮政有多个层级,比如乡级邮政所不可能直接送到北京,但是他知道先送到哪,比如送往县城,如果在本埠,直接发给送信员,如外埠,需要送到县邮政局或者直接到省级,然后送到北京。每个节点都是路由。(网络层,设备路由器,路由到目标地址(ip)中间可能经过很多路由器)
5)链路层乡邮局包装信封人员:包装信封,比如送往县邮政局的是一摞,或者直接送往省局是一摞,每一摞都写明了具体目的地址和本地邮局地址(链路层:需要封装目的地址和源地址)
6)物理层运输部门:把信件送到县邮政局(物理层)
7)链路层县邮局包装信封人员:经县邮局师傅拆装确认,没错,就是我们这里,然后师傅把后来又加的那层信封拆掉了。
8)网络层县邮局排序工人:查了这邮件无法直接送达北京,得先邮寄到省级邮政,查明了地址(路由),然后交给包装信封人员。
9)链路层县邮局包装信封人员:包装信封,送往运输部门。
10)物理层运输部门:把信件送到省邮政局(物理层)
重复上面的步骤,直到送到北京某地邮政局。
11)传输层送信职员:根据信封写的地址和门牌号,送到用户手里
12)应用层:用户收到邮件,拆开信封,根据http协议读取内容。
假设用户A,住在某个小区里面(局域网),如果想给该小区用户B写信件,你可以直接跑他家,即局域网是相互认识的。如果你不知道用户B的门牌号(mac地址),没问题,在小区门口有个看门的李大爷,他知道小区各个业主的门牌,李大爷就是你的网关。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-59730-4.html
是美国海军现役主力舰艇之一