重点知识:
·理解应用层协议,学习HTTP协议
·理解传输层的作用和TCP的机制和特性
·理解网络层的作用和IP协议
·理解数据链路层的作用和ARP协议
·理解TCP/IP协议
·分析网络问题的工具和方法
应用层
最贴近于实际,解决日常需求的网络应用,就是在这一层,也是和用户最紧密的。
协议
协议是一种“约定”,而在计算机学科,一般而言,协议,就是网络协议的简称,网络协议是通信计算机双方必须遵守的一组约定,例如如何去建立连接,怎样去互相识别等等。只有遵守这个约定,计算机之间才能相互通信交流。他的三要素是:语法,语义,时序
先举一个简单的例子,例如一个网络版的计算器,他是怎么工作的呢?首先要由客户端将需要处理的数据发送给服务端,然后服务器获取到数据,进行运算,再把结果返回给客户端。而这个时候就需要一些约定,不能出现你发你的,我收我的,这样可能导致双方都得不到正确的处理。因此需要有约定:
约定一:
·客户端发送形如“1+1”的字符串,这个字符串有两个操作数,都是整形;
·两个数字之间有一个字符是运算符,运算符只能是+;
·数字和运算符之间没有空格;
约定二:
·定义一个结构体来表示我们需要交互的信息;
·发送数据时将这个结构体按照一个规则转换成字符串,接收到数据的时候在按照相同的规则把字符串转化为结构体;
·类似于这样的过程,我们称之为“序列化”和“反序列化”
HTTP协议
关于HTTP协议,百度词条上是这么说的:
超文本传输协议
(HTTP,HyperText Transfer Protocol)是
互联网
上应用最为广泛的一种
网络协议
。所有的
WWW
文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收
HTML
页面的方法。1960年美国人
Ted Nelson
构思了一种通过
计算机
处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和
互联网工程工作小组
(Internet Engineering Task Force )共同合作研究,最终发布了一系列的
RFC
,其中著名的RFC 2616定义了HTTP 1.1。
|
其实,这就是一种约定,是被定义好的,现成的可用的,被大家接受的协议,供我们参考使用。要认识HTTP,首先我们来认识一下URL;
urlencode和urlecode
在url里像/?:等等的字符,已经被url当做特殊意义理解了。因此这些字符不能随意出现。当出现这些字符,就会被转义,转义规则如下:
将需要转码的字符转为16进制,然后从右到左,取4位(不足四位直接处理),每两位做一位,前面加上%,编码成%XY格式。
HTTP协议格式
HTTP请求
·首行:[方法]+[url]+[版本]
·Header:请求的属性,冒号是分割的键值对;煤堆属性之间使用\n分割;遇到空行表示Header部分结束
·Body:空行后面的内容都是Body。Body允许为空字符串。如果Body存在,则在Header终会有一个Content-Length属性来标识Body的长度
HTTP响应
·首行:[版本号]+[状态码]+[状态码解释]
·Header:请求的属性,冒号分割的键值对;每组属性之间使用\n分割;遇到空行表示Header部分结束
·Body:空行后面的内容都是body,Body允许为空字符串。如果Body存在,则在Header中会有一个Content-Length属性来标识Body的长度。如果服务器返回了一个html页面,那么html页面内容就是在body中。
HTTP的方法
方法
|
说明
|
支持的HTTP协议版本
|
GET
|
获取资源
|
1.0、1.1
|
POST
|
传输实体主体
|
1.1、1.1
|
PUT
|
传输文件
|
1.1、1.1
|
HEAD
|
获得报文首部
|
1.1、1.1
|
DELETE
|
删除文件
|
1.1、1.1
|
OPTIONS
|
询问支持的方法
|
1.1
|
TRACE
|
追踪路径
|
1.1
|
CONNECT
|
采用隧道协议代理链接
|
1.1
|
LINK | 建立和资源之间的联系 |
1.0
|
UNLINE | 断开连接关系 | 1.0 |
其中最常用的就是GET和POST方法
HTTP的状态码
类别 | 原因短语 | |
1XX | informational(信息性状态码) | 接受的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
最常见的状态码,比如200(OK),404(Not Found),403(Forbidden),302(Redirect,重定向),504(Bad Gateway)
HTTP常见Header
·Content-Type: 数据类型(text/html)等
·Content-Length: Body的长度
·Host: 客户端告知服务器,所请求的资源是在哪个知己的哪个端口上;
·User-Agent: 声明用户的操作系统和浏览器版本信息
·referer: 当前页面是从哪个页面跳转过来的
·location: 搭配3XX状态码使用,告诉客户端接下来要去哪里访问
·Cookie: 用于在客户端储存少量信息,通常用于实现会话(session)的功能;