计算机与网络设备要相互通讯,双方就必须基于相同的方法。好比如何探到通讯目标,由哪一边先发起通讯,会用什么语言进行通讯,怎样结束等等,规则事先都须要肯定下来,不一样的硬件和操做系统之间的通讯都须要这样一种规则,而这种规则称为协议。web
分层管理:应用层、传输层、网络层、数据链路层浏览器
应用层:安全
决定了向用户提供应用服务时通讯的活动,好比:FTP(File Transfer Protocol 文件传输协议)和 DNS(Domain Name System 域名系统)和 HTTP(Hyper Text Transfer Protocol 超文本传输协议)。服务器
传输层:用于提供处于网络链接中的两台计算机之间的数据传输,在传输层中有两个性质不一样的协议,TCP(Transmission Control Protocol 传输控制协议)和 UDP(User Data Protocol 用户数据报协议)。网络
网络层:在众多的选项内选择一条传输路线,用来处理在网上流动的数据包,数据包是网络传输的最小数据单位,该层规定了怎样的路径到达对方的计算机,并把数据包传送给对方。tcp
数据链路层:又名网络接口层,用来处理链接网络的硬件部分,包括控制操做系统,硬件的设备驱动、NIC(Network Interface Card 网络适配器或者网卡),硬件上的范畴均在链路层的做用范围内。post
TCP/IP:是互联网相关的各种协议的总称。编码
TCP位于传输层,提供可靠的字节流服务,可以把数据准确的传送给对方,它采用了三次握手的策略,tcp把数据发送出去以后,会向对方肯定是否发送成功。握手过程当中使用了tcp标志(flag)——SYN(synchronize)和ACK(acknowledgement)。发送端首先发送一个带SYN标志的数据包给对方,接收端接收后,回传一个带有SYN/ACK 标志的数据包以示传达确认信息,最后,发送端再回传一个ACK标志的数据包,表明握手结束。加密
使用ARP(Address Resolution Protocol)协议凭借MAC地址进行通讯spa
IP(Internet Protocol 网际协议)位于网络层,IP协议的做用就是把数据包发送给对方,要保证是否发送到对方那里,须要知足两个重要的条件,IP地址和MAC(Media Access Control Address)地址。IP地址指明了节点被分配到的地址,MAC地址是网卡所属的固定地址,IP地址和MAC地址进行配对,IP地址可变换,MAC地址基本上不会更改.IP间的通讯依赖MAC地址,一般是通过多台计算机和网络设备中转才能发送给对方,在中转的过程当中会利用下一站中转设备的MAC地址来搜索下一个中转目标,这时会采用ARP(Address Resolution Protocol 解析地址协议),根据通讯方的IP地址就能够反查出对应的MAC地址。
负责域名解析的DNS(Domain Name System)服务
DNS服务和HTTP协议同样位于应用层,它提供域名到IP地址之间的解析服务,经过域名查找IP地址,或逆向从IP地址反查域名的服务。
HTTP协议,用于客户端和服务端之间的通讯
请求访问文本和图像等资源为:客户端
提供资源响应的为:服务端
两台计算机之间使用HTTP协议进行通讯时,在一条通讯线上一定有一端为客户端,一端为服务端,HTTP协议规定,先从客户端创建通讯服务端在没有接收到请求以前是不会发送响应的。
1)客户端请求:由客户端发送来触发一个服务器上的动做;
请求报文:请求方法、请求URL、协议版本、请求首部字段、内容实体;
Http请求的起始行
包含三个要素:
* 一个Http方法,一个动词像(Get、Put、或者post)或者一个名词像(Head、options),描述要执行的动做;
* 请求目标(Request target),一般是一个URL ,或者是协议、端口和域名的绝对路径,一般以请求的环境为特征;
* Http 版本(Http version),定义了剩余报文的结构,做为对指望的响应版本的指示符;
Http请求的Headers
在超文本传输协议( Hypertext Transfer Protocol ,HTTP)的请求和响应消息中,协议头部分的那些组件。HTTP消息头用来准确描述正在获取的资源、服务器或者客户端的行为,定义了HTTP事务中的具体操做参数。HTTP消息头
,以明文字符串格式传送,是以冒号分隔的键/值对,如:
Accept 可接受的内容类型
Accept-Language 语言
Connection链接状态
Host 请求的域名(这里我设置的是请求本地,固然,关于域名,就是所谓的URL)
User-Agent 浏览器端浏览器型号和版本
Accept-Encoding 可接受的压缩类型 gzip,deflate
请求的Body
不是全部的请求都有一个body,例如获取资源的请求。Get、Head、Delete、Options,一般它们不须要Body。
请求正文中能够包含客户提交的查询字符串信息:
username=jinqiao&password=1234
2)服务端对请求作出的回应;
响应报文:协议版本、状态码、解释状态码缘由短语、可选的响应首部字段、实体主体;
响应的状态行:
* 协议版本,一般为:Http/1.1
* 状态码(status code),表示请求成功或是失败
* 状态文本,描述状态码
第一个数字有五种可能的取值:
- 1xx: 指示信息—表示请求已接收,继续处理。
- 2xx: 成功—表示请求已经被成功接收、理解、接受。
- 3xx: 重定向—要完成请求必须进行更进一步的操做。
- 4xx: 客户端错误—请求有语法错误或请求没法实现。
- 5xx: 服务器端错误—服务器未能实现合法的请求。
状态代码 状态描述
200 OK
说明:客户端请求成功
400 Bad Request
说明:因为客户端请求有语法错误,不能被服务器所理解。
401 Unauthonzed
说明:请求未经受权。这个状态代码必须和WWW-Authenticate报头域一块儿使用
403 Forbidden
说明:服务器收到请求,可是拒绝提供服务。服务器一般会在响应正文中给出不提供服务的缘由
404 Not Found
说明:请求的资源不存在,例如,输入了错误的URL。
500 Internal Server Error
说明:服务器发生不可预期的错误,致使没法完成客户端的请求。
503 Service Unavailable
说明:服务器当前不可以处理客户端的请求,在一段时间以后,服务器可能会恢复正常。
响应的Headers
Location:响应报头域用于重定向接受者到一个新的位置。
Server:响应报头域包含了服务器用来处理请求的软件信息。它和User-Agent请求报头域是相对应的,前者发送服务器端软件的信息,后者发送客户 端软件(浏览器)和操做系统的信息。
Content-Encoding:实体报头域被使用做媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容编码,于是要得到Content- Type报头域中所引用的媒体类型,必须采用相应的解码机制。
Content-Language:实体报头域描述了资源所用的天然语言。Content-Language容许用户遵守自身的首选语言来识别和区分实体。
Content-Length:实体报头域用于指明正文的长度,以字节方式存储的十进制数字来表示,也就是一个数字字符占一个字节,用其对应的ASCII码存储传输。要注意的是:这个长度仅仅是表示实体正文的长度,没有包括实体报头的长度。
Content-Type:实体报头域用语指发送给接收者的实体正文的媒体类型。
Last-Modified:实体报头域用于指示资源最后的修改日期及时间。
Expires:实体报头域给出响应过时的日期和时间。必须是RFC 1123中的日期格式,例如:Expires: Thu, 15 Sep 2005 16:00:00 GMT
响应的Body
响应体就是响应的消息体,若是是纯数据就是返回纯数据,若是请求的是HTML页面,那么返回的就是HTML代码,若是是JS就是JS代码
URI (Uniform Resource Identifier)定位资源
HTTP 协议使用URL定位互联网上的资源,由于URI 的特定功能,在互联网上任意位置的资源都能访问到。当客户端请求访问资源而发送请求时,URI须要将做为请求报文中的请求URI包含在内,指定请求URI的方式有不少;若是不是访问特定的资源而是对服务器自己发起请求,能够用一个*来代替请求URI。
GET:获取资源
GET方法用来请求访问已被URI识别的资源,指定的资源经服务端解析后返回响应内容,若是请求的的资源是文本,那就保持原样返回;若是是想CGL(Common Gateway Interface 通用网关接口)那样的程序,则返回通过执行后的输出结果。
POST:传输实体主体
虽然共GET也能够传输实体主体,点通常不会用GET方法进行传输,而是用POST方法,Post与get 类似,可是POST的主要目的并非获取响应的主体内容。
PUT:传输文件
PUT用来传输文件,就像FTP协议的文件上传同样,要求在请求报文的主体中包含文件内容,而后保存在请求URI指定的位置。PUT方法自身不带验证机制,任何人均可以上传文件,存在安全性问题,通常不多用到PUT方法。
HEAD:得到报文首部
HEAD方法和DET方法同样,只是不反悔报文主体部分,用于确认URI的有效性及资源更新的日期时间等。
DELETE:删除文件
与PUT相反的方法,DELETE方法 按请求URI删除指定的资源,DELETE方法自己和PUT方法同样不带验证机制,通常不多人使用。
OPTIONS:询问支持的方法
用来查询针对请求URI指定的资源支持的方法。
TRACE:追踪路径
TRACE方法是让web服务端将以前的请求通讯还回给客户端的方法。发送请求时,在MAX-Forwarrds 首部字段中填入数值,每通过一个服务端就将该数字-1,当数值当好减到0时,就中止继续传输,最后接受的请求的服务器端则返回状态码200 ok的响应。客户端经过TRACE方法能够查询发送出去的请求是怎样被加工修改/篡改的,请求想要连接到源目标服务器可能会经过代理中转,TRACE方法就是用来确认链接过程当中发生的一系列操做,通常不怎么经常使用,由于它容易引起(Cross-Site Tracing 跨站追踪)攻击,因此不经常使用。
CONNECT:要求用隧道协议链接代理
在与代理服务器通讯时创建隧道,实现隧道协议进行TCP通讯,主要使用:SSL(Secure Sockets Layer 安全套接层)和 TLS(Transport Layer Security 传输层安全)协议把通讯内容加密后通过网络隧道传输