网络协议

《圣经》中有一个通天塔的故事,大致是说,上帝为了阻止人类联合起来,就让人类说不同的语言。人类没法儿沟通,达不成“协议”,通天塔的计划就失败了。

协议

协议三要素:

  • 语法
  • 语义
  • 顺序

计算机语言也是一种协议,是人类和计算机沟通的协议,只有通过这种协议, 计算机才知道我们想让它做什么。

计算机语言需要通过编译器编译才可以让计算机理解:

源文件 -> 词法分析 -> 语法分析 -> 语义分析 -> 代码生成 -> 目标文件

计算机之间的通信需要网络协议,这才能使一大片机器互相协作、共同完成一件事。

一个下单的网络过程

  • 在浏览器中输入 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 响应报文给浏览器


新屋村24号.jpg

本文作者: chenishr

本文标题:《网络协议》

本文地址: http://blog.chenishr.com/?p=812

©版权所有,除非注明, 永在路上文章均为原创,转载请以链接形式注明出处和作者细信息。