第一讲  为什么要学习网络协议

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

常见的网络协议以及其所在的层:

知识要点:

1、协议三要素:语法、语义、顺序。

  • 语法:一段内容要符合一定的内容和格式。如:括号要成对,某些语言的结束要有分号等。
  • 语义:一段内容要代表的某种含义,必须要有意义。如数字减数字是有含义的,数字减字符就没有意义。
  • 顺序:先做什么,后做什么。

2、以下单流程为例,查看互联网运行中的网络协议

  浏览器输入网址,https://www.kaola.com (此为URL) ,浏览器只知道名字,不知道具体的地点,所以无法访问。于是,采用地址簿去查找,(可以使用一般的地址簿协议DNS去查找,还可以使用另一种更加精确的地址簿查找协议HTTPDNS)。最终,可以找到IP地址:106.114.138.24。

  知道目标地址,浏览器打包请求,普通浏览使用HTTP协议,加密传输使用HTTPS协议。(协议里都应包括“买什么和买多少”)。

  DNS、HTTP、HTTPS所在层,我们称为应用层,经过应用层封装后,浏览器会将应用层的包交给下一层去完成,通过socket编程来实现。下一层是传输层。传输层有两种协议,一种是无连接的协议UDP,一种是面向连接的协议TCP。对于支付来讲,往往使用TCP协议。所谓的面向连接就是,TCP会保证这个包能够达到目的地。如果不能到达,就会重新发送,直到到达。

  TCP协议里面会有两个端口,一个是浏览器监听的端口,一个是电商的服务器监听的端口。操作系统往往通过端口来判断,它得到的包应该给哪个进程。

  传输层封装完毕后,浏览器会将包交给操作系统的网络层。网络层的协议是IP协议。在IP协议里面会有源IP地址,即浏览器所在机器的IP地址和目标IP地址,也即电商网站所在服务器的IP地址。

操作系统在知道目标IP地址,就开始想如何根据这个门牌号找到目标机器。操作系统会判断,这个目标IP地址是本地人,还是外地人。如果是本地人,从门牌号就能看出来,但是电商网站不在本地,而在遥远的地方。操作系统知道要离开本地去远方。可以这样类比一下:如果去国外要去海关,去外地就要去网关。而操作系统启动的时候,就会被DHCP协议配置IP地址,以及默认的网关的IP地址192.168.1.1。
  操作系统如何将IP地址发给网关呢?在本地通信基本靠吼,于是操作系统大吼一声,谁是192.168.1.1啊?网关会回答它,我就是,我的本地地址在村东头。这个本地地址就是MAC地址,而大吼的那一声是ARP协议。
  于是操作系统将IP包交给了下一层,也就是MAC层。网卡再将包发出去。由于这个包里面是有MAC地址的,因而它能够到达网关。网关收到包之后,会根据自己的知识,判断下一步应该怎么走。网关往往是一个路由器,到某个IP地址应该怎么走,这个叫作路由表。路由器有点像玄奘西行路过的一个个国家的一个个城关。每个城关都连着两个国家,每个国家相当于一个局域网,在每个国家内部,都可以使用本地的地址MAC进行通信。一旦跨越城关,就需要拿出IP头来,包括源IP地址、目标IP地址。询问接下来该怎么走啊?
城关往往是知道这些“知识”的,因为城关和临近的城关也会经常沟通。到哪里应该怎么走,这种沟通协议称为路由协议,常用的有OSPFBGP

 城关与城关之间是一个国家,当网络包知道了下一步去哪个城关,还是要使用国家内部的MAC地址,通过下一个城关的MAC地址,找到下一个城关,然后再问下一步的路怎么走,一直走到最后一个城关。最后一个城关知道这个网络包要去的地方。于是,对着这个国家吼一声,谁是目标IP啊?目标服务器就会回复一个MAC地址。网络包过关后,通过这个MAC地址就能找到目标服务器。目标服务器发现MAC地址对上了,取下MAC头来,发送给操作系统的网络层。发现IP也对上了,就取下IP头。IP头里会写上一层封装的是TCP协议,然后将其交给传输层,即TCP层,在这一层里,对于收到的每个包,都会有一个回复的包说明收到了。这个回复的包绝非这次下单请求的结果,而仅仅是TCP层的一个说明,即收到之后的回复。当然这个回复,会沿着刚才来的方向回去,报个平安。(因为一旦出了国门,西行路上千难万险,如果在这个过程中,网络包走丢了,例如进了大沙漠,怎么办呢?因而到了要报个平安。)
  如果过一段时间还是没到,发送端的TCP层会重新发送这个包,还是上面的过程,直到有一天收到平安到达的回复。这个重试绝非你的浏览器重新将下单这个动作重新请求一次。对于浏览器来讲,就发送了一次下单请求,TCP层不断自己闷头重试。除非TCP这一层出了问题,例如连接断了,才轮到浏览器的应用层重新发送下单请求。
当网络平安到达TCP层之后,TCP头中有目标端口号,通过这个端口号,可以找到电商网站的进程正在监听这个端口号,假设一个Tomcat,将这个包发给电商网站。电商网站的进程得到HTTP请求的内容,知道了要买东西,买多少。往往一个电商网站最初接待请求的这个Tomcat只是个接待员,负责统筹处理这个请求,而不是所有的事情都自己做。例如,这个接待员要告诉专门管理订单的进程,登记要买某个商品,买多少,要告诉管理库存的进程,库存要减少多少,要告诉支付的进程,应该付多少钱,等等。

  如何告诉相关的进程呢?往往通过RPC调用,即远程过程调用的方式来实现。远程过程调用就是当告诉管理订单进程的时候,接待员不用关心中间的网络互连问题,会由RPC框架统一处理。RPC框架有很多种,有基于HTTP协议放在HTTP的报文里面的,有直接封装在TCP报文里面的。
  当接待员发现相应的部门都处理完毕,就回复一个HTTPS的包,告知下单成功。这个HTTPS的包,会像来的时候一样,经过千难万险到达你的个人电脑,最终进入浏览器,显示支付成功。

