目录
6.7 HTTP 首部有哪些?分别介绍几个具体的首部字段(**)
一、概述
1.1 计算机网络最重要的功能
|- 连通
|- 共享
1.2 带宽和宽带的区别
|- 带宽:传输速度;
|- 宽带:在数字通信中通常指64kbit/s以上信号的带宽。
1.3 计算机网络体系结构
七层架构模型 | 五层模型 | TCP/IP模型 |
表示层 | 应用层 | 应用层 |
会话层 | ||
应用层 | ||
传输层 | 传输层 | 传输层 |
网络层 | 网络层 | 网络层 |
数据链路层 | 数据链路层 | 网络接口层 |
物理层 | 物理层 |
1.4 协议的三个要素
|- 语法、语义、同步;
|- 垂直服务,水平通信。
二、物理层
2.1 物理层作用
屏蔽各种物理设备的差异,为数据链路层提供服务。
2.2 奈奎斯特定理和香农定理
|- 理想低通信道下的极限数据传输率 = 2*W*log(V)
|- 信道的极限数据传输率 = W*log(1+S/N)
三、数据链路层
3.1 局域网
|- MAC 地址(18 + (64 - 1500)字节(Byte))
3.2 广域网
|- PPP 协议
|- HDLC 协议
四、网络层
4.1 网络层协议
|- 地址解析协议(ARP)
|- 动态主机配置协议(DHCP):基于 UDP
|- 网际控制报文协议(ICMP)
|- 网络地址转换协议(NAT)
4.2 路由协议
|- RIP(应用层协议,基于UDP)
|- OSPF
|- BGP(应用层协议,基于TCP)
4.3 IP协议
|- 首部固定长度:20 字节;
|- IP 数据报协议字段:6(TCP),17(UDP),89(OSPF),1(ICMP),2( IGMP);
|- MTU(最大传输单元):1500 字节。
五、运输层
5.1 TCP 和 UDP (**)
1、TCP报文格式
2、UDP报文格式
3、TCP 和 UDP 的区别和应用场景
TCP | UDP | |
首部大小 | 20字节 | 8字节 |
特点 | 面向字节流、面向连接的可靠交付 | 面向报文、无连接的、尽最大努力交付 |
通信 | 一对一 | 一对一,一对多,多对一和多对多 |
优势 | 无差错,不丢失,不重复,且按序到达 | 简单、传输快、具有较好的实时性 |
缺点 | 传输速度较慢 | 存在报文丢失 |
应用场景 | 电话、浏览器网页等等 | DNS 域名解析,实时游戏,视频 |
5.2 TCP 的三次握手(***)
1、三次握手详解
1)客户端向服务器端发送“请求连接报文”,进入SYN-SENT阶段,其中:
|- 标记位为SYN,表示“请求建立新连接”;
|- 序号为Seq=X。
2)服务器端接收到来自客户端的“请求连接报文”之后,并返回“确认报文”,进入SYN-RCVD阶段,其中:
|- 标志位为SYN和ACK,表示“确认客户端的报文Seq序号有效,并同意创建新连接”;
|- 序号为Seq=y;
|- 确认号为Ack=x+1,表示收到客户端的序号Seq。
3)客户端接收到来自服务器端的“确认报文”之后,并发送“确认报文”,进入ESTABLISHED阶段,其中:
|- 标志位为ACK,表示“确认收到服务器端同意连接的信号”;
|- 确认号为Ack=y+1,表示收到服务器端序号Seq;
|- 序号为Seq=x+1,该报文不携带数据则不消耗序号。
4)服务器收到来自客户端的“确认报文”之后,进入ESTABLISHED阶段。
2、为什么需要三次握手,只握手两次行不行?
答:第三次握手是为了防止已经失效的连接请求报文段突然又传到服务端,因而产生错误。
如果没有第三次握手,服务端无法确定客户端是否已经建立连接,将等待客户端的ACK包。如果有第三次握手,服务端在超时后将重发第二次握手的ACK包,需要客户端再次回应一下,就可以避免这种情况。
当第二次握手结束,如果服务端没有收到客户端的“确认报文”,会超时重传,超过 5 次则认定连接失败,停止重传。
5.3 TCP的四次挥手(***)
1、四次挥手详解
1)客户端向服务器端发送“请求释放连接报文”,进入FIN-WAIT-1阶段,其中:
|- 标记位为FIN,表示“请求释放连接“;
|- 序号为Seq=x。
2)服务器端接收到客户端发出的“请求释放连接报文”,并返回“确认报文”,进入CLOSE-WAIT阶段,其中:
|- 标记位为ACK,表示“接收到客户端发送的释放连接的请求”;;
|- 序号为Seq=y;;
|- 确认号为Ack=x+1;
|- 客户端收到从服务器端发出的ACK“确认报文”,进入 FIN-WAIT-2 阶段。
3)服务器端再次向客户端发出“确认报文”,进入LAST-ACK阶段,其中:
|- 标记位为FIN,ACK,表示“释放连接”;
|- 序号为Seq=z;
|- 确认号为Ack=x+1。
4)客户端收到从服务器端发出的“确认报文”,并向服务器端发送“确认报文”,进入 TIME-WAIT 阶段,其中:
|- 标记位为ACK,表示“接收到服务器释放连接的信号”;
|- 序号为Seq=x+1;
|- 确认号为Ack=z+1;
|- 客户端等待 2MSL 后,进入CLOSED阶段。
5)服务器端收到从客户端发出的“确认报文”,进入CLOSED阶段,正式关闭服务器端的连接。
2、为什么要等待两个MSL
答:WAIT_TIME:2MSL(Maximum Segment Lifetime,译为“报文最大生存时间”),为什么要等待两个MSL,因为服务端在1MSL时间内未收到客户端的确认报文,对方在超时后将重发第三次挥手的FIN包,又是1MSL时间。
如果只有三次挥手的过程,而没有第四次挥手,服务端将无法确定客户端是否收到来自服务端的断开连接请求。
5.4 TCP 拥塞处理机制(**)
1、慢开始算法:指数增长;
2、拥塞避免算法:加性增;
3、超时重传:继续慢开始算法;
4、快重传:发送方收到连续三个ACK,重新传输;
2、快恢复:阈值更新为发生拥塞时拥塞窗口的一半,继续执行拥塞避免算法。
六、应用层
6.1 DNS(域名系统)
|- 应用层协议:基于 UDP 协议,端口:53
|- 域名服务器
1)本地域名服务器
2)根域名服务器
3)顶级域名服务器
4)权限域名服务器
6.2 POST 和 GET 的区别(**)
GET | POST |
GET 用来从服务器中获得数据 | POST 用来上传文件到服务器 |
GET 将请求放置在HTTP报文的请求中,以 “?” 分割 URL和传输数据 | POST 将请求的数据放在 HTTP 的报文请求体中 |
GET 的请求数据放在请求头,容易被获取,存在安全隐患 | POST 放在请求体中,较好的安全性 |
GET 的大小有限,一般不超过8000字符 | POST 大小没有限制 |
6.3 Cookie 和 Session 的区别
Cookie | Session | |
大小 | 4KB | 没有大小限制(受内存限制) |
状态保持 | 客户端保持状态 | 服务端保持状态 |
安全性 | 存在安全隐患 | 相对安全 |
6.4 http 和 https 的区别和联系(*)
HTTP | HTTPS | |
端口 | 80 | 443 |
工作层面 | 应用层 | 传输层 |
加密 | 无 | 有 |
安全性 | 不安全 | 安全 |
速度 | 快 | 慢 |
6.5 Http 从发出请求到获得页面的过程(**)
1、查询DNS,获得域名的IP地址;
2、通过三次连接,建立起和服务端的连接;
3、浏览器向服务器发送请求报文;
4、服务器响应请求,并返回资源;
5、四次挥手释放连接;
6、浏览器解析HTML。
6.6 常见状态码及原因短语(*)
|- 2**:200 请求成功,并返回资源;203:请求成功,无资源返回;
|- 3**:301(永久重定向)、302(临时重定向)、303(改成GET方式),307(POST方式);304(Not Modified,不满足条件,不返回任何资源)。
|- 4**(客户端错误):400(请求错误)、401(认证)、403(禁止访问)、404(Not Found)。
|- 5**(服务端错误):500(服务端错误)、503(服务器超负载或者停机维护)。
6.7 HTTP 首部有哪些?分别介绍几个具体的首部字段(**)
1、报文首部:
1)请求行:方法、URI、HTTP版本;响应行:状态码、HTTP版本。
2)首部行:
|- 通用首部行(Connection:keep-alive、Transfer-Encoding:chunked);
|- 请求首部行(Accept:html/text、Range:5001-10000、If-Modified-Since:指定日期之后,资源发生改变则返回);
|- 响应首部行(Accept-Ranges:bytes、Location:用于资源重定向、Server:服务器类型);
|- 实体首部行(Allow:GET、POST、PUT、HEAD、DELETE;Content-Location:报文主体对应的URI)。
3)Cookie 等。
2、报文实体
七、网络安全(待续……)