一、网络协议基础内容
tcp/ip分层管理
应用层 -> 传输层 -> 网络层 -> 链路层
1.应用层:http协议、dns域解析
2.传输层:tcp或者udp (提供两台计算机之间的数据传输问题)
3.网络层:ip (选择传输路线)
4:链路层: 用来处理连接网络的硬件部分
tcp/ip信息传输流
1.通过tcp/ip协议族进行网络通信时,会通过分层顺序与对方通信
客户端:http客户端 <-> tcp <-> ip <-> 网络 <-> 网络 <-> ip <-> tcp <-> http服务端 :服务端
2.发送端在进行层与层之间传输数据时,每经过一层,必定会打上一个该层所属的首部信息。反之,接收端在层与层进行数据传输时,每·经过一层会把对应首部消除。
tcp三次握手
三次握手是由发送端发起的,发送数据前,发送端会给接受端发送一个确认消息,当接受端收到发送端的消息并且作出回应,发送端才开始数据传输。
dns域解析
发送端向dns服务发出请求,获取某个页面的ip地址,dns把地址返回给发送端,发送端拿到ip后向对应ip地址发出请求。
http协议通信流程
客户端:
http协议的职责:生成针对目标web服务器的http请求报文
tcp协议职责:为了方便通信,将http报文分割成报文段(按序号分为多个报文段)
路由器:
ip协议职责:搜索对方地址,一边中转一边传送
服务端:
tcp协议职责:从对方那里接收到报文,重组到达的报文
http协议的职责:对web服务器的请求的内容的处理
二、http协议
1.http的作用
用于客户端和服务端之间的通信,请求访问的一端称为客户端,提供资源访问的一端称为服务端。
2.无状态协议
http是一种不保存状态,即无状态协议。在调用过程中,对请求和响应都不做持久化处理。
优点:更快处理大量事物,确保协议可伸缩性
缺点:某些请求或者登陆状态需要保持状态
3.http的请求方法
get方法:主要用来获取资源,参数包含在url里可见,所以安全性比较差,浏览器对get方法的参数长度有限制
post方法:主要用来获取和传输资源,参数包含在请求体中,且参数长度比get大的多,对外不可见,且相对较为安全
put方法:向服务器提交数据,更新服务器资源
delete:删除服务器数据
head:获取报文首部
4.持久化连接
问题:在http最初的版本中,每进行一次http通信都会断开一次连接,因此当请求过多的时候,都会造成无谓的通信开销
解决:http/1.1 提出了持久连接概念
持久连接:持久连接的好处在于减少tcp连接的重复建立和断开所造成的额外开销,减轻了服务端的开销。另外减少开销的那部分时间,使http请求和响应能够更早的结束,这样web页面的响应速度也显著的提高了。
5.cookie
前面说过,Http是无状态的,通过cookie识别请求来源。
三、http报文
http包含请求和响应报文,通过依赖这两种报文来达到信息资源的请求和响应。
1.请求报文和响应报文
请求报文:
请求行:请求方法、协议名、版本号、请求url
请求头部
空行
请求体
响应报文:
状态行:协议吗、版本号、返回状态码
响应头部
空行
响应体
2.报文实例
四、首部分类
1.通用首部字段
请求报文和响应报文都会使用
2.请求首部字段
3.响应首部字段
4.实体首部字段
五、http状态码
状态码表示客户端请求返回的状态
状态码第一位指定响应类别,后两类无分类
状态码类别
常见状态码:
200:ok,请求成功,请求被正常处理。
204:请求成功,但是没有资源返回
301:永久性重定向
302:临时性重定向
403:服务器拒绝访问
404:无法找到请求资源
500:服务错误
六、http缓存处理
1.缓存服务器
缓存服务器是代理服务器的一种,当代理转发从服务器返回资源时,代理资源器会返回一份资源副本。
2.客户端缓存
缓存也可以存在客户端浏览器中,把客户端缓存又称为临时性网络文件。
3.缓存有效期
与网络服务器缓存一样,当判定缓存过期后,会向服务器确认资源有效性。若浏览器判断缓存失效,浏览器会再次请求新资源。
4.缓存相关设置
5.浏览器首次请求和再次请求的执行流程图
1.浏览器首次发送请求
2.浏览器再次发送请求
七、其他问题
1.get和post区别
get的请求参数包含在URL中,对外可见,所以安全性较差。post的请求参数包含在请求体中,对外不可见,相对来说较安全。
浏览器会主动缓存get请求的相关资源,但相对于post请求,浏览器不会主动缓存,除非主动缓存。
get请求的参数长度有限制,post没有。
get请求在浏览器回退时是无害的,但post会重新请求。
get请求的参数会被保存在浏览器历史记录中,post不会。
2.tcp和udp的区别
tcp是面向连接,udp是无连接的,即发送数据之前不需要建立连接。
tcp提供可靠的服务,即tcp连接传输的数据,无差错、不丢失,udp尽最大努力交付,但不保证数据可靠性。
tcp只能一对一,udp可以一对一、一对多、多对一。