网络协议笔记day01:什么是网络协议

        要想打造互联网师姐的通天塔,只教给一台机器做什么是不够的,我们需要学会教给一大片机器做什么,这就需要网络协议。只有通过网络协议,才能使一大片机器互相协作、共同完成一件事。

        那么什么是网络协议呢?

        我们通过一个简单的例子来说一说~

        我们想在网上买个东西,常规的做法就是打开浏览器,输入购物网站的网址,浏览器就会给我们显示购物网站的页面。

        而浏览器之所以能够为我们展示这个页面,是因为它收到了一段来自HTTP协议的发来的东西,以网易考拉为例,格式如下图所示:

    1我们常用的网络协议有哪些?

        接下来我们用双十一下单的过程来了解一下,在互联网世界的运行过程中,都是用了哪些协议。

        首先我们在浏览器中输入了https://www.kaola.com,这是一个URL

        浏览器只知道名字是www.kaola.com,但不知道具体地点,所以不知道该如何访问。于是它打开地址簿去找。可以使用一般的地址簿协议DNS去查找,也可以使用另一种更加精准的地址簿查找协议HTTPDNS

        无论用哪一种方法,最终都会得到这个地址:106.114.138.24,它是IP地址。IP地址是互联网世界的门牌号。

        OK,我们知道了目标的地址啦,拿到地址之后下一步就是打包我们要邮寄的东西~

        对于普通的浏览请求,往往会使用HTTP协议,但对于购物的请求,往往需要加密传输,因而会使用HTTPS协议。无论是什么协议,里面都会写明“你要买什么和买多少”。

        DNSHTTPHTTPS所在的层我们称为应用层

        如上图所示,最下面的框框是我们原始的信息,再往上一层是经过应用层封装的包~

        经过应用层封装后,浏览器会将应用层的包交给下一层去完成,这个“交给”的过程通过socket编程来实现。

        下一层是传输层。传输层有两种协议,一种是无连接的协议UDP,一种是面向连接的协议TCP。对于支付来说,往往使用TCP协议。

        所谓的面向连接就是,TCP会保证这个包能到达目的地,如果不能到达,就会重新发送,直到到达。

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

        经过传输层封装的包:

        传输层封装好后,浏览器会将包交给网络层。网络层的协议是IP协议,在IP协议中会有源IP地址,即浏览器所在机器的IP地址和目标IP的地址(电商网站所在服务器的IP地址)。

        经过网络层封装的包:

        操作系统已经知道目标IP的地址,他就开始想着怎么拿着这个门牌号去找到目标机器,首先显然我们的目标机器是外地的。(从门牌号就可以看出来,电商网站不在本地机器上)

        既然要去外地,就要经过一个地方叫做网关

        操作系统在启动的时候,就会被DHCP协议配置IP地址,以及默认的网关的IP地址192.168.1.1

        操作系统如何将IP地址发给网关呢?

        既然都是一个地方的,问一声不就行了嘛~于是操作系统喊了声:“谁是192.168.1.1呀?”

        “是我是我,我在这儿呢,六号楼一单元111室!”

        这个本地地址就是MAC地址,而操作系统喊的那一声就是ARP协议。

        OK,此时的包包又被MAC层封装了:

        网卡将包发了出去,这个包里面是有MAC地址的,因此它顺利的到达了网关。

        网关收到包后,会根据自己的只是判断下一步该怎么走。网关往往是一个路由器,到某个IP地址该怎么走,这个叫做路由表

        路由器有点像玄奘取经路过的一个个国家的一个个城关,每个城关都连着两个国家,每个国家都相当于一个局域网,每个国家的内部,都可以使用本地的地址MAC进行通信。

        一旦跨越城关,就要拿出IP头来,里面写着贫僧来自东土大唐(源IP地址),欲往西天拜佛求经(目标IP地址)。下一步该怎么走呐?

        城关都知道这些信息哒,因为两个临近的城关肯定会常常沟通。到哪里该怎么走,这种沟通的协议称为路由协议,常用的有OSPFBGP

        对啦,在城关之间走用的都是当地的MAC地址~

        就这样一路走着,一路问着,到达了最后一个城关,这个城关的人知道网络包要去往什么地方,最后,我们就拿到了一个目标的MAC地址,网络包过关后,通过这个MAC地址就能找到目标服务器了。

        目标服务器发现MAC地址对上了,就将MAC头取下来,发送给操作系统的网络层。网络层发现IP也对上了,就取下了IP头。IP头里头会写上一层封装的是TCP协议,然后将其交给传输层,即TCP层。在这一层里,对于收到的每个包,都会有一个回复的包说明收到了。这个回复的包并不是说这次下单请求的结果(比如购物是否成功、扣了多少钱),而仅仅是TCP层的一个说明,就是TCP层收到啦!这个回复会沿着刚才来的方向走回去,报个平安。

        如果发送端浏览器那边过了一段时间还是没有收到这报平安的回复包,那么发送端的TCP层会重新发送这个包,过程还是和刚才一样,直到收到平安到达的信息。

        这个重复的过程并不是说我们要重新在浏览器上下一次单,无需这样,下单只需一次就够了,只是TCP层在不断的重试。除非TCP这一层出现了问题,比如说连接断了,才轮到浏览器的应用层重新发送下单请求。

        当网络包成功到达TCP层之后,TCP头中有目标端口号,通过这个端口号可以找到电商网站的进程正在监听这个端口号,假设一个Tomcat,将这个包发给电商网站。

        电商网站的进程得到HTTP请求的内容,知道了要买什么东西,买多少。

        往往一个电商网站最初接待请求的这个Tomcat只是个接待员,负责统筹处理这个事情,而不是所有事情都自己做。例如这个接待员会告诉专门管理订单的进程登记一下要买某个商品,要买多少个,然后告诉管理库存的进程,库存要减少多少,然后再告诉支付的进程,应付多少钱,etc.

        告诉相关进程这些信息往往通过RPC调用,即远程过程调用的方式来实现。远程过程调用就是当告诉管理订单进程的时候,接待员不用关心中间的网络互联的问题,会有RPC框架统一处理。RPC框架有很多种,有基于HTTP协议放在HTTP的报文里面的,有直接封装在TCP报文里面的。

        当这些所有部门都处理完毕之后,就会回复一个HTTPS的包,告知用户下单成功。这个HTTPS的包会像来的时候一样,经过千难万险到达我们的个人电脑,最终进入浏览器,显示支付成功。

        哇~原来我们购买一件东西的过程是如此的千辛万苦,瞬间觉得我们的网络真的好了不得呀!

    2小结

        一个简简单单的下单过程,中间要牵扯到这么多协议,而管理一大片机器,更是一件特别有技术含量的事情。除此之外,最近比较火的云计算、容器、微服务等技术也都需要借助各种协议,来达成大规模机器之间的合作。

        刚刚的例子只是给了我们一个大体的框架,有很多协议在这个例子中还没有提到,很多细节都省略了,后面我们会一点一点去还原它们~

        下图是我们后面要学习的协议们:

        

        

        

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容

  • 文章首发于个人blog欢迎指正补充,可联系lionsom_lin@qq.com原文地址:《网络是怎样连接的》阅读整...
    lionsom_lin阅读 14,148评论 6 31
  • 一、什么是TCP/IP 网络和协议 1. TCP/IP是一类协议系统,它是一套支持网络通信的协议集合。网络是计算机...
    karlon的马甲阅读 6,537评论 1 24
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,054评论 0 8
  • 话说两台电脑要通讯就必须遵守共同的规则,就好比两个人要沟通就必须使用共同的语言一样。一个只懂英语的人,和一个只懂中...
    哲逗年阅读 904评论 0 0
  • 今天是我生命中最美好的一天 主题:一切的改变在接纳中完成 这个周末儿子回来 吃过饭,我开始缝厚一点的被套,孩子就开...
    艳平_9908阅读 72评论 0 0