1. 网络模型
(1) OSI(开放系统互联)参考模型
- 物理层:在物理媒体上为数据端设备透明的传输原始比特流。传输单位是比特
- 数据链路层:成帧、差错控制、流量控制和传输管理。传输单位是帧
- 网络层:对分组进行路由选择,并进行流量控制、拥塞控制、差错控制和网际互连。传输单位是数据报,即分组
- 运输层:为端到端的连接提供可靠的传输服务,为端到端连接提供流量控制、差错控制、服务质量、数据传输管理。传输单位是报文段(TCP)或用户数据报(UDP)
- 会话层:建立同步
- 表示层:数据压缩、加密、解密、数据的格式转化
- 应用层:为特定类型的网络应用提供访问OSI环境的手段
(2) TCP/IP模型
- 网络接口层:对应OSI中物理层和数据链路层
- 网际层:
- 传输层:
- 应用层:对应OSI中会话层、表示层和应用层
(3) 五层网络模型
- 物理层:即把TCP/IP模型中的网络接口层分为物理层和数据链路层
- 数据链路层:数据链路层又可以分为介质访问控制(MAC)子层和逻辑链路控制(LLC)子层,传输的单位是MAC帧
- 网络层:传输的单位是IP数据报(分组)
- 传输层:传输的单位是报文段(TCP)或用户数据报(UDP)
- 应用层:
5层模型只出现在计算机网络学习教学过程中,既综合了OSI和TCP/IP 体系结构的优点,这样既简洁又能将概念阐述清楚。
2. 网络设备
- 中继器:又称转发器,原理是信号再生,扩大网络传输距离,不存储,不检错,工作在物理层
- 集线器:一个多端口的中继器,工作在物理层
- 网桥:处理对象是帧,存储并转发帧并进行路径选择,可以隔离冲突域,但不能隔离广播域,工作在数据链路层的MAC子层
- 交换机:多端口的网桥,工作在数据链路层
- 路由器:完成路由选择和分组转发,可以隔离冲突与和广播域,实现了网络模型的物理层、数据链路层和网络层,工作在网络层
- 网关:
3. 网络协议
(1) 数据链路层网络协议
- CSMA/CD(载波监听多路访问/碰撞检测)协议:先听后发,边听边发,冲突停发,随机重发
- PPP(点对点)协议:面向字节,是一种广域网数据链路层控制协议
- HDLC(高级数据链路控制)协议:面向比特,是一种广域网数据链路层控制协议
(2) 网络层
- IP协议
- ARP(地址解析)协议:解决同一局域网上从IP地址到硬件地址的映射问题
- ICMP(网际控制报文)协议:允许主机或路由器报告差错和异常情况,分为ICMP差错报文和ICMP询问报文,可当做IP数据报的数据部分发送
(3) 传输层
- OSPF(开放最短路径优先)协议:直接使用IP数据报传送
- UDP协议:在IP数据报基础上增加了复用、分用和差错检测,无需建立连接,面向报文的,不可靠传输,传输的可靠性需要用户在应用层保证,性能较好,首部8字节。多用在视频、影音等即时通讯中
- TCP协议:面向连接,提供可靠的数据传输,保证数据不丢失、不重复且有序,首部前20字节是固定的
(4) 应用层
- DHCP(动态主机配置)协议:给主机动态的分配IP地址,基于UPD
- RIP(路由信息)协议:分布式的基于距离向量的路由选择协议,基UPD
- BGP(边界网关)协议:采用的是路径向量路由选择协议,基于TCP
- DNS(域名系统)协议:把域名解析为IP地址,基于UDP协议,工作在53号端口
- FTP(文件传输)协议:允许客户指明文件的类型与格式,并允许文件具有存取权限,基于TCP,工作在21号端口
- SMTP(简单邮件传输)协议:基于TCP,工作在25号端口
- POP3(邮局)协议:邮件读取协议,基于TCP
- HTTP(超文本传输)协议:浏览器怎么向万维网请求文档,以及服务器怎么把文档传给浏览器。基于TCP协议,工作在80号端口
4. TCP的3次握手和4次挥手
(1) TCP三次握手
- 客户端的TCP向服务器的TCP发送一个连接请求报文
- 服务器的TCP收到连接请求报文后,如同意建立连接,就向客户机发回确认,并为该TCP连接分配TCP缓存和变量
- 客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变量
(2) TCP四次挥手
参与TCP连接的两个进程中的任何一个都可以终止该连接
- 客户机打算关闭连接,就向其TCP发送一个连接释放报文段,并停止再发送数据,主动关闭TCP连接
- 服务器收到连接释放报文段后发出确认,此时客户端到服务器方向的连接就释放了
- 若服务器没有要向客户机发送的数据,就通知TCP释放连接,发出连接释放报文段
- 客户机收到连接释放报文段后,必须发出确认,此时连接全关闭
5. HTTP 与 HTTPS 的区别
HTTP 默认工作在 TCP 协议 80 端口 , HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息 。
HTTPS 默认工作在 TCP 协议443端口, HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。
HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
6. http请求的全过程:
(1) 浏览器根据域名解析IP地址
- 浏览器缓存:首先搜索浏览器自身的DNS缓存
- 系统缓存:再搜索操作系统自身的DNS缓存
- 路由器缓存:然后向路由器发送查询请求
- ISP(互联网服务提供商) DNS缓存:最后要查的就是ISP缓存DNS的服务器。
(2) 浏览器与WEB服务器建立一个TCP连接
TCP的3次握手
(3) 浏览器给WEB服务器发送一个HTTP请求
一个HTTP请求报文由请求行、请求头、空行和请求体4个部分组成
- 请求行: 请求行分为三个部分:请求方法、请求地址URL和HTTP协议版本,它们之间用空格分割
- 请求头: 请求头部为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔
- 空行:表示请求头部结束
- 请求体: 请求数据不在GET方法中使用,而在POST方法中使用。
(4) 服务器端响应HTTP请求,浏览器得到HTML代码
HTTP响应报文由状态行、响应头、空行和响应体4个部分组成。
- 状态行: 状态行由3部分组成,分别为:协议版本、状态码、状态码扫描。
- 响应头:
- 空行:表示响应头部结束
- 响应体: 用于存放需要返回给客户端的数据信息。
(5) 浏览器解析HTML代码,并请求HTML代码中的资源
浏览器拿到HTML文件后,开始解析HTML代码,遇到静态资源时,就向服务器端去请求下载。
(6) 关闭TCP连接,浏览器对页面进行渲染呈现给用户
浏览器利用自己内部的工作机制,把请求到的静态资源和HTML代码进行渲染,呈现给用户。
7. TCP的可靠传输、流量控制和拥塞避免
(1) TCP的可靠传输
TCP首部的序号字段永安里保证数据能有序提交给应用层,首部的确认号是期望收到对方的下一个报文段等数据的第一个字节的序号,TCP采用累计确认的方式。
当发生超时或冗余ACK(确认字符)时会导致TCP对报文段重传。TCP规定每当比期望序号大的时序报文段到达时,发送一个冗余ACP,指明下一个期待字节的序号。当发送方收到对同一个报文段的3个冗余ACK时,就可以认为跟在这个被确认报文段后的报文段已经丢失。
(2) TCP的流量控制
接收方根据自己接受缓存的大小,动态地调整发送方的发送窗口rwnd大小。发送方根据其对当前网络拥塞状态的估计而确定的窗口值,称为拥塞窗口cwnd。发送窗口的实际大小取rwnd和cwnd中国你的最小值。
(3) TCP的拥塞避免
接收窗口:接收方根据当前接收缓存大小所许诺的最新的窗口值
拥塞窗口:发送方根据自己估算的网络拥塞程度而设置的窗口值
- 慢开始:先令拥塞窗口为1,即一个最大报文段长度(MSS),在每收到一个对新的报文段的确认后,将拥塞窗口大小+1。若当前拥塞窗口大小为n,则一次可发送n个报文段,收到n个确认,拥塞窗口大小+n,此时拥塞窗口大小按指数增长,等增大到一定阈值,就改用拥塞避免算法
- 拥塞避免:发送端的拥塞窗口每经过一个往返时延就增加一个MSS的大小,即按线性增长,当出现一次超时(网络拥塞)时,另慢开始阈值等于当前拥塞窗口的一半,但不能小于2,同时把拥塞窗口大小设为1。然后执行慢开始算法
- 快重传:当发送方连续收到3个重复的ACK报文时(只丢失个别报文段,非网络拥塞导致),直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时
- 快恢复:当发送端收到连续3个冗余ACK时,就把慢开始阈值和拥塞窗口都设为出现拥塞时发送方拥塞窗口大小的一半,然后开始执行拥塞避免算法(加法增大)