近期直播课讲解Http专题,写篇文章做个记录,便于回顾。
做前端不可不知道Http,学习Http又往往涉及诸如“协议”、“应用层”、“传输层”、“三步握手”、“四步挥手”、“报文”等概念,同时这也是面试经常会涉及的问题。本文将对这些概念做个通俗的介绍,尽可能的让大家对网络协议有更深的理解。
数据从网络中一个终端上的应用程序传送到另外一个终端的应用程序,中间需要经历很多过程,有多方参与对数据进行层层封装、转发。我们把这个流程在逻辑上进行分成层,每一层根据本层的规章制度(协议)各司其职。TCP/IP协议族可以分为四层:应用层、传输层、网络层、数据链路层。
和其它讲四层网络模型的文章类似,我们先通过一个例子做类比。穿梭到大明,我们以大明和琉球国皇室书信往来为例(纯属虚构)。首先我们先列出几种角色。
为了权责分明,我们对上面的几种角色的职能起草几个规范文档:皇室成员写信规范、通政司业务流程规范、驿站工作流程规范、信使职能规范。其实皇室成员代表计算机上的各种应用,不同的皇室成员写信使用不同的规矩和规范。与之对应的是不同的应用使用不同的应用层协议,如HTTP协议、FTP协议、POP3协议等。通政司代表传输层协议的实现,通政司的规矩规范代表传输层协议,如TCP、UDP等。驿站的职能规范代表网络层协议,如IP协议。信使等职能规范代表数据链路层协议,如以太网协议。
这里的协议,我们可以理解为规范、规矩、规则、约定。比如作为学生想发表论文必须遵守论文的规范(包含摘要、背景、实现、文献),否则老师不认可。 想发表专利必须遵守专利的书写规范,否则专利局不收。协议不是一个软件,不要把HTTP当成一个软件或者一段程序代码。
这里面的层,我们可以理解为管理层,每个管理层有自己的职能。围绕当前职能会起草多个规章协议(比如通政司会有针对皇室信件安全但繁复的书信投送流程,也有针对皇宫普通宫女的简单书信投送流程)。这些规章协议会有对应的实施者贯彻实施。每一层只需关心自己职能范围的事即可,不用操心其它层级能否完成任务以及具体如何实施。
与网络相关的程序通过网络与其他程序通信使用的数据格式规范。比如浏览器向服务器发请求获取网页数据,此时发送的请求报文(皇室信件)就需要遵循HTTP协议(按HTTP协议的要求填写字段)。常见的应用层协议有:
解决诸如端到端可靠性(数据是否已经到达目的地)和保证数据按照正确的顺序到达这样的问题。TCP、UDP都是传输层协议。
解决在一个单一网络上传输数据包的问题。IP协议是网络层协议。
它是数据包从一个设备的网络层传输到另外一个设备的网络层遵循的规范。比如以太网协议、Wi-Fi协议。
PS:关于TCP报文格式、TCP协议三步握手、四步挥手、HTTP持久连接、HTTP管线化会在后面的文章陆续讲解。
饥人谷一直致力于培养有灵魂的编程者,打造专业有爱的国内前端技术圈子。如造梦师一般帮助近千名不甘寂寞的追梦人把编程梦变为现实,他们以饥人谷为起点,足迹遍布包括facebook、阿里巴巴、百度、网易、京东、今日头条、大众美团、饿了么、ofo在内的国内外大小企业。 了解培训课程:加微信 xiedaimala03,官网:https://jirengu.com
本文作者:饥人谷若愚老师