用实际生活中的事物来比喻TCP/IP不同层的工作原理。
应用层(FTP协议):
首先我们说说应用层,应用层就像在特定城市特定大厦特定房间内的某一个用户,应用层之间的通讯就像两个不同用户之间发送的信,这个信是点对点的,从一个用户(某一主机内特定应用程序)到另外一个特定用户(另一主机内特定应用程序)。一个主机(大厦)内可能有很多应用程序(客户),我们如何区分它们呢,实际生活中我们用房间号,在电脑内部区分不同应用程序我们用端口号。
传输层(TCP):
用户写好了信,需要给信套上信封,并且写好发件人所在大厦,和收件人所在大厦,实际生活中的大厦完全可以类比为我们的计算机和服务器。传输层(TCP)就是在两个不同主机之间传输信息的协议。
网络层(IP):
邮件准备好了,他首先会被送到本城市的快递公司,并且被打包,包裹上会写着源是重庆快递公司,目的是沈阳快递公司,但是重庆快递公司发现它不能直接发货到沈阳,需要通过北京快递公司进行中转。所以虽然目的是沈阳,但是他首先把这个包裹发给了北京。某个城市的快递公司就像IP协议,要抵达目的IP,需要查询路由表,如果发现目的地址不是直连就需要找下一跳。通过了解快递公司的工作,我们了解到IP协议是逐跳工作的。每一跳(路由器)根据目的IP地址查询下一跳,并且最终转发到目的地。
链路层(以太网):
重庆快递公司已经知道他需要把包裹发给北京快递公司了,现在他就把包裹送到重庆火车站,搭上去往北京的火车,然后在北京火车站卸货。然后送到北京快递公司,北京快递公司再判断下一跳为沈阳快递公司,并且选择适当的传输方式,例如:汽车,最后通过这种传输方式送到目的地沈阳快递公司。链路层协议就像包裹的运输方式,我们可以选择以太网(火车),也可以选择令牌环(汽车)。并且链路层协议是逐介质的,从一个网卡(重庆火车站)到另外一个网卡(北京火车站)。
所以你会发现一个数据包从源到目的,IP地址总是不变的(源是重庆快递公司,目的是沈阳快递公司),但是链路层协议却在不断变化,第一跳源是重庆火车站,目的是北京火车站,第二跳源是北京汽车站,目的是沈阳汽车站。