http学习初识http

智轩资本 智轩资本     2022-08-22     391

关键词:

  作为一名准前端开发工程师,必须要对http基础知识有一定的了解,可是想学习HTTP相关的知识,发现国内只有两本相关的图书,《HTTP权威指南》和《图解http》,所有的书但凡带上权威指南,必将是圣经级别的图书,我在学校图书馆借了一本,600多页的砖头书,由于基础太过薄弱,根本读不下去,于是转向了《图解HTTP》,是本书很薄,只有二百多页,很适合我这样的小白。推荐基础比较薄弱的朋友先从《图解HTTP》看起!废话不多说,准备起飞!
     几乎每一位前端工程师在面试的时候都会被问道这样一个问题,在浏览器地址栏输入URL到显示出整个页面,经历了什么?这个问题并没有一个统一的答案,最简单的形容:  
  1.利用dns进行域名解析,解析成计算机能够识别的ip地址 。
  2.进行tcp的三次握手 。
  3.建立起tcp连接后,进行http请求 。
  4.服务器端相应http请求,浏览器得到html页面 。
  5.浏览器解析html页面,发起html页面内的资源请求 。
  6.渲染得到的html页面,呈献给用户。
     如果觉得理解不了,可以先跳过,等看完全篇文章再回看这个问题,就容易理解很多。
     首先要了解两个概念,客户端和服务器,客户端通俗理解就是用户(比如你手机上的浏览器),请求资源的一方,而服务器端就是存储网站信息的主机(比如百度公司的服务器),提供资源相应的一方。而http就是客户端和服务器之间进行交流的一个协议。计算机和网络设备之间进行通信,就必须使用双方都能够理解的信息进行交流,这种为了使双方顺利进行信息的通讯而制定的规范就是协议! 要想学习http,则还要简单了解一下tcp/ip协议,tcp/ip协议是许多协议组成的集合的总称,包括TCP, IP, HTTP, DNS,FTP,UDP,PPPoE,ICMP,SNMP,FDDI等协议,http是tcp/ip协议的一个子集,是tcp/ip协议族的一部分!由于tcp/ip协议族中有很多不同的协议,而这些协议所应用的领域又有很大的不同,所以,对不同领域的协议进行划分就显得很重要了,tcp/ip协议族将这些协议划分为4层,分别是:应用层,传输层,网络层,数据链路层。不同的层次分工也各有不同。
     应用层:应用层决定了向用户提供应用服务时通信的活动,包含的协议包括HTTP, DNS(Domain Name System,域名系统),FTP(File Transfer Protocol,文件传输协议)。
     传输层:传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。包括TCP(Transmission Control Protocol, 传输控制协议)和UDP( User Data Protocol, 用户数据报协议)。
     网络层(又称:网络互联层):网络层用来处理 在网络上流动的数据包。数据包是网络传输的最小数据单位,该层规定了通过怎样的传输路线到达对方计算机,并把数据包传给对方,当与对方计算机之间通过多台计算机或者网络设备进行传输时,网络层的作用就是在多条路中间选择一条传输路线。网络层最主要的就是IP协议(Internet Protocol)。
     数据链路层: 用来处理连接网络的硬件部分,包括控制操作系统,硬件的设备驱动,网卡,光纤等肉眼可见的部分,硬件范畴都属于数据链路层。
     
  配图(tcp/ip分层结构图)
     在利用tcp/ip协议族通讯的时候,会按分层的顺序走,客户端从上往下,接收端从下往上,以此完成一次通讯!通俗点理解就是,在京东购物下单,发送用户的请求(应用层,http发送请求),仓库打包物品(传输层,tcp将大数据分割成报文段,准确可靠的把信息传递),快递装车,途径各个中转中心,发往全国各地(网络层,ip协议,通过目标地址,选择线路),快递小哥派送物品(数据链路层)。
     知道这些显然还不够,与http有关的协议主要有TCP,IP,DNS。
     DNS属于应用层,有时候输入域名(给人看的)或者一串数字(给计算机看的)组成的ip地址都能够访问同一个网站,这是因为域名是方便记忆,但是计算机看不懂,计算机只能看懂ip地址,所以DNS就是为了将域名和ip地址进行转换而生的。输入网址后,第一件事就是利用DNS将域名转换为ip地址。
     TCP协议属于传输层,将http的大块请求数据进行分解,拆成报文段( segment)为单位的数据包进行管理,这样可以方便传输。tcp有强迫症,将信息告诉他人后,他还不放心,需要再次确认才能够放心,所以tcp传递是靠谱,准确的传递,整个过程就像:
          小A:我给你说点事,XXXXXXXXXXXXXXXX,你可别给他人说!收到请回复!(第一次握手)(发送SYN数据包)
          小B:好的,收到了。(第二次握手)(回复SYN/ACK数据包)
          小A:嗯,我就是确认一下!(第三次握手)(发送ACK数据包)
     这就是大名鼎鼎的三次握手,如果中间莫名中断,tcp协议会再次以相同的顺序发送相同的数据包。保证了通信的可靠性。
     IP协议属于网络层,主要负责数据传输,把数据包传递给对方,要想传递给对方,则需要知道对方的IP地址或MAC地址,IP地址指明了节点被分配到的地址,而MAC地址是指网卡所属的固定地址,IP地址能够和MAC地址进行配对,IP地址能够更换,而MAC地址是固定不变的!IP间的通讯依赖MAC地址,但是,通信双方在一个局域网内的情况是很少的,所以说大部分的通信都是需要中间的设备进行中转的,根据下一个中转设备的MAC地址才能够搜索下一个中转目标。采用ARP协议(Address Resolution Protocol),解析通信方的ip地址,反查出MAC地址。
  未完,待续!

学习ps-初识photoshop

