简单的了解网络协议
计算机与网络设备要相互通信,双方就必须基于相同的方法。比如如何探到通信目标,由哪一边先发起通信,会用什么语言进行通信,怎样结束等等,规则事先都需要确定下来,不同的硬件和操作系统之间的通信都需要这样一种规则,而这种规则称为协议。
分层管理:应用层、传输层、网络层、数据链路层
应用层:
决定了向用户提供应用服务时通信的活动,比如:FTP(File Transfer Protocol 文件传输协议)和 DNS(Domain Name System 域名系统)和 HTTP(Hyper Text Transfer Protocol 超文本传输协议)。
传输层:用于提供处于网络连接中的两台计算机之间的数据传输,在传输层中有两个性质不同的协议,TCP(Transmission Control Protocol 传输控制协议)和 UDP(User Data Protocol 用户数据报协议)。
网络层:在众多的选项内选择一条传输路线,用来处理在网上流动的数据包,数据包是网络传输的最小数据单位,该层规定了怎样的路径到达对方的计算机,并把数据包传送给对方。
数据链路层:又名网络接口层,用来处理连接网络的硬件部分,包括控制操作系统,硬件的设备驱动、NIC(Network Interface Card 网络适配器或者网卡),硬件上的范畴均在链路层的作用范围内。
TCP/IP:是互联网相关的各类协议的总称。
TCP位于传输层,提供可靠的字节流服务,能够把数据准确的传送给对方,它采用了三次握手的策略,tcp把数据发送出去之后,会向对方确定是否发送成功。握手过程中使用了tcp标志(flag)——SYN(synchronize)和ACK(acknowledgement)。发送端首先发送一个带SYN标志的数据包给对方,接收端接收后,回传一个带有SYN/ACK 标志的数据包以示传达确认信息,最后,发送端再回传一个ACK标志的数据包,代表握手结束。
使用ARP(Address Resolution Protocol)协议凭借MAC地址进行通信
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 传输层安全)协议把通信内容加密后经过网络隧道传输

浙公网安备 33010602011771号