1.核心概要
1.网络(广义)
计算机网络:通过单一技术连接分散的计算机来实现信息传递的各种各样的网络系统。
拓扑:传递信息过程中信道的分布方式。类型包含总线型、星型、环型、树型和网状型。
下图中:总线型、环形、星型、星型、树型、网状型
协议:网络中进行信息交换的规范约束。包含语法、语义和时序。
语法:通过何种格式传输信息;
语义:传输何种控制信息,做出何种响应;
时序:时间的发生顺序。
带宽:单位时间内最大的信息传输总量,越大越好。单位:比特/每秒。bps、kbps、mkbps等。
吞吐量:实际的带宽处理量。受网络设备、拓扑结构等影响。
网络分类:有线网络,无线网络。
分层特点:各层独立、解耦合、易于维护。
套接字:IP地址(主机标识),端口号(主机应用程序标识),套接字(不同主机上应用程序交互的端口) = IP+PORT
2.体系模型
OSI七层模型
OSI七层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
TCP/IP四层模型
四层模型:应用层、传输层、网络层、网络接口层(数据链路、物理层)
应用层:应用程序间的通信、传输报文、通常包含DNS、HTTP、HTTPS、SMTP、FTP协议等
传输层:应用进程间的通信、传输报文段、包含TCP、UDP协议
网络层:路由选择,转发、传输数据报、包含IP协议、RIP路由选择协议、ICMP网际报文控制协议
网络接口层:
数据链路层:相邻结点间的通信、传输数据帧、包含ARP、RARP协议
物理层:规定物理特性、传输比特流
封装:
应用层——传递报文——传输层(添加传输层附加首部信息)
传输层——传递报文段——网络层(添加源端口地址、目的端口地址首部附加信息)
网络层——传递数据报——数据链路层(添加链路帧首部附加信息)
数据链路层——传递数据帧——网络层(转换成比特流进行传输)
2.应用层
1.任务
为层次模型之外的用户提供服务、进行应用进程间的报文信息交换。
2.DNS域名解析协议
含义:域名——IP地址之间的映射关系,是一个分布式数据库。
解析过程:
1、Client端输入域名、寻找本地host文件中的DNS缓存;
存在:则直接返回IP地址给浏览器进行访问;
2、不存在,则通过递归/迭代 向上查询IP地址信息;
递归:一直向上查找,本地域名、根域名、顶级域名、权威域名服务器;
迭代:一级一级查询,查询一级,没有找到则告诉下一级地址进行查询;
不存在,则查询失败。
3、存在吗,则将IP信息返回 OS,OS进行缓存,并传给浏览器。
DNS事项:
1、DNS解析后,下一个主机发送请求就可以直接获取IP信息、但无法保证一致性。
2、DNS通过UDP数据段承载,当报文超过512字节、首次会返回TC=1置位,就需要建立TCP连接。
3.HTTP协议
含义:Web应用层协议的 超文本传输协议 ,是Web的核心。原理是基于C/S架构上、浏览器作为HTTP客户端通过 URL和80端口向HTTP服务器端发送请求。
作用:通过HTTP报文进行客户端与服务端之间的会话。定义了报文结构、报文交换的方式。
特点:
1、无连接。每次只处理一个请求,再次请求需要重新建立连接;
2、无状态,无事务处理记忆能力,每次处理都必须重传;
3、可以传输任意数据类型。
连接类型:
1、非持续连接:HTTP1.0版本中提供非持续连接。每次请求都需要建立连接。
如:一网页包含10张图片,包含自身HTML页面就是11个资源对象,非持续连接中,则一共需要进行 11次的TCP连接。造成服务端TCP连接压力。每一次连接都需要两倍的RTT时延。
下图中,第一个RTT用于建立TCP连接,第二个RTT用于处理请求与响应。
2、持续连接:
HTTP1.1之后,采用了持久连接,也就是TCP复用,建立一次TCP连接,后续请求可在当前连接基础上进行交互。
4.报文格式
HTTP中规定了两种HTTP报文格式,一种是请求报文,一种是响应报文。
请求报文
组成:
请求行:请求方式、统一资源定位器URL、HTTP版本
请求头:连接类型等key-value键值对
请求空行:
请求体:包含请求参数等信息
响应报文
组成:
响应行:HTTP版本、响应状态码、响应状态标识
响应头:连接类型等key-value键值对
响应空行:
响应体:包含响应资源信息对象
常见状态码:
200:请求成功,信息包含在响应的报文中
301:请求对象被永久转移、新的URL定义在响应报文的Location中,客户端自动获取新的URL。
400:请求失败、该请求不能被服务器理解
404:请求资源不存在
500:服务器内部错误
502:代理服务器错误
5.HTTPS协议
含义:基于SSL,或代替协议TLS加密之上的HTTP协议
作用:提供双向的安全传输
加密算法:
对称加密:客户端、服务端采用 相同的秘钥字符串 进行数据传输、加密与解密。最大问题:如何安全告知对方秘钥。包含AES
非对称加密:客户端、服务端采用 公钥加密、私钥解密 来进行数据传输、最大问题:如果使用经过传输的
秘钥进行解密,则任然不安全。包含RSA算法
对称+非对称:客户端、服务端采用 对称加密进行数据传输,通过 非对称加密 传输对称 加密的秘钥字符串。最大问题:性能消耗,且任然存在不安全性。
工作原理:
1、用户通过浏览器发起HTTPS请求,通过HTTPS的443端口连接;
2、服务端接受到连接请求,将 CA证书(包含公钥A、附加信息)响应给客户端。服务端 留存私有A`;
3、客户端接收到响应信息,进行 证书验签(有效期、域名),不合法则发出HTTPS警告;
4、合法,则 生成对称加密字符串、并使用公钥A进行加密 传输给服务端;
5、服务端接受到客户端响应,使用 私钥A`解密对称加密字符串;
6、双方使用对称加密字符串进行数据加密传输。
6.常见面试题
HTTP版本差异:
1、二进制流:HTTP2.0中提供了二进制传输格式,传输解析效率更高
2、多路复用:建立一次TCP连接,后续请求复用当前TCP连接
3、头部压缩:HTTP2.0将请求头和请求体分离、相同请求第一次发送请求头后不再携带请求头
4、服务端推送:HTTP2.0中允许服务端向客户端主动推送资源
GET/POST/PUT区别:
参数:GET请求参数通过URL传递、POST、PUT请求通过Body传递;
缓存:GET请求会被浏览器主动缓存、但其余不自动缓存,可手动设置;
编码:GET请求采用URL编码,POST请求可以采用多种编码格式;
数据包:GET请求只发送一次,POST请求会发送两次数据包(一次请求头、一次请求体)
幂等性:POST请求多次请求结果不同。而GET、DEL、PUT请求多次请求结果相同,相同请求则进行覆盖。
HTTP/HTTPS差异:
数据传输:HTP明文传输、HTTPS采用SSL或替代协议TLS的加密传输
端口:HTTP使用80端口、HTTPS采用443端口
性能:HTTPS需要加密、解密,性能较低
证书:HTTPS协议需要申请证书、证书申请需要额外的费用
浏览器访问流程:
1、首先通过 DNS解析域名对应的IP映射地址
2、浏览器通过 IP地址建立TCP连接
3、浏览器发送HTTP请求、服务端响应HTTP请求、客户端解析渲染页面
4、连接断开
Cookie/Session:
Cookie执行原理:客户端访问服务端、服务端生成一份Cookie传输给客户端,客户端进行本地存储,后续请求都需要携带Cookie信息。
特点:存储在客户端、不安全;大小有限4kb
Session:Session存储在服务端,客户端请求服务端,服务端生成session_id通过cookie传输给客户端,客户端每次请求只需要携带session_id即可。
特点:存储在服务端、安全;大小受服务器限制
差异:
相同点:都是客户端、服务端之间的一种状态存储会话机制
不同点:
位置:Cookie存在于客户端、Session存在于服务端
大小:Cookie有大小4kb,Session无大小受服务端限制且占用空间
安全:Cookie易于篡改、Session安全可靠
3.传输层
1.任务
为不同主机上的应用进程提供逻辑通信(不需要考虑物理设施)服务。通过报文段进行传输。
存在于端系统中,因特网中为应用层提供了两种不同的传输协议TCP、UDP。
2.TCP协议
特点:面向连接的、可靠的、字节流的全双工通信。
TCP报文段结构:
首部:源端口号、目的端口号、序列号、确认号、头部长度、标志(SYN、ACK、FIN)、滑动窗口、校验和、紧 急指针、可选项等字段信息。
序列号(seq):数据报分成若干大小相同的报文段,序列号是每一段开头的字节流编号。
确认号(ack):全双工通信过程中用于确认收到的序列信息。
紧急指针:用于标识紧急数据传输开始的位置偏移量。使用紧急传输时,URG=1,优先处理数据。
3.TCP三次握手
1、第一次握手:C端向S端发起连接请求。携带SYN=1、seq=x
状态:C端(SYN-SEND)同步已发送、S端LISTEn不变
2、第二次握手:S端响应C端连接请求信息。携带SYN=1、ACK=1、seq=y、ack=x+1
状态:S端(SYN-RECV)同步已接收、C端不变
3、第三次握手:C端再次传输新数据给S端。携带ACK=1,seq=x+1,ack=y+1
状态:C端、S端建立连接
前两次不携带数据、第三次才会携带数据信息。
4.TCP为何三次?
防止已失效的报文出现在下一次的连接中。
1、第一次传输时,由于网络阻塞,重新建立连接。
2、连接建立,传输完毕,连接断开。
3、此时,网络恢复后进行第一次报文重传,此时服务端收到响应,等待客户端确认连接。但客户端早已断开连接,造成服务端一直处于等待响应占用资源的状态中。
5.TCP第二次有ACK还要SYN?
ACK:确认客户端,我已接收到客户端发送的信号,则通信正常。
SYN:用于建立并确认从服务端到客户端的通信。是TCP三次握手之间的一个握手信号
6.TCP四次挥手
1、第一次挥手:C端向S端发起连接断开请求。携带FIN=1,seq=w
状态:C端(FIN-WAIT1)终止关闭1状态、S端不变
2、第二次挥手:S端响应C端的连接断开请求。携带FIN=1,ACK=1,seq=v,ack=w+1
状态:S端(CLOSE-WAIT)等待关闭,C端(FIN-WAIT2)终止等待2
3、第三次挥手:S端发送数据完后,再次响应。携带FIN=1,ACK=1,seq=u,ack=w+1
状态:S端(LAST-ACK)最后确认,C端不变
4、第四次挥手:C端最后确认连接断开响应。携带ACK=1,seq=w+1,ack=u+1
状态:C端 等待2MSL(TIME-WAIT)
7.time-wait作用?
等同于:为何需要等待2MSL?
1、确保最后一个报文传输完毕
TCP发送最后一次ACK确认报文之后,客户端启动2MSL计时。如果服务端在响应客户端FIN+ACK报文之后,未能接收到最终确认报文,则会发送一次重传报文。而客户端就会在该2MSL之内再次发送ACK报文,再次启动计时器。
2、防止本次连接中的报文出现在下一次连接中
每一次TCP连接,在经过2MSL的计时之后,所有的传输报文将会从网络中消失,不会出现在下次TCP连接中。
8.TCP连接建立后,C端故障问题?
TCP连接中提供了一个保活计时器。服务端每收到一次客户端请求,则重新设置计时器。时间一般设置为2小时。如果经过两小时之后,客户端无响应,则会发送一次探测报文。之后每隔75s发送一次。若连续发送10次无响应,则认为连接失败。
9.TCP如何保证可靠传输?
1、分段编号:数据被分成若干合适的TCP数据段,并对数据包进行编号,通过序列号和确认号进行可靠传输。
2、校验和:端系统通信过程中,TCP采用首部的校验机制来确保数据传输的可靠性。有差错则不确认接收、重复数据将会丢弃。
3、流量控制:TCP中通过滑动窗口实现流量控制。
发送方和接收方都各自维护一个接收窗口,通过接收窗口来控制发送方的发送速率。
4、拥塞控制:
TPC连接中,每端都维系一个接收缓存、发送缓存和其他变量。发送方维系着一个拥塞窗口cwnd。
含义:某个时间段内,网络中对某一资源的需求>能够提供的可用量,此时就会出现拥塞。
拥塞控制算法:慢开始、拥塞避免、快速恢复、快速重传。
慢开始:主机开始发送数据时,不会一次性发送大量数据到网络中。而是将拥塞窗口cwnd置为1。每当收到一个确认报文后,cwnd就会翻倍。
启动虽慢,但后续增长速度很快。遇到拥塞,则将cwnd重新置为1进行传输。
拥塞避免:主机发送数据时,初始cwnd=1,每经过一个RTT,则将cwnd进行翻倍。(实际上是无法每经
过一个RTT就将cwnd翻倍,通常是增加一个MSS。如发送10个报文段,则增加1/10MSS)。
快恢复和快重传:TCP传输中,快恢复和快重传能够恢复一定量的丢失报文。但如果丢失报文超出一定范
围则将无法恢复。
10.UDP协议
特点:面向无连接的、无状态的、实时性报文传输
报文段结构:
伪头部作用:进行差错校验中计算校验和。
4.网络层
1.任务
进行分组转发、路由选择。传输数据报。
相关概念:
1、分组转发:将一个分组从输入链路中转发到合适的输出链路中的过程。是路由器的本地操作。
2、路由选择:网络环境中,分组从源地址到目的地址经过的路径。
协议:
IP协议、RIP路由选择协议、ICMP网际报文控制协议
2.IP协议
网际互连协议,提供无连接的、不可靠的、尽力而为的数据包传输服务
3.IP数据报格式
版本号:占据4bit。规定了数据报的IP协议版本。供路由器解释IP数据报的其余部分。
首部长度:占据4bit。IP数据报中可能包含可变选项,存储于首部长度中,一般IP无可变选项。
服务类型:占据8bit。用于区分IP数据报的类型,如IP电话应用、非实时的FTP应用
总长度:占据16bit。包含IP首部长度和数据报长度的总和。
标识、标志位、偏偏移:这三个字段和IP分片相关。
生存时间:IP数据报在路由选择中的存活时间,每经过一个路由器则TTL-1,TTL=0时则丢弃该IP分组。
协议:告知目的方该IP数据报应该交付于哪种协议(TCP/UDP/……).
首部校验和:用于通过反码计算来进行差错校验。
源IP地址、目的IP地址:发送源、目的地;通常由DNS决定目的地址。
IP数据报:20字节的首部长度(无可选项)+20字节的TCP首部
4.IP分片
网络传输过程中,并不是所有链路层都能够接收相同大小的数据报,通常情况下,IP数据报不能超过数据链路层中的最大传送单元(数据帧的最大数据量)。
通常将IP数据分片传输到端系统中后进行重组。路由器中重组则性能消耗太大。
5.IP编址
6.子网掩码
子网掩码是一个32位的地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识。并说明IP地址在局域网上还是广域网中。
5.数据链路层
1、任务
提供相邻结点间的通信、数据封装成帧、差错校验、透明传输。
相关名词:
结点:主机、路由器、WIFI接入点等都是结点
2、ARP地址解析协议
1、任务
IP数据包将MAC地址添加到数据帧的帧头。ARP协议通过解析IP地址获取到MAC物理地址。
2、解析流程
1、源主机发送IP数据报,首先检测自身的ARP缓存表,查看是否存在对应到MAC物理地址。
2、存在,则将MAC地址封装进数据帧的帧头中,发送数据帧。
3、不存在,则向本网段主机广播发送一个个ARP请求数据包,该请求中包含目的IP地址。
4、本网段中的主机,收到后校验自身是否包含待查询IP地址,不存在则忽略。
5、存在,则单独回复一个ARP响应数据包,其中包含IP地址对应的MAC物理地址。
6、源主机获取到后,加入到自身的缓存表中,封装成数据帧,发送数据帧。
6.物理层
7.网络安全
1.Dos拒绝服务攻击
介绍:攻击者通常通过协议漏洞、带宽、连接漏洞等方式来使得主机或服务器无法为用户正常提供服务。