欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【网络协议】笔记一 | 为什么要学习网络协议?

程序员文章站 2024-02-23 21:53:04
...

原文地址:为什么要学习网络协议?

知识点

  • 协议三要素
  • 常用的网络协议
  • 网络数据包结构
  • 一次玄奘西行

为什么要学习网络协议?

只有通过网络协议,才能使一大片机器互相协作、共同完成一件事。

协议三要素

例如编写代码打印“hello world”也是人类和计算机沟通的协议,需要经过编译成机器可识别文件执行 。
不同的计算机之间必须使用相同的网络协议才能进行通信。
【网络协议】笔记一 | 为什么要学习网络协议?
语法:“如何讲”,就是这一段内容要符合一定的规则和格式。例如,括号要成对,结束要使用分号等。
语义:“讲什么”,就是这一段内容要代表某种意义。例如数字减去数字是有意义的,数字减去文本一般来说就没有意义。
顺序:“讲啥先”,就是先干啥,后干啥。例如,可以先加上某个数值,然后再减去某个数值。

比如浏览器上展示网页内容:
它之所以能够显示缤纷多彩的页面,是因为它收到了一段来自 HTTP协议的“东西”,例如网易考拉,格式如下:

HTTP/1.1 200 OK
Date: Tue, 27 Mar 2018 16:50:26 GMT
Content-Type: text/html;charset=UTF-8
Content-Language: zh-CN

<!DOCTYPE html>
<html>
<head>
<base href="https://pages.kaola.com/" />
<meta charset="utf-8"/> <title> 网易考拉 3 周年主会场 </title>

首先,符合语法。
只有按照上面那个格式来,浏览器才认。例如,上来是状态,然后是首部,然后是内容。
然后,符合语义。
就是要按照约定的意思来。例如,状态 200,表述的意思是网页成功返回。如果不成功,就是我们常见的“404”。
最后,符合顺序。
点击浏览器,就是发送出一个 HTTP 请求,然后才有上面那一串 HTTP 返回的东西。
浏览器显然按照协议商定好的做了,最后一个五彩缤纷的页面就出现在你面前了。

常用的网络协议

DNS协议、HTTP协议、HTTPS协议、TCP/IP协议、IP协议、DHCP协议、ARP协议*等*
比如网上的一次点击购物的请求包含:

【网络协议】笔记一 | 为什么要学习网络协议?

图上5层,从下往上一层层封装:
第一层是什么
第二层啥样式

  • DNS、HTTP、HTTPS 所在的层我们称为应用层。
  • 经过应用层封装后,浏览器会将应用层的包交给下一层去完成,通过socket 编程来实现

第三层咋处理

  • 传输层有两种协议,一种是无连接的协议UDP(发短信),一种是面向连接的协议TCP(打电话)
  • TCP 协议里面会有两个端口,一个是浏览器监听的端口,一个是电商的服务器监听的端口。操作系统往往通过端口来判断,它得到的包应该给哪个进程。
    传输层封装完毕后,浏览器会将包交给操作系统的网络层

第四层交给谁

  • 网络层的协议是 IP 协议。
  • IP 协议里面会有源 IP 地址,即浏览器所在机器的 IP 地址和目标 IP 地址,也即电商网站所在服务器的 IP 地址。

第五层先去哪

  • 操作系统根据IP这个门牌号判断是内地人还是外地人的,去外地就要经过网关。
  • 而操作系统启动的时候,就会被 DHCP 协议配置 IP 地址,以及默认的网关的 IP 地址 。
  • 操作系统发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理MAC地址。
  • 于是操作系统将 IP 包交给了下一层,也就是MAC 层。
  • 由于这个包里面是有 MAC 地址的,因而它能够到达网关。

网关往往是一个路由器,到某个 IP 地址应该怎么走,这个叫作路由表