PhotoShop最新版是CC,是把标准版和扩展板合在一起了。下载地址:http//www.Adobe.com/cn或者http//shop.edu.cn。A区常用工具区;B区是工具辅助区,对A区选择的工具进行细节或参数调整;C区是调板区,对画板内对象进行高阶操作(样式、... 查看详情

python学习之路初识xml

importrequestsfromxml.etreeimportElementTreeasETr=requests.get(‘http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=577800103‘)re=r.textr1=ET.XML(re)print(r1.text)  查看详情

初识http协议

简单了解HTTP协议相关内容。 arp协议IP能够通过arp协议解析出mac地址。-----------------------------------------------------------------------通信流程http协议生成针对目标web服务器的http请求报文收到后处理报文 tcp协议将http报文请求按序... 查看详情

初识https

初识HTTPSHTTPS也被叫做“基于TLS的HTTP,基于SSL的HTTP,HTTP安全“,它是一个在Internet上广泛使用的计算机网络安全通信协议。即HTTPS是HTTP的安全版本,在了解HTTPS为何安全之前,那么我们首先应该要知道HTTP为什么不安全。HTTP... 查看详情

初识http

HTTP是现代全球因特网中使用的公共语言。Web浏览器、服务器和相关的Web应用程序都是通过HTTP相互通信的。本篇简单介绍Web应用程序是如何使用HTTP进行通信的。主要介绍以下内容:1.Web客户端与服务器是如何通信的;Web服务器:... 查看详情

http初识

HTTP概念:超文本传输协议,是一种通信协议,它允许将超文本标记语言html文档从web服务器传送到客户端的浏览器。是一个应用层协议,承载与TCP之上;有请求和响应构成;协议:两台计算机进行通信,所遵循的规定或规则。TCP/... 查看详情

spark学习spark初识

一、官网介绍1、什么是Spark官网地址:http://spark.apache.org/ApacheSpark™是用于大规模数据处理的统一分析引擎。从右侧最后一条新闻看,Spark也用于AI人工智能spark是一个实现快速通用的集群计算平台。它是由加州大学伯克利分校... 查看详情

初识设计模式解析

学习设计模式源自:http://blog.csdn.net/bboyfeiyu?viewmode=contents以及与之相关的书籍:《Android源码设计模式---解析与实战》优秀的思想、架构、设计模式:Android是一个开源的系统,很多优秀的思想、架构、设计模式必然在它的源码中... 查看详情

scala学习之路spark初识

一、官网介绍官网地址:http://spark.apache.org/ApacheSpark™是用于大规模数据处理的统一分析引擎。从右侧最后一条新闻看,Spark也用于AI人工智能spark是一个实现快速通用的集群计算平台。它是由加州大学伯克利分校AMP实验室开发... 查看详情

初识node.js丨http模块

一、http模块1.1什么是http模块回顾:什么是客户端、什么是服务器?在网络节点中,负责消费资源的电脑,叫做客户端;负责对外提供网络资源的电脑,叫做服务器。http模块是Node.js官方提供的、用来创建we... 查看详情

puppet初识

【puppet初识】学习目录 领导说saltstack太慢机器量一旦上来,saltstack就力不从心,所以要将saltstack转向puppet。【安装背景】系统centos6.5软件地址:http://downloads.puppetlabs.com/puppet/master:192.168.100.10agent:192.168.100.13因为puppet对ca证书的... 查看详情

django学习手册-初识自定义分页(代码片段)

核心:<ahref=‘http://127.0.0.1:8000/index-%s‘>%s<a> 自定义分页1.前端处理字符  后端的字符  returnrender(request,"index.html","l传到前端的数据":list)  传到前端的数据|safe 2.后端处理字符  导入处理的模块fromdja... 查看详情

1初识socket

经过近一个半月的学习我们已经度过了python基础的阶段,今天我们开始学习python网络编程,没有难以理解的逻辑,更注重的是记忆。 对网络协议和基础没有概念的可以在阅读本文前预习计算机基础3、网络协议:http://www.cnblog... 查看详情

初识idea

http://blog.csdn.net/bitcarmanlee/article/details/54951589http://blog.csdn.net/haishu_zheng/article/details/50265371破解:选择菜单Help->Register->Licenseserver,填上http://idea.iteblog.com/key.php,点击Activ 查看详情

java注解:初识java注解

参考:http://www.cnblogs.com/skywang12345/p/3344137.html   http://www.cnblogs.com/taoxiaoji/archive/2011/01/19/1939651.html    http://blog.csdn.net/tigerdsh/article/details/8848890   http://www 查看详情

初识thebattleofpolytopia

1.首先了解了一下《文明5-美丽新文明》视频介绍网址:http://list.youku.com/albumlist/show?id=19481409&ascending=1&page=12.安装OpenGL并做了测试:参考书籍:《OpenGL编程指南》库的配置:http://blog.csdn.net/u012935650/article/details/48090315http 查看详情

http2协议初识

参考技术A RFC:https://tools.ietf.org/html/rfc7540RFC中英文对照:https://github.com/fex-team/http2-spec/blob/master/HTTP2%E4%B8%AD%E8%8B%B1%E5%AF%B9%E7%85%A7%E7%89%88(06-29).mdO'Reilly:https://hpbn.co/http2/SPDY:http://www.chromium.org/spdy/随着Web应用日渐广泛,复杂... 查看详情

vue.js初识

vue.js安装官网:http://cn.vuejs.org/ 官方安装介绍:http://cn.vuejs.org/v2/guide/installation.htmlnpm安装参考文章:http://www.cnblogs.com/shhnwangjian/p/6559732.html基于网络原因,建议将npm的注册表源设置为国内的镜像,可以大幅提升安装速度。本... 查看详情