趣谈网络协议
刘超
网易研究院云计算技术部首席架构师
立即订阅
39583 人已学习
课程目录
已完结 51 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 想成为技术牛人?先搞定网络协议!
免费
第一模块 通信协议综述 (4讲)
第1讲 | 为什么要学习网络协议?
第2讲 | 网络分层的真实含义是什么?
第3讲 | ifconfig:最熟悉又陌生的命令行
第4讲 | DHCP与PXE:IP是怎么来的,又是怎么没的?
第二模块 底层网络知识详解:从二层到三层 (5讲)
第5讲 | 从物理层到MAC层:如何在宿舍里自己组网玩联机游戏?
第6讲 | 交换机与VLAN:办公室太复杂,我要回学校
第7讲 | ICMP与ping:投石问路的侦察兵
第8讲 | 世界这么大,我想出网关:欧洲十国游与玄奘西行
第9讲 | 路由协议:西出网关无故人,敢问路在何方
第二模块 底层网络知识详解:最重要的传输层 (4讲)
第10讲 | UDP协议:因性善而简单,难免碰到“城会玩”
第11讲 | TCP协议(上):因性恶而复杂,先恶后善反轻松
第12讲 | TCP协议(下):西行必定多妖孽,恒心智慧消磨难
第13讲 | 套接字Socket:Talk is cheap, show me the code
第二模块 底层网络知识详解:最常用的应用层 (4讲)
第14讲 | HTTP协议:看个新闻原来这么麻烦
第15讲 | HTTPS协议:点外卖的过程原来这么复杂
第16讲 | 流媒体协议:如何在直播里看到美女帅哥?
第17讲 | P2P协议:我下小电影,99%急死你
第二模块 底层网络知识详解:陌生的数据中心 (6讲)
第18讲 | DNS协议:网络世界的地址簿
第19讲 | HTTPDNS:网络世界的地址簿也会指错路
第20讲 | CDN:你去小卖部取过快递么?
第21讲 | 数据中心:我是开发商,自己拿地盖别墅
第22讲 | VPN:朝中有人好做官
第23讲 | 移动网络:去巴塞罗那,手机也上不了脸书
第三模块 热门技术中的应用:云计算中的网络 (5讲)
第24讲 | 云中网络:自己拿地成本高,购买公寓更灵活
第25讲 | 软件定义网络:共享基础设施的小区物业管理办法
第26讲 | 云中的网络安全:虽然不是土豪,也需要基本安全和保障
第27讲 | 云中的网络QoS:邻居疯狂下电影,我该怎么办?
第28讲 | 云中网络的隔离GRE、VXLAN:虽然住一个小区,也要保护隐私
第三模块 热门技术中的应用:容器技术中的网络 (3讲)
第29讲 | 容器网络:来去自由的日子,不买公寓去合租
第30讲 | 容器网络之Flannel:每人一亩三分地
第31讲 | 容器网络之Calico:为高效说出善意的谎言
第三模块 热门技术中的应用:微服务相关协议 (5讲)
第32讲 | RPC协议综述:远在天边,近在眼前
第33讲 | 基于XML的SOAP协议:不要说NBA,请说美国职业篮球联赛
第34讲 | 基于JSON的RESTful接口协议:我不关心过程,请给我结果
第35讲 | 二进制类RPC协议:还是叫NBA吧,总说全称多费劲
第36讲 | 跨语言类RPC协议:交流之前,双方先来个专业术语表
第四模块 网络协议知识串讲 (4讲)
第37讲 | 知识串讲:用双十一的故事串起碎片的网络协议(上)
第38讲 | 知识串讲:用双十一的故事串起碎片的网络协议(中)
第39讲 | 知识串讲:用双十一的故事串起碎片的网络协议(下)
第40讲 | 搭建一个网络实验环境:授人以鱼不如授人以渔
答疑与加餐 (9讲)
协议专栏特别福利 | 答疑解惑第一期
协议专栏特别福利 | 答疑解惑第二期
协议专栏特别福利 | 答疑解惑第三期
协议专栏特别福利 | 答疑解惑第四期
协议专栏特别福利 | 答疑解惑第五期
加餐1 | 测一测:这些网络协议你都掌握了吗?
加餐2 | 创作故事:我是如何创作“趣谈网络协议”专栏的?
加餐3 | “趣谈网络协议”专栏食用指南
第2季回归 | 这次我们来“趣谈Linux操作系统”
结束语 (1讲)
结束语 | 放弃完美主义,执行力就是限时限量认真完成
趣谈网络协议
登录|注册

