你了解你的HTTP请求有多辛苦吗?

HTTP请求

前言:

作为一名合格的前端,每天会应对无数的网络请求。
所以,了解这些网络底层是怎么从源发送过来的,接收源的又是如何处理的,对你的工作中的调试是有质的提升的。
刚好最近希望系统的学习下,就选择了工作中较常见的HTTP请求与响应。
有错误的可以通过下面二维码的联系方式联系我,欢迎指点错误。


背景:

互联网上相关联的协议,集合起来可以有个叫法叫“TCP/IP协议族”。
我们只要了解其中的HTTP协议,就很够用了。
那这个协议族里有个比较重要的点,就是分层。
从上往下分呢,分别是应用层,传输层,网络层和网络数据链路层。
等等阅读时可以参考"TCP/IP参考模型"图来理解。


TCP/IP参考模型:

TCP/IP结构模型
TCP/IP结构模型

目录:

  • 应用层
  • 传输层
  • 网络层
  • 链路层

HTTP请求:

  1. 应用层:
    该层里包含很多常见的协议,如ftp协议,smtp协议,还有本篇主角HTTP协议。
    当一个HTTP请求被发出时,通常是由发送方(客户端)发起,那么此时是到达了"TCP/IP参考模型"中的应用层的。
    其中起作用的是HTTP协议,该协议生成了针对目标(也就是接收方服务器)的HTTP请求报文(包含了请求行,请求头部,有时还带有请求体,具体见下一篇详细的解释),并发往下一层。
    注意,这时候的报文还是完整的。
    小结: 应用层是用来生成报文的。

  2. 传输层:
    当HTTP请求穿过应用层后,就是到达了传输层了。该层内主要作用是将应用层中的HTTP协议带来的完整报文进行处理,然后再传输。
    其中,为了传输方便,TCP协议将应用层的HTTP协议带来的一串完整的请求报文,按序号分割成多个报文段,并在各个报文上打上标记序号以及端口号,形成IP数据包,最后再将一个个处理完的报文片段传输给网络层进行定位解析,为发送做准备。
    注意,这时候是片段了。
    小结: 传输层是用来切割报文的。

  3. 网络层(IP层):
    这里的网络,并不是我们平时理解的网络信号的网络,这里指的是一种结构模型层。

  • 首先,要先解释下其中两个难点区分,就是IP地址和MAC地址。
  • IP地址是Internet协议地址,是逻辑地址,也就是抽象的,是每个Internet包给的,动态的,可以不同的。
  • 而MAC地址却是物理地址,也就是实际存在的,由设备的网卡提供的,而且一般不能改变的,也就是固定的了。
  • 通俗地讲,IP地址可以理解为你家门牌号,而MAC地址相当于你个人身份证。
  • 两者并没有必然关系。
当到达网络层后,这时候才是整个“TCP/IP参考模型”结构体系的关键,因为它决定了发往哪里去,按什么顺序发。

其底层使用的就是因特网协议,也就是IP协议(如果你想联网)。
它将客户端和服务器端这两端通过路由作为桥梁,IP协议作为通信工具,连接起来进行通信。
其中,路由的作用就是:为接收到的处理好的请求报文(也就是数据包)找到相对应的目的主机(接收方),可以理解成指路人。

那为什么路由就能知道接收到的报文要发往哪里呢?

原来,该报文里就包含了目标主机的IP地址。
而IP地址含有两个部分,一个是网络地址,一个是主机地址。
因此,通过对方的IP地址,不仅可以判断出对方是否和本机在一个网络内,还能获取对方主机地址。

那么,路由处理分两种情况,

第一,针对不需要跨网段的,也就是在局域网内:
这时候交给"交换机"处理。
这,就体现了mac地址的作用了,因为mac地址是物理地址,硬件地址,由网卡提供的,一般无法改变。
而网络层中路由借助“ARP协议”,会将目标主机(目标服务器)的IP地址,解析成目标主机对应的MAC地址与arp表对应,然后,告诉交换机,然后交换机会根据自己的转发表中的mac地址和mac地址对应的端口号一一对应,然后进行转发。如果在转发表内找到了对应端口号,那么恭喜,你的快递是顺丰的,交换机直接一步到位发送到目标主机;如果找不到,呵呵,你估计贪便宜,找了韵达了...它就每个端口都转发一次,总会中一次的,很粗暴的方法,自然效率偏低了。

第二,针对需要跨网段,也就是进入因特网了:  
这时候交给网关处理。
这时候就需要使用请求报文中的IP地址,来寻找目标主机的IP位置,接着告诉网关IP地址,网关进行匹配相应的路由,然后在路由表中寻找对应的IP地址,然后根据IP地址中的网络地址,判断是跨网还是内网,再决定要往哪个网络跳转。
还有,路由主要使用的协议即为IP协议。所以,网络层也有别的叫法,就是IP层。

到这,你可能会有这样的疑问?
既然有了IP地址能定位,那为什么还要MAC地址呢?
这里借助知乎一个回答:
IP地址在三层中定义,具有三层意义,MAC地址在二层中定义,具备二层意义。在同一网段内,由于不需要跨三层,因此使用MAC地址寻址,但是一旦跨网段(即跨越三层环境),此时则需要IP地址来寻址。

这样一来,路由发往网络的通信请求就准备齐全了,剩下就是让下一个层发送数据了。
但是记住,网络层是不传输的,只是用来确定路线(定位)的,也对应了上面说的指路人。
小结: 网络层是用来定位的。
  1. 链路层:
    该层可以说是和设备,也就是物理层(OSI模型)最接近的一层了。
    那么就是说,离服务器接口最近了。
    但是呢,该层是不干活的,为什么呢?你有见过领导还写业务代码吗?
    当然,也不是啥都没干。
    链路层作用中的其中作用之一就体现在检测你这些发过来的信息到达有没错误?也就是测试。
    测试什么呢?确定物理地址,源地址目的地址等问题。
    当测试无误后呢,就交给服务器处理了。
    服务器对得到的报文进行解析处理,然后返回带有响应数据的响应,于是,响应就开始了。
    小结: 链路层是用来检测数据的。

HTTP响应:

具体过程就相当于刚刚来的路,重走一次,只不过这次是倒着走了。
从链路层-->网络层-->传输层-->应用层--->就到客户端了,通常是浏览器,就这样,一次请求响应就完成了。

总结:

一次完整的HTTP请求,从发送到接收,是需要经历: 应用层-->传输层-->网络层-->链路层,甚至到了物理层的。


下一篇,我会对一次HTTP请求中的报文进行详细解释,也就是说如果你想知道HTTP请求中带了哪些东西,可以期待我下一篇文章。


个人能力有限,有错误的麻烦扫描下面二维码联系我(回复公众号我就能收到)。

或者微信搜索公众号:“强仔说前端”,联系我。

新人初涉博客,希望各路大神能各显神通,替我指出错误,再次感谢。

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

推荐阅读更多精彩内容

  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,053评论 6 174
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,939评论 6 13
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,051评论 0 8
  • 罗振宇在《时间的朋友》中提到, 你看到的舞台虽然很单调, 但是你没有注意到, 舞台本身正在变得更大。 虽然聚光灯下...
    听瑛语阅读 281评论 0 1
  • 回家的火车上,旁边的情侣在看《奔跑吧兄弟》,映衬出我这个伤感的人。《平凡的世界》读的内心低沉了,抬头看看现实的平凡...
    Wisconsin0607阅读 197评论 0 0