计算机基础-面试-网络-1
计算机网络基础
网络分层
OSI 七层模型: 1. 应用层:面向用户提供服务 2. 表示层:数据处理(编解码,加解密,压缩解压缩) 3. 会话层:管理(建立、维护、重连)应用程序之间的会话 4. 传输层:为两台主机之间的通信提供通用的数据传输服务 5. 网络层:路由与寻址 6. 数据链路层:帧编码与误差纠正检测 7. 物理层:透明地传输比特
TCP/IP四层模型: 1. 应用层:包含上述七层的前三层 2. 传输层 3. 网络层 4. 网络接口层:数据链路层与物理层
常见协议
- 应用层:HTTP 超文本传输,SMTP 简单 邮件发送,POP3/IMAP 邮件接收协议,FTP 文件传输协议,Telnet 远程登陆协议,SSH 安全网络传输协议,RTP 实时传输协议,DNS 域名管理系统。
- 传输层:TCP 传输控制协议,UDP 用户数据报协议
- 网络层:IP 网际协议,ARP 地址解析协议,ICMP 互联网控制报文协议,NAT 网络地址转换协议,OSPF 开放式最短路径优先协议,RIP 路由信息协议,BGP 边界网关协议。
- IP(Internet Protocol,网际协议):TCP/IP 协议中最重要的协议之一,属于网络层的协议,主要作用是定义数据包的格式、对数据包进行路由和寻址,以便它们可以跨网络传播并到达正确的目的地。目前 IP 协议主要分为两种,一种是过去的 IPv4,另一种是较新的 IPv6,目前这两种协议都在使用,但后者已经被提议来取代前者。
- ARP(Address Resolution Protocol,地址解析协议):ARP 协议解决的是网络层地址和链路层地址之间的转换问题。因为一个 IP 数据报在物理上传输的过程中,总是需要知道下一跳(物理上的下一个目的地)该去往何处,但 IP 地址属于逻辑地址,而 MAC 地址才是物理地址,ARP 协议解决了 IP 地址转 MAC 地址的一些问题。
- ICMP(Internet Control Message Protocol,互联网控制报文协议):一种用于传输网络状态和错误消息的协议,常用于网络诊断和故障排除。例如,Ping 工具就使用了 ICMP 协议来测试网络连通性。
- NAT(Network Address Translation,网络地址转换协议):NAT 协议的应用场景如同它的名称——网络地址转换,应用于内部网到外部网的地址转换过程中。具体地说,在一个小的子网(局域网,LAN)内,各主机使用的是同一个 LAN 下的 IP 地址,但在该 LAN 以外,在广域网(WAN)中,需要一个统一的 IP 地址来标识该 LAN 在整个 Internet 上的位置。
- OSPF(Open Shortest Path First,开放式最短路径优先):一种内部网关协议(Interior Gateway Protocol,IGP),也是广泛使用的一种动态路由协议,基于链路状态算法,考虑了链路的带宽、延迟等因素来选择最佳路径。
- RIP(Routing Information Protocol,路由信息协议):一种内部网关协议(Interior Gateway Protocol,IGP),也是一种动态路由协议,基于距离向量算法,使用固定的跳数作为度量标准,选择跳数最少的路径作为最佳路径。
- BGP(Border Gateway Protocol,边界网关协议):一种用来在路由选择域之间交换网络层可达性信息(Network Layer Reachability Information,NLRI)的路由选择协议,具有高度的灵活性和可扩展性。
HTTP
一个访问的额全流程:
- 浏览器输入指定的 URL
- 浏览器通过缓存、DNS协议,获取域名对应的IP地址
- 浏览器根据 IP 地址与端口号,向目标服务器发起一个TCP连接请求。
- 浏览器在 TCP连接上,向服务器发送一个 HTTP 请求报文,请求获取网页的内容。
- 服务器收到 HTTP 请求之后,处理 HTTP请求,并返回 HTTP 响应报文给浏览器。
- 浏览器收到HTTP响应之后,解析HTML渲染,对其中的URL,再次请求,知道网页完全加载。
- 浏览器不需要与服务器通信时,主动关闭TCP链接,或者等待服务器关闭连接。
无状态协议保存状态
比如购物车,可以采用 session 会话。
session 保存在服务器端,cookies 保存在浏览器端。
如果主要考虑到安全性问题,使用session。一般将登录信息放在session中。 如果考虑到服务器性能问题,应该使用cookies。
网络层
转发语路由: - 转发:将分组从路由器的输入端口转移到合适的输出端口 - 路由:确定分组从源地址到目的地址经过的路径
WebSocket
一种应用层协议,为了弥补HTTP的单向性和不持久创建的。可用于实时弹幕、协同编辑等等。
工作过程:先建立HTTP,然后客户端发起协议升级申请。客户端与服务端都可以申请断开TCP通信。
Ping
基于 ICMP(互联网控制报文协议) 的,大致分为两类,查询报文类型与差错报文类型。
DNS
域名管理系统。解决IP地址与域名的映射问题。
- 根服务器:一般用于告知
- 顶级域名服务器:一般是顶级域名
- 权威域名服务器:一般是二级域名
- 本地DNS服务器:每个ISP(互联网服务提供商)有自己的本地DNS服务器。
TCP
三次握手
- SYN
- ACK SYN
- ACK
Linux 采用半连接队列与全连接队列管理正在建立连接与已经建立好连接的。
为什么需要三次握手?Server 需要确认自己发送正常,对方接收正常。
第二次握手为什么要回传SYN?因为前面建立了主机到服务器的,现在需要建立服务器到主机的。
第三次握手时,就可以携带数据了。
四次挥手
- client FIN seq=x
- server ACK ack=x+1
- server FIN seq=y
- client ACK ack=y+1 客户端之后还要等待 2MSL(报文段最长寿命)
为什么需要等待 2MSL ?因为客户端需要保证自己发送的 ACK被服务端收到了。如果没收到,服务端会反复重发FIN
传输可靠性
- 数据块传输,报文段/段
- 失序重排与去重
- 重传:快速、超时
- 流量控制:滑动窗口协议
- 拥塞控制:考虑接收方的接收能力以及网络的拥塞程度。
流量控制
接收端与服务端都各自维护一个接收窗口与发送窗口
拥塞控制
发送方维持一个 拥塞窗口 cwnd,发送窗口=min(拥塞窗口,对方接收窗口)
四种算法:慢开始(从1开始,2倍递增,直到 ssthresh)、拥塞避免(ssthresh 之后每次+1)、快重传与快恢复。
ARQ
自动重传请求
停止等待 ARQ 与连续ARQ
RTT(Round Trip Time):往返时间,也就是数据包从发出去到收到对应 ACK 的时间。 RTO(Retransmission Time Out):重传超时时间,即从数据发送时刻算起,超过这个时间便执行重传。
NAT
转换不同网络之间的IP地址,缓解IPV4的地址短缺问题,隐藏网络内部的实际拓扑结构。
路由器维护一张 NAT地址转换表。
NAT 协议通过对 WAN 屏蔽 LAN,有效地缓解了 IPv4 地址分配压力。 LAN 主机 IP 地址的变更,无需通告 WAN。 WAN 的 ISP 变更接口地址时,无需通告 LAN 内主机。 LAN 主机对 WAN 不可见,不可直接寻址,可以保证一定程度的安全性。
ARP
广播问询、单播响应。
不同子网时先广播询问到路由器,然后路由器询问外网地址。