作者:老司机
链接:https://www.zhihu.com/question/38648948/answer/241629093
来源:知乎

下个月你就要结婚了,打个电话给老王。你先打开电话本,查找“老王”的电话号码:老王 -> 13987654321(DNS解析)然后你用手机拨打了13987654321(IP)你的手机连接到了移动的基站(路由器),最后运营商帮你定位到了老王的手机(MAC),老王的手机开始响铃。“嘟……”(TCP握手)-“喂?老绿啊”“哈哈,是我啊,老王(连接建立)下个月我结婚,你有空吗?”(先说事)“噢,有啊!”-“那你记一下地址啊!(再说时间地点)北京市”“诶,你慢点说啊,我记一下”(拥塞控制)-“东长安街16号”“东……16号”(ACK)-“午门太和殿”“午门(ACK“午门”)什么殿?你再说一遍,我没听清”(“太和殿”传输失败,数据包丢失)-“太和殿”(重传)“好!记下了”(传输成功)-“那回见啊!”“好嘞!”(准备断开连接)【通话已结束】(连接断开)刚才的例子实际上传递了一段信息:我下个月结婚。HTTP只是信息传递的载体,刚才说的“汉语”就是HTTP。你也可以用其他协议传递,比如“I’m getting married next month”,只要对方能理解协议,那就是同一个意思。当然,“我下个月结婚”这几个字,你也可以通过短信(UDP)或微信(其他传输协议)来发送。短信仍然需要知道对方的电话号码,所以虽然应用层协议不一样,底层还是依赖IP协议。