计算机网络八股速记

基础

OSI 7层模型

应用层、表示层、会话层、传输层、网络层、链路层和物理层

为什么有7层模型

独立性、可维护性、可分解性

常见网络协议

应用层:HTTP、SMTP、POP3/IMAP、FTP、Telnet、SSH、RTP、DNS、DCHP

RTP、DNS、DCHP基于UDP

传输层:TCP、UDP

网络层:IP、ARP、ICMP、NAT、OSPF(带宽、延迟)、RIP(固定跳数)、BGP

TCP/IP 各层协议概览

从输入URL到页面展示发生了什么

DNS、TCP、IP、OSPF、ARP、HTTP

ARP协议

ARP表->ARP 查询分组->局域网内广播(向目标主机or路由器网络接口广播)-> ARP 响应分组->ARP表

NAT

SMTP

SMTP->我的服务器->对方服务器->通知对方取出

URL的组成

URL的组成结构

DNS

DNS记录(Type、name、value、TTL)

端口53

本地-根-顶级-权威。

img

HTTP

HTTP状态码

常见 HTTP 状态码

HTTP Header常见字段

Accept、Accept-* 、Content-Length、Cookie、If-Modified-Since

HTTP vs Https

80 vs 443;URL前缀、安全性和资源消耗、SEO(搜索引擎优化)

TLS/SSL

二者关系

工作原理:非对称加密 vs 对称加密

数字签名->证书摘要->比较(CA、防止证书被伪造)

HTTP1.0 vs 1.1

连接方式 、状态响应码、缓存机制、带宽、Host 头(Host Header)处理

HTTP1.1 vs 2.0

多路复用(Multiplexing)、二进制帧(Binary Frames)、服务器推送、头部压缩

HTTP 2.0 vs 3.0

传输协议 连接建立 队头阻塞

HTTP 无状态

Session、Cookie、URL拼接

客户端vs服务端

WebSocket vs HTTP

双向实时通信协议vs单向xx、前缀、数据是否轻量

工作过程:Upgrade: websocket、Connection: Upgrade、数据切割为帧

Get和Post区别

语义、幂等、格式(请求参数)、缓存、安全性

TCP

TCP vs UDP

是否面向连接、是否是可靠传输、是否有状态、传输形式、是否提供广播或多播服务

为什么是3次连接

1次:

2次:不能避免历史连接、不能同步双方序列号、造成资源浪费

TCP需要MSS的原因

如果只有IP分片,那么当如果一个 IP 分片丢失,整个 IP 报文的所有分片都得重传

为什么需要TIME_WAIT

防止历史连接中的数据,被后面相同四元组的连接错误的接收

保证「被动关闭连接」的一方,能被正确的关闭

TCP重传机制

超时重传、快速重传、SACK

什么时候发送RST

服务器端口不可用或未监听、收到了不在预期范围内的ACK号、关闭连接后

什么时候丢弃SYN

tcp_tw_recycle 和timestamps ->PAWS 机制开启,对端 IP 做 PAWS 检查->在NAT下不安全(对于RST报文不会丢弃)

半连接队列满了且未开启syn_cookies;全连接队列满了

已经建立连接的TCP收到syn

发送challenge ack

IP

作用

定义数据包的格式、对数据包进行路由和寻址

v4 vs v6

位数、标头结构、无状态地址自动配置(DHCP no)、NAT no

mac地址

LAN 地址、物理地址、以太网地址