从一个HTTP请求来看网络分层原理

1.现在有一个需求:一个数据包从A主机传送到B主机

在发送过程中都会发生什么?

数据传输过程中会发生数据丢包,当数据丢包后,往往会进行数据重传,数据重传多次的话,还有可能会发生数据重复,或者之前数据丢失的包并没有真正丢失,只是在网络中产生了一个延迟,这样也会发生数据的重复问题。

通过网络设备进行数据转发的时候,数据在经过设备的时候都有可能被人串改,或者本身设备有一些问题导致数据的一些错误,所以要进行数据完整性的校验,包括数据传输介质也可能是多样的,比如内网直接通过网线去传输,公网的话通常就要通过光纤去传输,所以要实现不同介质之间信号的转换,数字转换模拟信号,距离比较远的话,还会存在一个信号衰减的问题。

2.为了简化网络的复杂度,网络通信的不同方面被分解为多层次结构,每一层只与紧挨着的上层或者下层进行交互,将网络分层,这样就可以修改甚至替换某一层的软件,只要层与层之间的接口保持不变,就不会影响到其他层。

OSI(Open System Interconnection Reference Model):开放系统互联参考模型

TCP/IP协议族

左边呢是OSI网络参考模型分为了7层,右边是TCP/IP协议族分为了5层,TCP/TP协议族把表示层与会话层合并到了应用层里,中间呢就是不同层次之间的协议。

3.一个HTTP请求的分层解析流程

现在我们来通过一个HTTP请求看一下不同层次之间是如何工作的:

我们的服务器上部署了一个静态页面(图片又上角黄色的部分),通过Nginx部署在我们的公网上面,现在我们通过浏览器来进行访问,在浏览器中输入域名,点下回车之后它们是如何工作的呢?

浏览器先会去解析域名,因为在客户端C与服务端S进行数据交互的时候,它是不认域名的,认的是ip地址,所以浏览器先会解析域名,然后去看下浏览器中有没有域名对应的DNS的相关信息的缓存,有的话我们就能从中拿到服务端S的ip地址,没有的话,会去本地的host文件里看有没有配置,没有配置的话,会发起一个DNS的请求,获取服务器的ip地址(DNS也是一台服务器,也有自己的ip地址,通常是配置在操作系统上的)。

获取服务器IP地址过程:

这时应用层会构造一个DNS请求报文,然后应用层会调用传输层的一个接口,因为DNS使用UDP来进行数据的传输,所以应用层会调用传输层的UDP相关的一个协议,实现数据的传输。说白了就是应用层会调用传输层的API,传输层会在DNS请求报文的基础上加一个UDP的请求头,然后传输层会把数据交给网络层,网络层同样的会在UDP的请求报文的基础上再加一个IP的请求头,网络层再把IP请求报文交给数据链路层,数据链路层会实现一个二层的寻址,这时它会把自己的make头加上去,并且会把对应的请求报文应该要去交给下一个机器的make地址也加上去(*会通过网络层的ARP协议去找到,ARP会发送ARP的请求去看下IP地址对应的make地址是多少,拿到之后会交给数据链路层*),然后通过物理层传出去,通常传到路由器上面。

路由器是一个三层的设备,最开始会通过物理层来进行连接,之后物理层把数据交给数据链路层,链路层会看下make地址是不是给我的,是给我的就解析,不是就丢弃,解析完后,数据报文在往上面去传输到网络层,网络层会去看下这个数据应该传到下一个路由器的地址是多少,这个时候它会通过运营商的网络接口传到运营商的路由器上面,运营商这边就比较复杂,运营商会有自己的DNS服务器,如果电脑配置的是运营商的DNS的话,会直接去运营商的DNS服务器上去找对应的域名,这个时候就会拿到对应的ip地址,然后开始一个层层的原路返回,直到应用层拿到了返回的报文,也就是拿到了域名对应的IP地址。

这时应用层就会进行HTTP请求报文的发送,这时HTTP会干什么呢?

同样的它会去调用传输层的协议,因为HTTP是基于TCP协议来实现的,所以在调用传输协议的时候,传的是TCP的一些参数,TCP会调网络层的IP协议,IP协议会加IP头,然后数据链路层会加上make头,和刚才UDP协议是一样的,会通过物理层和路由器进行数据的传输,这一次携带的是IP地址,所以不用访问运营商的DNS服务器,而是运营商根据IP地址把数据报文传输给目标服务器的运营商,运营商之前有专线进行连接,所以数据到达了服务器的网络环境下,仍然逐层解析,物理层发往数据链路层,链路层判断数据是不是给自己的,是的话就进行解析,链路层发往网络层,判断网络的IP地址是不是自己,是的话进行解析,发往传输层,解析TCP的端口比如80,传输层会把请求报文交给应用层应用程序,如果部署的是Nginx服务器的话,默认去找80端口对应的应用程序,应用层解析报文,构造一个HTTP的响应报文,逐层返回到客户端C。

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

推荐阅读更多精彩内容