玄奘西行

  • 一次购物请求的整个过程如同玄奘西行,不断经过国家的城关(路由器);
    每个城关连着两个国家(局域网),一旦跨越城关,就需要拿出通关文牒(数据包中包含源IP地址)并询问接下来该如何走,每个城关都知道下一个城关怎么走;
  • 当城关通过通关文牒知道目的地(目标IP)在自己邻接的国家中,就好发起通告(广播)寻找,然后得到回复(目标MAC地址),然后就可以到达天竺(目标服务器)了;
  • 然后天竺确认你确实是找天竺的(在城关寻得的MAC地址对得上),再确认你寻的真经是在天竺的(IP地址对得上),最后让人寻真经给你(IP 头里会写上一层封装的是 TCP 协议,然后将其交给传输层,即TCP层);
  • 西行路上千难万险,因此到了得报个平安(仅仅是 TCP 层的一个说明,原路返回,如果过段时间还没回复,不断重发,知道平安到达的回复,tcp的三次握手)。

城关:
【网络协议】笔记一 | 为什么要学习网络协议?
【网络协议】笔记一 | 为什么要学习网络协议?
流程:
【网络协议】笔记一 | 为什么要学习网络协议?

有IP地址为什么还需要MAC地址?

IP地址可以变动,而MAC地址是唯一的。
IP是个人地址,MAC是个人身份证,地址可以变更,但身份证不行。
到达了个人地址还需要确认身份证,才能证明找的是本人。

当网络包到达一个城关的时候,可以通过路由表得到下一个城关的 IP 地址,直接通过 IP 地址找就可以了,为什么还要通过本地的 MAC 地址呢?

  1. 局域网内IP地址是动态分配的,假如我是192.168.2.100,如果我下线了,可能IP就分配给了另一台电脑。IP和设备并不总是对应的,这对通信就产生了问题,但是MAC地址不同,MAC地址和设备是一一对应且全球唯一的。所以局域网使用MAC地址通信没有问题。
  2. 历史遗留问题:早期的以太网只有交换机,没有路由器,以太网内通过MAC地址通信。后来才有了互联网,为了兼容原本的模式,采用了IP+MAC地址通信的方式。为啥不推到了重来呢?看看IPv6的处境你就知道了。所以是先有MAC地址后有的IP,IP的提出主要还是因为MAC地址本身的缺陷,这个问题换成有了MAC为何还要IP地址也很有意思。
  3. 第一:MAC地址本身的缺陷:因为MAC地址是硬件提供商写在网卡中的,MAC地址虽然唯一但是不能表明用户在整个互联网中的位置,除非维护一个超级大MAC地址对应表,那寻址效率肯定爆炸。但是IP地址解决了这个问题,因为IP地址是网络提供商给你的,所以你在哪里整个网络都是知道的。
    第二:安全问题:获取MAC地址是通过ARP协议来完成的,如果只用MAC地址通信,那么广播风暴是个难题。
  4. 猜想:如果哪天每人一个固定的IPv6地址,那么MAC地址+IPv4的模式是不是可以被替换了?
  5. 其实手机通过数据上网就是一个通过类似mac寻址的一个网络。在移动网络中是允许你移动的,这是由于基站会记录你的位置信息。并且核心网与公网的通信是通过ip来实现的,而在手机和基站间的通信是通过类似mac的一个唯一码实现的。并且移动网络整体建设成本比互联网的成本高很多,消费也高很多。

为什么mac地址是全世界唯一的?

网卡MAC码是由全球惟一的一个固定组织来分配的,未经认证和授权的厂家无权生产网卡
每块网卡都有一个固定的卡号,并且任何正规厂家生产的网卡上都直接标明了卡号,一般为一组12位的16进制数。其中前6位代表网卡的生产厂商。后面的位数是设备号。当然在操作系统级别改Mac地址又是一种说法。

知识复盘

为什么要学习网络协议?

能使一大片机器互相协作、共同完成一件事

协议三要素是什么?

语法、语义、顺序

一个网络请求包都包括啥?

是什么、啥样式、咋处理、交给谁、先去哪

如何形象描述一次网络请求?

玄奘西行

有IP地址为什么还需要MAC地址?

  • IP是个人地址,MAC是个人身份证
  • 为什么mac地址是全世界唯一的
  • 网卡MAC码是由全球惟一的一个固定组织来分配的

小结

  • 机器之间只有达成协议才能通信协作
  • 一次网络请求如同一次玄奘西行,长途跋涉

————————————————————————————————————————
以上笔记学习于“极客时间”APP专栏,部分内容选自专栏评论。
【网络协议】笔记一 | 为什么要学习网络协议?