第1讲 | 为什么要学习网络协议?

刘超 2018-05-18
《圣经》中有一个通天塔的故事,大致是说,上帝为了阻止人类联合起来,就让人类说不同的语言。人类没法儿沟通,达不成“协议”,通天塔的计划就失败了。
但是千年以后,有一种叫“程序猿”的物种,敲着一种这个群体通用的语言,连接着全世界所有的人,打造这互联网世界的通天塔。如今的世界,正是因为互联网,才连接在一起。
当 "Hello World!" 从显示器打印出来的时候,还记得你激动的心情吗?
public class HelloWorld {
public static void main(String[] args){
System.out.println("Hello World!");
}
}
如果你是程序员,一定看得懂上面这一段文字。这是每一个程序员向计算机世界说“你好,世界”的方式。但是,你不一定知道,这段文字也是一种协议,是人类和计算机沟通的协议,只有通过这种协议,计算机才知道我们想让它做什么。

协议三要素

当然,这种协议还是更接近人类语言,机器不能直接读懂,需要进行翻译,翻译的工作教给编译器,也就是程序员常说的 compile。这个过程比较复杂,其中的编译原理非常复杂,我在这里不进行详述。
但是可以看得出,计算机语言作为程序员控制一台计算机工作的协议,具备了协议的三要素。
语法,就是这一段内容要符合一定的规则和格式。例如,括号要成对,结束要使用分号等。
语义,就是这一段内容要代表某种意义。例如数字减去数字是有意义的,数字减去文本一般来说就没有意义。
顺序,就是先干啥,后干啥。例如,可以先加上某个数值,然后再减去某个数值。
会了计算机语言,你就能够教给一台计算机完成你的工作了。恭喜你,入门了!
但是,要想打造互联网世界的通天塔,只教给一台机器做什么是不够的,你需要学会教给一大片机器做什么。这就需要网络协议。只有通过网络协议,才能使一大片机器互相协作、共同完成一件事。
这个时候,你可能会问,网络协议长啥样,这么神奇,能干成啥事?我先拿一个简单的例子,让你尝尝鲜,然后再讲一个大事。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《趣谈网络协议》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(299)

  • 芒果
    个人发表一下对这个问题的看法,抛砖引玉,希望老师指正: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的模式是不是可以被替换了?
    2018-05-18
    3
    636
  • 陶家顺
    1. mac地址是唯一的,为什么可以修改?想想身份证,身份证号是唯一的,不能改变的,但是可以造价。mac地址全球唯一,它是固化在网卡里的。网卡毕竟是个硬件,需要软件支持,既操作系统识别。重点来了,操作系统识别出来的mac地址是可以更改的,它只不过是一个字符串。我们常说的修改mac指的是修改电脑中记录的既注册表中的记录。
    2. 有了mac地址为什么还要有ip地址。举个例子,身份证号是你的唯一标识,不会重复,一落户就有(网卡一出厂就有mac)。现在我要和你通信(写信给你),地址用你的姓名+身份证,信能送到你手上吗?明显不能!身份证号前六位能定位你出生的县。mac地址前几位也可以定位生产厂家。但是你出生后会离开这个县(哪怕在这个县,也不能具体找到你)。所以一般写个人信息就要有出生地和现居地址了。

    作者回复: 这个解释太详细了

    2018-08-23
    6
    515
  • 尼古拉
    mac好比人的身份id,ip好比他的住址,住址可以变,人的身份🆔不会变。
    2018-05-23
    127
  • ip是网络层使用的 mac是链路层使用的 ip包最终还是要通过物理链接和mac地址进行交互的

    作者回复: 对的

    2018-05-29
    104
  • 执笔书生
    因为mac地址是全世界唯一的,不会找错人!而ip地址会是发生改变的!有可能现在ip地址A是这里的地址!在下一刻就是B的地址了!
    综上所述:所以要有mac地址!
    2018-05-18
    80
  • 初学者
    看到这篇文章,让我想起了一本书:网络是怎样连接的。我看到有小伙伴问推荐的书籍,可惜我无法直接在这里回复它
    2018-05-18
    1
    47
  • iceco1a
    网卡MAC码是由全球惟一的一个固定组织来分配的,未经认证和授权的厂家无权生产网卡。每块网卡都有一个固定的卡号,并且任何正规厂家生产的网卡上都直接标明了卡号,一般为一组12位的16进制数。其中前6位代表网卡的生产厂商。后面的位数是设备号。当然在操作系统级别改Mac地址又是一种说法。

    作者回复: 赞

    2018-05-31
    1
    42
  • 小田
    摘要
    # 协议三要素
    语法、语义、顺序
    # 网络数据包结构
    Mac头 Ip头 Tcp头 Http头 数据体
    # 网络五层模型
    1. 物理层:连接
    2. 链路层:定位
    3. 传输层:路由
    4. 会话层:会话连接机制
    5. 应用层:数据封装格式
    2018-06-04
    38
  • zwfec
    很多人都说mac地址是唯一的,不变的,网络老师也这么说,
    1. 但记得大学时为了能上网,在windows XP下自己改了mac地铁就可以了, 可能只是操作系统级别的修改,但理解起来好矛盾
    2. 如果是全球唯一的,那么意思是这些网卡厂商都要维护自己的mac列表?以保证和其它厂商绝对不重复,有这样的机构吗

    真是困惑,自己猜想mac唯一应该也只是保证局域网内保证唯一吧
    2018-05-18
    4
    32
  • Rimin
    假如有MAC地址没有ip地址可以吗?答案是不行,因为全世界存在各种网络,它们使用不同硬件地址。要使这些网络能互相通信就必须进行非常复杂的硬件地址转换工作。但可以用抽象的ip地址把这个问题解决。
          那么假如没有MAC地址而只有ip呢?同样不行,ip地址只是一种抽象的逻辑地址用于标记唯一性,而传输的数据是要从网络层到数据链路层或由数据链路层到网络层的,ip数据报并不能和下层硬件“沟通”,所以还要被封装MAC帧。即将IP地址解析为链路层所需硬件地址。
       目前是这么理解的,欢迎交流指正。
    2018-05-18
    30
  • Geek-Leon
    有既不走UDP又不走TCP的应用层协议吗?

    作者回复: 有的,传输层大部分情况下是tcp和udp,但是也有其他的协议比如sctp

    2018-05-18
    24
  • 橙子
    没有MAC地址,靠IP也是可以做MAC地址的事情,但是由于分层,IP负责网络层传输,MAC负责链路层传输,IP和MAC通过ARP协议映射,比如任何人沟通,可以通过电话,短信,微信,或者邮件,但是不同场合用的工具不一样
    2018-05-18
    23
  • hansc
    对于服务器来说,源地址一般是路由器的外网地址,内网机器没有外网地址,目标地址会把报文发给路由器,路由器根据mac地址,在arp缓存找到内网地址。
    2018-05-18
    17
  • 罗格
    十分感谢作者大大的回复,今天才看到不好意思,我自己后来发现还是有些疑问在纠结,查了许多相关资料还是没解决,又厚着脸皮来请教……
    一、文中说”每个城关都连着两个国家,”,又说“城关与城关之间是一个国家”,因为“城关是路由器,国家是局域网”,那关系就是“局域网—路由器—局域网—路由器—局域网”这样子吗?
    二、"当网络包知道了下一步去哪个城关,还是要使用国家内部的mac地址",是因为上面路由器和局域网关系中的两个路由器都处于中间那个局域网中的原因所以可以使用arp协议获取对方的mac地址吗?还是上面说的OSPF协议呢(我查的资料里说OSPF获取的是链路状态,具体没说mac地址还是ip地址)?
    三、“本地通讯基本kao吼”,ARP协议只在本地作用么?这个“本地”是指局域网还是什么?
    四、我查阅的资料里说自治系统中是包含多个路由器的,而且通常一个自治系统也包含多个局域网,那一个局域网里会包含多个路由器吗?如果我第一个问题里的图成立的话那意味着每个局域网都有两个路由器?
    上述四个问题困扰我许久,对我原来的认知产生了一些颠覆,还望作者大大不吝赐教,万分感谢……

    作者回复: 问题一,你的理解正确。问题二,去哪个网段应该怎么走,用ospf,也就是城关管理员直接交换信息用ospf,一旦一个包来到城关,就根据已知信息选择下一个城关,一旦选择了城关,就通过arp得到地址发送。问题三,本地是指局域网。问题四,一个局域网不会有多个路由器,局域网边界上是路由器

    2018-12-04
    16
  • lujg
    在公网中通信只能用公网ip,而对于公网ip是按照区域分配的,路由器是可以知道目标ip的大范围的区域,然后从大区域慢慢向小区域传送的。可以类比我们去某地的一个过程,比如你从北京到深圳某公司,你需要先去飞机场,然后坐飞机去深圳,再通过市内交通到达目的地。
    而对于Mac地址,这是标识机器的一个地址,在出厂时就确定的,但是单mac所在的区域不是固定的,而是会移动的。即你从北京到深圳后,你的IP是会变的,但mac是不会变的。所以是无法通过mac地址寻找到你所在位置的。
    理论上是可以通过一个大查找表知道每一个mac所在的位置,然后通过查表知道你所在的位置然后根据mac做一个转发,但是查找的代价是很高的。
    其实手机通过数据上网就是一个通过类似mac寻址的一个网络。在移动网络中是允许你移动的,这是由于基站会记录你的位置信息。并且核心网与公网的通信是通过ip来实现的,而在手机和基站间的通信是通过类似mac的一个唯一码实现的。并且移动网络整体建设成本比互联网的成本高很多,消费也高很多。
    2018-05-18
    16
  • clean
    先有mac 后有ip,以前的网络并没有统一,很多地方有自己的网络结构,导致资源互联很难。ip是统一异构网络的。ip是全球范围内的,mac是一跳范围内的。如果真的只用mac来寻址,维护mac的成本很高,而且如果在路由表中记录mac 很容易出现广播风暴 网络就瘫痪了。所以设计者考虑了很多才在mac层上面加一层IP 这样能更好的解决网络异构问题 和 传输效率问题。
    2018-08-11
    11
  • 行者
    写的真好。
    另外老师是不是订阅了薛兆丰老师的经济课,一只铅笔的故事。^ _ ^
    2018-05-19
    10
  • 石头
    刘师,你好,请问有什么通俗易懂的教材可以推荐下吗?
    2018-05-18
    10
  • 蔡波
    IP是负责三层通信通过查找路由表,层层传递,最终到达目的设备,Mac负责二层通信,设备上的ARP表是IP和Mac的对应关系,通过ARP表找到目的IP的Mac地址。
    2018-05-18
    9
  • 徐良红
    关于老师最后的问题,我觉得是这样:ip报文端到端的传输过程中,目的地址和源地址是不变的,但是每通过一个网关,源mac和目的mac一直在变。两个王国之间的网关要通过mac互相传递报文。
    2018-05-19
    8
收起评论
99+
返回
顶部