1、OSI七层协议
各层之间的联系和作用稍后继续~~~
2、HTTP(超文本传输协议)
(1)、作用:HTTP协议定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
(2)、特点:HTTP本身是无连接的,虽然HTTP使用了TCP连接,但是通信的双方在交换HTTP报文之前不需要建立HTTP连接;HTTP本身是无状态的,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同,服务器并不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次,简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。
(3)、版本:HTTP/1.0主要缺点非持续连接,开销大(每个请求都要两倍RTT开销),浪费资源(每建立一次TCP连接都要分配缓存和变量);HTTP/1.1使用持续连接能够解决1.0问题;HTTP/2.0采用二进制格式(之前都采用文本格式),完全多路复用,使用报头压缩降低开销,让服务器可以将相应主动推送到客户端缓存中。
持续连接:万维网在发送响应后仍然在一段时间内保持这条连接,使同一个客户和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。
(4)、HTTP报文结构:请求报文和响应报文
(5)、HTTP请求方法:
GET和POST区别:目的性,get获取资源post传输实体主体;参数位置,get的参数在url上post的参数在实体主体中;安全性,get的参数在url上可见安全性差post实体主体不可见安全性好;参数数量,get的参数在url上数量不能过多post在实体主体中可以传输大量数据;字符集,get只支持ASCII字符容易出现中文乱码post支持标准字符集。
(6)、HTTP状态码都是三位数字的,分为5大类共33种:
记住:200 OK;204 No Content请求成功处理,但是返回的响应报文不包含实体的主体部分;301 Moved Permanently永久性重定向;302 Found临时性重定向(HTTP规定301/302下重定向不允许把post给成get,但是大多数浏览器都把这两个状态下的重定向post给成了get);304 Not Modified如果请求报文首部包含一些条件(if-math,if-modifiedsince)但是不满足条件,服务器会返回该状态码;307 Temporary Redirect临时重定向(不允许浏览器把post给成get);400 Bad Request请求报文中存在语法错误;404 Not Found;500 Internal Server Error服务器内部错误;503 Service Unavilable服务器无法处理请求。
(7)、HTTP常用字段
HTTP通用首部字段解析 、HTTP实体首部字段、HTTP请求首部字段、HTTP响应首部字段
(8)、Session和Cookie:HTTP无状态为了服务器能够记住用户身份产生了Cookie,服务器端通过set-Cookie来设置客户端的Cookie(服务端给客户端一个名字),客户端解决方案;Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上,客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。
(9)、HTTP缓存机制(web 性能优化的重要手段):
-
强缓存:缓存没过期直接使用;协商缓存:需要进行比较判断是否可以使用缓存
-
强缓存字段:响应首部字段中的Exprires(HTTP/1.0)和Cache-Control(HTTP/1.1)两个作用一样,都是返回资源有效期,不同的是后者选择更多,设置更细致,如果同时设置的话,后者优先级要高
-
协商缓存(字段都要配合Cache-Control使用):Last-Modified/If-Modified-Since标识这个响应资源的最后修改日期;Etag/If-None-Match资源在服务器的唯一标识(生成规则由服务器决定)
-
Etage生成规则:在Apache中,默认是对文件的索引节、大小和最后修改时间进行Hash后得到
-
Etag是服务器自动生成或者由开发者生成的对应资源在服务器端的唯一标识符,能够更加准确的控制缓存
(10)、HTTP缺点:通信使用明文不加密,内容可能被窃听;不验证通信方身份,可能遭伪装;无法验证报文完整性,可能被篡改;HTTP是单向的;HTTP一次连接中头部都是重复;HTTP不能压缩;
(11)、HTTPS四次握手(HTTP先和SSL通信,再由SSL和TCP通信):
对称加密、非对称加密、数字签名、ssl、HTTPS整套加密机制实现
(12)、Web页面请求过程
- 通过DNS解析出IP地址
- 浏览器和服务器建立TCP连接
- 浏览器发出命令(例如取文件)
- 服务器给出响应
- 释放TCP
3、TCP/UDP
(1)、TCP的三次握手(为什么是三次)
防止已失效的连接请求报文段突然又传送到了服务器端;建立连接后,TCP有个保活计时器,超过保活时间服务器就发送一个探测报文段,每隔几分钟发送一次,连续发送几个探测报文后仍无客户响应,关闭连接。
(2)、TCP的四次挥手(为什么四次和为什么等待2MSL)
- TCP是全双工的,它允许两个方向的数据传输被独立关闭,当主动发起关闭的一方关闭连接之后,TCP进入半关闭状态,对主动关闭报文的确认是为了快速告知主动方被动方已经知道,此时被动方不立即关闭连接是为了将缓冲中剩下的数据发送出去
- MSL最长报文段寿命;2MSL为了保证A发送的最后一个ACK报文段能够到达B;2MSL防止新连接中出现旧的连接请求报文段
(3)、TCP的可靠原理:停止等待协议;连续ARQ协议(滑动窗口协议);流量控制(两端);拥塞控制(网络);
(4)、TCP特点:面向连接;一对一通信;提供可靠交付服务;提供全双工通信;面向字节流;
(5)、UDP特点:无连接;一对一、一对多、多对一、多对多通信;尽最大努力交付;面向报文;首部开销小(只有四个字段)
(6)、TCP头部
4、IP
(1)、IP头部
(2)、IP地址
(3)、子网掩码能够方便地从目的IP地址中提出所要找的子网的网络地址;网络地址=子网掩码&已知IP地址