OSI 七层
1.应用层 浏览器输入一个域名,首先在这一层进行 DNS 解析,将域名解析为 IP 这一层有的协议有:HTTP,SNMP,FTP,DNS,Gateway,tftp,telnet,smtp 等等在 TCP 基础上搭建的通信协议 2.表示层 协议和应用:ebcdic,ascii,jpeg,tiff,midi,mpeg 3.会话层 管理浏览器多个会话,防止不同会话产生混乱 协议和应用:nfs,sql,rpc,x-windows,netbios SESSION 认证发生在这一层 4.传输层(Transport) 传输建立的 TCP 三次握手和传输断开的四次挥手发生在这一层 协议和应用:tcp,udp,spx 值得一提的是,此层的 TCP 和 UDP 协议都有相互对应的应用层协议 UDP 对应的应用层协议: DNS(域名解析:53) SNMP(简单网络管理协议:161 端口接收信息,162 端口 Trap 采集信息) TFTP(简单文件传输协议:69) NTP(网络时间协议:123) 此层数据单位:段 segment TCP 的叫做 Segment(数据段); UDP 的叫做 Datagram。(数据报) TCP 三次握手及四次挥手在这一层发生 三次握手 第一次握手:建立连接时,客户端发送 syn 包(syn=j)到服务器,并进入 SYN_SEND 状态,等待服务器 确认; 第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一个 SYN 包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态; 第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手。 四次挥手 由于 TCP 连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个 FIN 来终止这个方向的连接。收到一个 FIN 只意味着这一方向上没有数据流动,一个 TCP 连接在收到一个 FIN 后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。 (1)客户端 A 发送一个 FIN,用来关闭客户 A 到服务器 B 的数据传送(报文段 4)。 (2)服务器 B 收到这个 FIN,它发回一个 ACK,确认序号为收到的序号加 1(报文段 5)。和 SYN 一样,一个 FIN 将占用一个序号。 (3)服务器 B 关闭与客户端 A 的连接,发送一个 FIN 给客户端 A(报文段 6)。 (4)客户端 A 发回 ACK 报文确认,并将确认序号设置为收到序号加 1(报文段 7)。 5.网络层(Network) 负责浏览器访问过程中的 IP 寻址,以及 arp 解析 此层数据单位:包 packet 协议和应用:ip,ipx,appletalk,icmp 6.数据链路层(Data Link) 在这一层用解析的 MAC 寻址 此层数据单位:帧 Frame 协议和应用:802.3、802.2、3ATM、HDLC、FRAME RELAY 7.物理层(Physical) 此层数据单位【比特流 Bit】 协议和应用:v.35,eia/tia 323
浏览器访问过程详解图
从另外一个角度谈浏览器的访问过程: 首先要明白数据经历了三层:表示层、业务逻辑层、数据访问层
- 在 web 浏览器中输入一个网址(此时是用户在表示层的操作),连接到网址所属的服务器
- 业务逻辑层的 web 服务器加载本地 index.php 文件,并将其解析
- 脚本文件指向数据访问层的 dbms,并执行相应的 sql 语句
- 数据访问层将 sql 语句的执行结果返回给业务逻辑层
- 业务逻辑层的 web 服务器将 web 页面封装成 HTML 页面返回给表示层
- 表示层解析此 html 页面,将其展示给用户
其中 SQL 注入发生在业务逻辑层