《圣经》中有一个通天塔的故事,大致是说,上帝为了阻止人类联合起来,就让人类说不同的语言。人类没法儿沟通,达不成“协议”,通天塔的计划就失败了。
协议
协议三要素:
- 语法
- 语义
- 顺序
计算机语言也是一种协议,是人类和计算机沟通的协议,只有通过这种协议, 计算机才知道我们想让它做什么。
计算机语言需要通过编译器编译才可以让计算机理解:
源文件 -> 词法分析 -> 语法分析 -> 语义分析 -> 代码生成 -> 目标文件
计算机之间的通信需要网络协议,这才能使一大片机器互相协作、共同完成一件事。
一个下单的网络过程
- 在浏览器中输入 URL
-
DNS/HTTPDNS 查询域名对应的 IP 地址
-
封装HTTP请求报文
-
将应用层的 HTTP 请求包交给下一层去完成,通过 socket 编程来实现
-
传输层使用 TCP 协议来传输应用层的 HTTP 请求包,加上源端口和目的端口
-
网络层的 IP 协议加上源IP地址和目标IP地址
-
通过 ARP 协议获取到网关的 MAC 地址
-
在 MAC 层将 MAC 头部信息补充完整,从网卡将数据包发送出去
-
网关根据 IP 头部的目标 IP 地址查找路由表,选择对应的端口将数据包转发出去
-
路由表是由路由协议OSPF和BGP动态维护的
-
不断的通过路由转发,最终到达目标网络
-
再通过 ARP 协议获取到目标主机的 MAC 地址,将数据包发个目标主机
-
目标主机发现 MAC 地址对上了,取下 MAC 头来,发送给操作系统的网络层
-
发现 IP 也对上了,就取下 IP 头,交给传输层 TCP 协议
-
在传输层 TCP 协议,对于收到的每个包,都会有一个回复的包说明收到了
-
通过TCP 头的目标端口号,可以找到电商网站的进程
-
进程处理完之后,就发送一个 HTTP 响应报文给浏览器
本文作者: chenishr
本文标题:《网络协议》
本文地址: http://blog.chenishr.com/?p=812
©版权所有,除非注明, 永在路上文章均为原创,转载请以链接形式注明出处和作者细信息。