一、思考,当咱们在浏览器地址栏中输入地址,点击enter,浏览器就会反馈给咱们相应的页面数据,那么这个数据咱们是怎么获得的?web
web的界面是根据咱们输入的URL,浏览器从服务器端获取对应的文件资源等信息,而后显示在浏览器上面。浏览器
像这种经过发送请求获取服务器资源的web浏览器等,均可以称之为客户端(client)服务器
web使用http(超文本传输协议)协议做为规范,来完成从客户端到服务端等一系列的运做流程,而协议指的就是规则的约定,能够说,web是创建在http协议上进行通讯的网络
为了理解http,有必要简单介绍下tcp/ip协议族tcp
计算机与网络设备之间互相通讯,双方就必须基于一样的方法。好比:如何发现通讯目标、由谁发起通讯、使用什么语言通讯、怎么结束通讯都须要事先肯定,全部这些都须要一种规则,操作系统
这就是协议。协议中存在多种的内容;从电缆的规格到ip地址的选定方法,寻找异地用户的方法,创建通讯的顺序,以及web页面显示须要处理的步骤等等设计
像这样把与互联网相关联的协议集合起来统称为tcp/ip。dns
tcp/ip的分层接口
tcp/ip很重要的一个特色就是分层。按照层次分为如下四层:应用层,传输层,网络层和数据链路层进程
分层的好处:若是互联网只由一个协议统筹,那么某一地方出问题,总体都会出现问题,没法使用;分层后,只需替换出现问题的或者须要修改的便可,并且分层后针对具体的设计也变得更为简单
应用层:体系的最高层,应用进程间通讯交互的规则
tcp/ip协议族预存了各种通用的应用服务,好比:
ftp:文件传输协议
dns:域名系统协议
http:万维网应用协议
smtp:电子邮件协议
以上几种是经常使用的几种,还有不少其余的协议,感兴趣的能够找找其余专业的书籍看看
传输层:提供处于网络链接中的两台计算机间的数据传输,其中包括tcp和udp两种性质不一样的协议
tcp:传输控制协议,传输的单位为报文段,提供面向链接的,可靠的数据传输服务
udp:传输单位为用户数据报,它是尽最大努力的提供数据传输服务,不保证可靠性
网络层:又名网络链接层
用来处理在网络上流动的数据包(封装)。数据包是网络传输的最小数据单位。该层规定了经过怎样的路径到达对方计算机并把数据包传给对方
链路层:又名数据链路层,网络接口层
处理链接网络的硬件部分。好比控制操做系统、硬件的驱动、网络适配器、光钎等
数据的封装:
用户端发送一个请求,从应用层开始,一直到链路层,每一层都会被打上该层所属的首部信息;反之,接收端在层与层之间传输时,每通过一层会去掉该层的首部信息,这种作法叫作封装
与http密切相关的协议
IP协议:位于网络层,做用是把各类数据包传送给对方,而要准确的把数据传送给对方,就须要知足各种条件,其中有2个很重要的条件:ip地址和mac地址
ip地址相信有点基础的人都知道,就是节点被分配到的地址,mac地址则是指网卡所属的固定地址,ip和mac地址能够进行配对
ip间的通讯依赖于mac地址,在信息传输中,有时候因为中转太多,所以会采用ARP协议,这是个用来解析地址的协议,经过ip地址就能够反查出对应的mac地址
tcp协议:位于传输层,确保传输的可靠性
数据传输中为了传输方便,会将大块数据分割成报文段,而tcp协议能确认数据最终是否传送给对方
为了准确传输,传输中采用了三次握手策略(这种手段能够理解为屡次确认,来确保数据传输的可靠性)
dns协议:负责域名解析,位于应用层,提供域名到ip地址间的解析
经过域名查找ip地址,或者逆向从ip地址反查域名
URL和URI
URL:统一资源定位符:表示资源的地点,具体指向(门牌号)
URI:统一资源标识符:用字符串标识某些互联网资源(该门牌号的地方具体有什么资源)
URL是URI的子集
本文(转自老张)