**数据链路层(Data Link):**负责在物理层的传输介质上传送数据帧,并在源主机和目的主机之间建立逻辑链路,定义了电信号的分组方式,规定电信号多少位一组,每组代表什么,这一层还提供了对传输数据的检测和传输数据错误的纠正以确保数据的可靠传输,例如:Wi-Fi(IEEE 802.11)、ethernet(以太网)、FDDI(Fiber Distributed Data Interface,光纤分布式数据接口)等;
**网络层(Network):**负责在多个主机之间传送数据包,并为分组交换提供路由选择功能,基本数据单位为 IP 数据报,主要协议:IP协议(Internet Protocol,因特网互联协议)、 ICMP(Internet Control Message Protocol,因特网控制报文协议)、IGMP(Internet Group Management Protocol,Internet 组管理协议)、ARP(Address Resolution Protocol,地址解析协议)等;
**传输层(Transport):**负责在源主机和目的主机之间的端到端的数据传输,并为上层协议提供可靠的数据传输服务,主要协议:TCP 协议(Transmission Control Protocol,传输控制协议)、UDP 协议(User Datagram Protocol,用户数据报协议);
**会话层(Session):**负责封装调用 TCP,会话层建立和管理应用程序之间的通信,封装了调用 TCP 去打包,然后调用 IP 协议去找路由等操作;
**应用层(Application):**负责向用户提供网络服务,包括文件传输、电子邮件、远程登录等,主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。
HTTP 发展史
HTTP 协议和 HTTPS 协议
HTTP(Hypertext Transfer Protocol)中文名为超文本传输协议,其作用是把超文本数据从网络传输到本地浏览器,能够高效而准确地传输超文本文档。HTTP 是由万维网协会(World Wide Web Consortium)和 Internet 工作小组 IETF(Interner Engineering Task Force)合作制定的规范,目前被广泛使用的是 HTTP 1.1 版本,如今也有不少网站支持 HTTP 2.0 版本。
HTTP 协议的特点:
最为常见的请求方法是 GET 和 POST,在浏览器地址栏输入一个 URL,按下回车,即发起了一个 GET 请求,请求的参数会直接包含到 URL 里;POST 请求大多在提交表单时发起,例如登录,输入用户名和密码,点击登录即发起一个 POST 请求,其数据通常以表单的形式传输,而不会体现在 URL 中,GET 和 POST 请求方法区别如下:
GET 请求中的参数包含在 URL 里,数据可以在 URL 中看到;而 POST 请求的 URL 不会包含这些数据,数据都是通过表单形式传输的,会包含在函数体中;
GET 请求提交的数据最多只有 1024 字节,POST 方式则没有限制;
GET 请求是不安全的,因为在传输过程中,参数数据直接暴露在 URL 上,所以不能用来传递敏感信息;
GET 请求参数会完整的保留在浏览器的历史记录中,POST 请求的参数不会保留;
GET 请求在浏览器回退的时候是无害的,POST 请求会再次提交数据;
GET 请求在浏览器中可以被主动 cache(缓存),而 POST 请求不会,可以手动设置;
GET 请求产生的 URL 地址是可以被 bookmark(添加书签)的,POST 请求不可以;
GET 请求只允许 ASCII 码,POST 请求没有限制,允许二进制数据;
GET 请求的执行效率比 POST 请求好;
对于 GET 请求,浏览器会把 http header 和 data 一起发送出去,服务器响应200,请求成功;
对于POST请求,浏览器先发送 header,服务器会响应100(已经收到请求的第一部分,正在等待其余部分),浏览器再次发送 data,服务器返回200,请求成功;
简而言之:GET 产生一个 TCP 数据包,POST 产生两个 TCP 数据包,不过并不是所有浏览器都会在 POST 中发送两次包,Firefox(火狐)就只发送一次;