http请求和响应、TCP网络五层架构等基础知识
HTTP基础知识
http协议的特点:
基于tcp/ip协议
默认端口号为80
请求与响应一一对应
每次请求相互独立,是无状态协议(这也是为什么需要cookie)
HTTP常用有八种请求方式,常用get和post
get请求:请求参数在url地址中,url有长度限制;get方式只能传输字符型的数据
post请求:请求参数在请求体中,无大小限制;post方式能传输字符和字节型数据(当你想要上传一张图片或音乐必须使用post方式)
GET产生一个数据包,POST产生两个数据包。对于GET请求,浏览器会把http header和data一并发出去,服务器相应200(返回数据)。而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok。
响应状态码:服务器告诉浏览器本次请求和响应的状态
1×× :服务器接收浏览器消息未完成,发送1××状态码
2×× :成功,200
3×× :重定向,302,,304
4×× :客户端错误,404(没有找到对应资源),405(请求方法不被允许)
5×× :服务器错误,500(服务器内部出现异常)
X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。xff 是http的拓展头部,作用是使Web服务器获取访问用户的IP真实地址(可伪造)。由于很多用户通过代理服务器进行访问,服务器只能获取代理服务器的IP地址,而xff的作用在于记录用户的真实IP,以及代理服务器的IP。格式为:X-Forwarded-For: 本机IP, 代理1IP, 代理2IP, 代理2IP
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。referer 是http的拓展头部,作用是记录当前请求页面的来源页面的地址。服务器使用referer确认访问来源,如果referer内容不符合要求,服务器可以拦截或者重定向请求。
TCP网络五层架构
分层好处:
1、各层独立:限制了依赖关系的范围,各层之间使用标准化的接口,各层不需要知道上下层是如何工作的,增加或者修改一个应用层协议不会影响传输层协议
2、灵活性更好:比如路由器不需要应用层和传输层,分层后路由器就可以只用加载更少的几个协议层
3、易于测试和维护:提高了可测试性,可以独立的测试特定层,某一层有了更好的实现可以整体替换掉
4、能促进标准化:每一层之策清楚,方便标准化
网络相关协议基础知识
1、TCP/IP是互联网相关的各类协议族的总称:IEEE 802.3、TCP、UDP、HTTP、DNS、FTP、IP、FDDI、ICMP、SNMP、PPPoE
2、FTP(文件传输协议)、DNS(域名系统)、HTTP位于应用层
3、在传输层有两个不同性质的协议:TCP(传输控制协议)和UDP(用户数据报协议)
4、IP网际协议位于网络层,几乎所有使用网络的系统都会用到IP协议。可能有人会把“IP”和“IP地址”弄混,“IP”其实是一种协议的名称。IP协议的作用是把各种数据包传送给对方。而要确保确实送达到对方那里,则需要满足各类条件,其中两个重要的条件是IP地址和MAC地址。
IP地址是指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可变换,MAC地址基本上不会更改。(一般电脑厂商可根据今年印了多少MAC地址,判断今年生产了多少台电脑)。
IP地址间的通信依赖MAC地址。在网络上,通信双方在同一局域网(LAN)下情况很少,通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标。这时会采用ARP协议。ARP协议是一种用于解析地址的协议,根据通信方的IP地址就可以查出对应的MAC地址
5、TCP位于传输层,提供可靠的字节流服务。字节流服务是指为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。TCP为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达对方
为了准确无误的将数据送达目标处,TCP协议采用了三次握手策略。用TCP协议把数据包发送出去后,TCP不会对传送后的情况置之不理,他一定会向对方确认是否成功送达。握手过程使用了TCP的标志——SYN(synchronize)和ACK(acknowledgement)。发送端首先发送一个带SYN标志的数据包给对方,接收端接收 后,回传一个带有SYN/ACK标志的数据包以表示传达确认信息。最后,发送端再回传一次带有ACK标志的数据包,代表“握手”结束
若握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。
6、DNS位于应用层,它提供域名到IP地址之间的解析服务。计算机既可以被赋予IP地址也可以被赋予主机名和域名。比如:www.hackr.jp
用户通常使用主机名或域名来访问对方的计算机,而不是直接通过IP地址访问。因为与IP地址的一组纯数字相比,用字母配合数字的表示形式更符合人类记忆习惯。但计算机更擅长处理一长串数字,所以DNS协议就是提供了通过域名查询IP地址,或逆向从IP地址反查域名的协议
7、整个流程如图
我是跟着《图解HTTP》和这个视频(这是个超链接)学习的这部分知识,我觉得我记录的每个知识点都是比较重要的知识点