相对于OSI七层模型,TCP/IP四层模型更为简化,总结为应用层,传输层,网络层,数据链路层四层
简单来说,四层协议分别为:
协议 | ||
应用层 | DNS,URI,HTML,HTTP,SSL,SMTP,POP,IMAPTELNET,SSH,FTP,SNMP | 应用程序相关 |
传输层 | TCP,UDP,UDP-Lite,SCTP,DCCP | 操作系统内核负责 |
网络层 | ARP,IP,ICMP | |
数据链路层 | 网卡层 | 设备驱动程序及 网络接口负责 |
一.应用层
1.HTTP协议(主要协议)
HTTP(超文本传输协议) ,典型的应用层协议,也是目前最流行的应用层协议
其衍生出了封装SSL
协议的“安全版”:HTTPS
协议,相对于传统的HTTP
协议更为安全,但也是“相对的安全”
2.HTTP协议格式
2.1 HTTP请求格式
- 首行:[方法]+[URL]+[版本号] (协议版本号)
- 协议头Header:请求的属性,每一行都是一个键值对,键和值之间用 : 分隔, 每组属性之间用\n分隔,遇到空行表示Header结束
- Body正文:空行后面的内容都是body,Body允许为空字符串,如果Body存在,则在Header中会有一个Content-Length属性会标识Body的长度
2.2 HTTP响应格式
- 首行:[版本号]+[状态码}+[状态码解释]
- Header:请求的属性,冒号分隔的键值对, 每组属性之间用\n分隔,遇到空行表示Header结束
- Body:空行后面的内容都是body,Body允许为空字符串,如果Body存在,则在Header中会有一个Content-Length属性会标识 Body的长度;如果服务器返回了一个html页面那么html页面中的内容就是在body中
3.HTTP的方法
方法 | 说明 | 支持的HTTP协议版本 |
POST | 获取资源 | 1.0, 1.1 |
GET | 传输实体主体 | 1.0, 1.1 |
PUT | 传输文件 | 1.0, 1.1 |
HEAD | 获得报文首部 | 1.0, 1.1 |
DELETE | 删除文件 | 1.0, 1.1 |
OPTIONS | 询问支持的方法 | 1.1 |
TRACE | 追踪路径 | 1.1 |
CONNECT | 要求用隧道协议连接代理 | 1.1 |
LINK | 建立和资源之间的关系 | 1.0 |
UNLICK | 断开连接关系 | 1.0 |
其中最常见的有POST,GET方法
GET和POST方法的区别:
GET把数据放入query_string,POST把数据放入body里面来传输
4.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)-->超时 (坏的网关)
5.HTTP常见的Header
- Content-Type: 数据类型(text / html等)
- Content-Length: Body的长度
- Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
- User-Agent: 声明用户的操作系统和浏览器版本信息;
- referer: 当前页面是从哪个页面跳转过来的;
- location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
- Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能,浏览器存储数据的一种方式(客户端的概念) 身份标识session id内容都是由对应的程序员决定的,Session是服务器进行描述用户身份信息的方式(服务端的概念)