图解HTTP学习笔记

TCP/IP

TCP/IP分为应用层,传输层,网络层和链路层。

应用层:

应用层定义了运行在不同端系统上的应用程序进程如何相互传递报文。
包含HTTP协议,FTP协议,SMTP协议,SNMP协议,Telnet协议以及DNS服务。

传输层:

传输层提供处于网络连接中的两台计算机之间的数据传输。包括协议TCP以及UDP。

网络层:

网络层负责处理数据包。规定了通过怎样的途径传送数据包(遵守IP协议)。

链路层:

链路层指代连接网络的硬件部分。

在TCP/IP的通信数据流中,数据从客户端到服务器要经过的过程如下:
HTTP客户端(应用层)– TCP(传输层) – IP(网络层) – 物理网络(链路层) 之后再倒过来传到服务器端的HTTP服务器之中。

解读与HTTP密切相关的协议

在http生成目标Web服务器的HTTP请求报文之后,TCP协议将HTTP请求报文分割成报文段,按序号分成多个报文段后经过三次握手确保可靠传输。之后IP协议搜索到对方地址,一边中转一边传送。

负责传输的IP协议

IP(Internet Protocol)协议位于网络层。几乎所有使用网络的系统都会用IP协议。主要作用是将各种数据包传送给对方。为了确保传送数据需要满足各种条件,其中最重要的两个是IP地址和MAC地址。

IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以更换,但MAC地址基本不会改变。

IP间的通信依赖MAC地址,利用ARP协议(Address Resolution Protocol) 可以解析地址,根据通信方IP地址反查出对应的MAC地址。

确保可靠性的TCP协议

TCP协议这一层会把大数据分割传送。为了确保数据准确到达,采取三次握手策略。

三次握手:发送端首先发送一个带SYN标志的数据包给对方。对方接收之后回传一个带有SYN/ACK标志的数据包表示确认。最后发送方再回传一个带ACK标志的数据包表示握手结束。若过程中出现问题中断,TCP协议会再次以相同顺序发送数据。

负责域名解析的DNS服务

DNS协议提供域名查找IP地址,或者通过IP地址逆向反查域名的服务。

URI和URL

URI(Uniform Resource Identifier),统一资源标识符。

URL(Uniform Resource Locator),统一资源定位符。

URI用字符串标识某一互联网资源,ULR则表示资源的地点,是URI的子集。

一个绝对URI格式如下: http://user:pass@www.shuhai.com:80/document/hello.html?uid=2#ch1

http是协议方案,user:pass是从服务器端获取信息需要的登录信息(可选项),后面的网址是服务器地址,:80为端口号,后面的路径是服务器文件路径,uid=2为查询字符串(可选),最后的ch1为片段标识符(可选)

HTTP是不保存状态的协议

HTTP是无状态协议,为了管理状态引入了COOKIE技术。

HTTP常见方法:GET,POST,PUT,HEAD,DELETE

HTTP1.1加入:OPTIONS,TRACE,CONNECT

常见状态码:200 成功,3XX 各种重定向,如302临时重定向,4XX 客户端错误,如404服务器找不到请求资源,5XX服务器错误

HTTP报文

报文分为首部和主体两部分,首部包含客户端服务器处理时候的关键信息,主体则包含用户资源信息。

HTTPS

HTTP的不足:通信使用明文,内容可能被窃听。不验证通信方身份,可能被伪装,无法证明报文完整性,可能被篡改。

由于他的不足于是有了HTTPS,HTTPS = HTTP + 加密 + 认证 + 完整性保护。HTTPS并非新协议,只是通信接口部分用SSL和TLS代替而已。

针对WEB的攻击技术

跨站脚本攻击(XSS)指利用嵌入脚本骗取用户信息,窃取COOKIE值发送恶意请求的行为。解决方法:对输入数据进行再编码,将其转义过滤后再输出。

SQL注入攻击指通过非法SQL窃取数据库数据的行为。解决方法:不要动态拼接SQL字符串,跟防止XSS攻击一样,尽量过滤用户输入数据。