【网络协议】笔记一 | 为什么要学习网络协议?
原文地址:为什么要学习网络协议?
知识点
- 协议三要素
- 常用的网络协议
- 网络数据包结构
- 一次玄奘西行
为什么要学习网络协议?
只有通过网络协议,才能使一大片机器互相协作、共同完成一件事。
协议三要素
例如编写代码打印“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 地址呢?
- 局域网内IP地址是动态分配的,假如我是192.168.2.100,如果我下线了,可能IP就分配给了另一台电脑。IP和设备并不总是对应的,这对通信就产生了问题,但是MAC地址不同,MAC地址和设备是一一对应且全球唯一的。所以局域网使用MAC地址通信没有问题。
- 历史遗留问题:早期的以太网只有交换机,没有路由器,以太网内通过MAC地址通信。后来才有了互联网,为了兼容原本的模式,采用了IP+MAC地址通信的方式。为啥不推到了重来呢?看看IPv6的处境你就知道了。所以是先有MAC地址后有的IP,IP的提出主要还是因为MAC地址本身的缺陷,这个问题换成有了MAC为何还要IP地址也很有意思。
- 第一:MAC地址本身的缺陷:因为MAC地址是硬件提供商写在网卡中的,MAC地址虽然唯一但是不能表明用户在整个互联网中的位置,除非维护一个超级大MAC地址对应表,那寻址效率肯定爆炸。但是IP地址解决了这个问题,因为IP地址是网络提供商给你的,所以你在哪里整个网络都是知道的。
第二:安全问题:获取MAC地址是通过ARP协议来完成的,如果只用MAC地址通信,那么广播风暴是个难题。 - 猜想:如果哪天每人一个固定的IPv6地址,那么MAC地址+IPv4的模式是不是可以被替换了?
- 其实手机通过数据上网就是一个通过类似mac寻址的一个网络。在移动网络中是允许你移动的,这是由于基站会记录你的位置信息。并且核心网与公网的通信是通过ip来实现的,而在手机和基站间的通信是通过类似mac的一个唯一码实现的。并且移动网络整体建设成本比互联网的成本高很多,消费也高很多。
为什么mac地址是全世界唯一的?
网卡MAC码是由全球惟一的一个固定组织来分配的,未经认证和授权的厂家无权生产网卡。
每块网卡都有一个固定的卡号,并且任何正规厂家生产的网卡上都直接标明了卡号,一般为一组12位的16进制数。其中前6位代表网卡的生产厂商。后面的位数是设备号。当然在操作系统级别改Mac地址又是一种说法。
知识复盘
为什么要学习网络协议?
能使一大片机器互相协作、共同完成一件事
协议三要素是什么?
语法、语义、顺序
一个网络请求包都包括啥?
是什么、啥样式、咋处理、交给谁、先去哪
如何形象描述一次网络请求?
玄奘西行
有IP地址为什么还需要MAC地址?
- IP是个人地址,MAC是个人身份证
- 为什么mac地址是全世界唯一的
- 网卡MAC码是由全球惟一的一个固定组织来分配的
小结
- 机器之间只有达成协议才能通信协作
- 一次网络请求如同一次玄奘西行,长途跋涉
————————————————————————————————————————
以上笔记学习于“极客时间”APP专栏,部分内容选自专栏评论。
上一篇: 动态规划初步笔记
下一篇: Tkinter之pack所有属性详解