转载于:https://www.cnblogs.com/miaojjblog/p/10521281.html

《趣谈网络协议》(刘超老师)读后笔记记录 001相关推荐

  1. 趣谈网络协议笔记-二(第十五讲)我与刘超有不同看法

    趣谈网络协议笔记-二(第十五讲) HTTPS协议:点外卖的过程原来这么复杂 前言 好饿啊= =,最近感觉自己真的是胖的不行了,所以开始了适当的节食操作. 我似乎很不擅长隐藏自己的想法.我似乎很不习惯于 ...

  2. 趣谈网络协议笔记-二(第十二讲)

    趣谈网络协议笔记-二(第十二讲) TCP协议(下):西行必定多妖孽,恒心智慧消磨难 前言 哈哈哈,越当我看刘超的通俗讲解,我就越感觉自己的无能.每次当我看了讲解之后,每次当我感觉到这个东西原来是这么简 ...

  3. 趣谈网络协议-课程介绍

    技能收获 掌握网络协议的知识框架: 应对大厂面试的协议难题: 驾驭网络协议的实用场景. 讲师介绍 刘超,前网易研究院云计算技术部首席架构师,15 年云计算领域研发及架构经验.曾在 EMC 做过类似 G ...

  4. 《趣谈网络协议》00~04笔记

    文章目录 关于我的仓库 前言 00讲想成为技术牛人?先搞定网络协议! 01讲为什么要学习网络协议? 引入:什么是协议? 协议三要素 协议例子 [准备掉头发吧!]以一个在电商网站上下单的过程初识有哪些常 ...

  5. 趣谈网络协议笔记-二(第十三讲)

    趣谈网络协议笔记-二(第十三讲) 套接字Socket:Talk is cheap, show me the code 前言 这只是笔记,是为了整理刘超大神的极客时间专栏的只是而存在的! 经常会在网络上 ...

  6. 趣谈网络协议笔记-二(第十一讲)

    趣谈网络协议笔记-二(第十一讲) TCP协议(上):因性恶而复杂,先恶后善反轻松 自勉 我似乎天性不擅长争斗,但是有些时候,我也必须砥砺前行. 强大是和平的前提,而善良不是. 前言 今天回到家里已经是 ...

  7. 趣谈网络协议笔记-二(第五讲)

    趣谈网络协议笔记-二(第五讲) 目录 第二模块 底层网络知识讲解:第二层到第三层 第5讲 | 从物理层到MAC层:如何在宿舍离自己组网完联机游戏 第6讲 | 交换机与VLAN:办公室太复杂,我要回学校 ...

  8. 华为研究院19级研究员几年心得终成趣谈网络协议文档

    苦且绕不过去.经过多次放弃之后,我发现在我的职业生涯中,网络这一关无论如何也绕不过去.本来觉得写Java程序时可以依赖别人的库,所以就不用关心这么多底层的技术了,但是到后来才发现,服务数量一多,吞吐量 ...

  9. 华为研究院高级研究员几年心得终得趣谈网络协议文档,附资深架构师讲解

    苦且绕不过去.经过多次放弃之后,我发现在我的职业生涯中,网络这一关无论如何也绕不过去.本来觉得写Java程序时可以依赖别人的库,所以就不用关心这么多底层的技术了,但是到后来才发现,服务数量一多,吞吐量 ...

  10. 趣谈网络协议-第二模块-底层网络知识详解:4陌生的数据中心2CDN和数据中心

    趣谈网络协议-第二模块-底层网络知识详解:4陌生的数据中心2CDN和数据中心 1:CDN:你去小卖部取过快递么? 使用"中间仓库"来优化 网络中的"就近配送" ...

最新文章

  1. 与http协作的web服务器、http首部(第五章、第六章)
  2. ASP.NET MVC3 读书笔记三(Html辅助方法下)
  3. ie,火狐下滚动条的问题
  4. win7输入密码界面背景怎么更改
  5. 近期将要学习的内容(flag)
  6. Java 9 揭秘(15. 增强的弃用注解)
  7. 微信小程序如何引用其他js文件
  8. jquery ajax 详细教程视频,Ajax+jquery基础与提升2017视频教程
  9. 2021年特种设备气瓶充装(全国特种设备-P气瓶充装模拟考试题库一)安考星
  10. 大学毕业生,关于转正定级和干部身份你懂吗?
  11. 认识网络通信中的 ACK、NACK 和 REX
  12. 18_2Servlet学习笔记
  13. 减肥--应该是种轻松愉快的经历
  14. C语言获取键盘方向键的键值
  15. rk3288 linux 编译,RK3288系统编译及环境搭建
  16. 智慧非智能,智慧园区智慧在哪里?
  17. 【橙子】C#Unity--2D迷宫
  18. git 申请合并冲突:rebase 解决合成一条再合并
  19. linux 根目录结构
  20. Java当中的IO流(中)

热门文章

  1. C++完成淄博烧烤节管理系统
  2. 7.12每日股市晚评
  3. 什么是产品创新及产品创新范围
  4. T225362 《山茶文具店》
  5. 转基因的危害(转载)
  6. 主机用wifi上网,虚拟机怎样上网
  7. 数据库测试的具体测试方法
  8. [收藏-篮球]后MJ时代的盛宴
  9. 数据结构----折半查找的查找效率以及折半查找成功与失败的ASL
  10. Python——阶乘