一、概述
OSI分层(7层)
- 物理层、数据链路层、网络层、运输层、会话层、表示层、应用层
TCP/IP分层(4层)
- 网络接口层、网络层、运输层、应用层
五层协议(5层)
- 物理层、数据链路层、网络层、运输层、应用层
五层结构的概述
1.应用层:通过应用进程间的交互来完成特定网络应用
数据:报文
协议:HTTP, SMTP(邮件), FTP(文件传送)
2.运输层:向两个主机进程之间的通信提供通用的数据传输服务
数据:TCP:报文段,UDP:用户数据报
协议:TCP, UDP
3.网络层:为分组交换网上的不同主机提供通信服务
数据:数据包(Packet)或IP数据报
协议:IP
4.数据链路层:将比特组装成帧和点到点的传递
数据:帧(Frame)
协议:
5.物理层:通过媒介传输比特,确定机械及电气规范
数据:比特(Bit)
协议:
各层协议参考:各层协议
二、应用层
http协议
请求报文
- 常用的 HTTP 请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT
- GET:当客户端要从服务器中读取某个资源时,使用GET 方法。GET 方法要求服务器将URL 定位的资源放在响应报文的部分,回送给客户端,即向服务器请求某个资源。使用GET 方法时,请求参数和对应的值附加在 URL 后面,利用一个问号(“?”)代表URL 的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind
- POST:当客户端给服务器提供信息较多时可以使用POST 方法,POST 方法向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。GET 一般用于获取/查询资源信息,POST 会附带用户数据,一般用于更新资源信息。POST 方法将请求参数封装在HTTP 请求数据中,以名称/值的形式出现,可以传输大量数据
- 请求头部:请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
User-Agent:产生请求的浏览器类型;
Accept:客户端可识别的响应内容类型列表;星号 “ * ” 用于按范围将类型分组,用 “ / ” 指示可接受全部类型,用“ type/* ”指示可接受 type 类型的所有子类型;
Accept-Language:客户端可接受的自然语言;
Accept-Encoding:客户端可接受的编码压缩格式;
Accept-Charset:可接受的应答的字符集;
Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机;
connection:连接方式(close 或 keepalive);
Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie;
响应报文
状态码
状态码由三位数字组成,第一位数字表示响应的类型,常用的状态码有五大类如下所示:
- 1xx:表示服务器已接收了客户端请求,客户端可继续发送请求;
- 2xx:表示服务器已成功接收到请求并进行处理;
- 3xx:表示服务器要求客户端重定向;
- 4xx:表示客户端的请求有非