Post

计算机网络

计算机网络常用基础知识点复习

计算机网络

基础篇

网络模型

  • 应用层,负责给应用程序提供统一的接口;

  • 表示层,负责把数据转换成兼容另一个系统能识别的格式;

  • 会话层,负责建立、管理和终止表示层实体之间的通信会话;

  • 传输层,负责端到端的数据传输;

  • 网络层,负责数据的路由、转发、分片;

  • 数据链路层,负责数据的封帧和差错检测,以及 MAC 寻址;

  • 物理层,负责在物理网络中传输数据帧;

TCP/IP网络模型

  • 应用层:http ftp telnet ssh

  • 传输层:tcp udp

    • 流量控制、超时重传、拥塞控制
  • 网络层:ip

  • 网络接口层:MAC地址

浏览器输入url后,发生了什么

http

封装和解析url,生成http头部信息

dns

  • 查询浏览器dns缓存、操作系统dns缓存

  • 查询本地dns服务器

    • 查到则返回ip
  • 本地dns服务器去查询根域名服务器

  • 本地dns服务器去查询顶级域名服务器

  • 本地dns服务器去查询权威域名服务器

  • 返回ip

TCP

  • 三次握手

    • C发送sync x

    • S发送ack x+1 sync y

    • C发送ack y+1

TCP 的连接状态查看,在 Linux 可以通过 netstat -napt 命令查看。

  • TCP进行对数据切分、分包

IP

  • 生成IP报文

最终数据包结构如下:

断开链接

  • 四次挥手

    • C to fin_wait_1: FIN

    • S to close_wait_1: ACK (C to fin_wait_2)

    • S to last_ack: FIN

    • C to time_wait 2MSL: ACK

HTTP协议

  • http基本概念、状态码、字段(host,各种头部)

  • GET\&POST

    • GET安全且幂等,POST则不是

    • 浏览器一般不会缓存 POST 请求,也不能把 POST 请求保存为书签

  • 缓存

    • 强缓存是利用下面这两个 HTTP 响应头部(Response Header)字段实现的,它们都用来表示资源在客户端缓存的有效期:

      • Cache-Control, 是一个相对时间;

      • Expires,是一个绝对时间;

  • http版本区别

    • http1.1

      • 支持长链接

      • 支持管道,发送多条请求

    • http2

      • 头部压缩

      • 服务器主动推送

      • 二进制格式

      • 并发传输

  • https

    • 对称加密和非对称加密

TCP

TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。

有一个 IP 的服务端监听了一个端口,它的 TCP 的最大连接数是多少?

  • 约为 2 的 48 次方。

  • 远不能达到

    • 文件描述符限制

      • 系统级cat /proc/sys/fs/file-max

      • 用户级cat /etc/security/limits.conf

      • 进程级cat /proc/sys/fs/nr_open

    • 内存限制

三次握手

四次挥手

TIME_WAIT

  • net.ipv4.tcp_tw_reuse

服务端为何会出现TIME_WAIT

  • 非长链接,服务端默认会关闭:当服务端出现大量的 TIME_WAIT 状态连接的时候,可以排查下是否客户端和服务端都开启了HTTP Keep-Alive

  • 长链接超时

  • 长链接达到上限

TCP 重传、滑动窗口、流量控制、拥塞控制

  • 重传

    • 超时重传

    • 快速重传:3次重复ack

  • 滑动窗口: 分为4个分区

  • 流量控制:双方会同步一个流量窗口,发送时会尽量靠近

  • 拥塞控制

    • 慢启动

    • 拥塞避免

This post is licensed under CC BY 4.0 by the author.