计算机网络篇3:键入网址到网页显示过程+getpost区别+syn攻击+cdn

第一部分:键入网址到网页显示,期间发生了什么?

这是一道经典的"全链路"面试题。我们不仅要回答基础的网络流程,还要加入架构视角(负载均衡)来提升回答的深度。

1. 基础流程(快递发货)

  1. 解析 URL:浏览器把网址拆解为"域名"和"路径",确定"要去哪"和"要买什么"。

  2. DNS 解析(查地址)

    • 浏览器查询本地缓存 -> 本地 DNS 服务器 -> 根/顶级/权威域名服务器(递归查询)。

    • 最终拿到目标服务器的 IP 地址

  3. TCP 三次握手(打电话确认)

    • 客户端与服务器建立可靠连接,确认双方收发能力正常。
  4. 封装数据包(贴单运输)

    • HTTP:生成请求报文。

    • TCP:切分成 MSS 大小的段。

    • IP:贴上源地址和目的地址(宏观导航)。

    • MAC:通过 ARP 协议获取下一跳设备的 MAC 地址(微观导航,如发给网关)。

  5. 网络传输:数据包经过网卡转为电信号,通过交换机、路由器层层跳跃,最终到达阿里的机房入口。

2. 架构视角(进阶:流量是如何分发的?)

数据包到达机房后,并不是直接丢给某台服务器,而是先经过负载均衡(Load Balance)

  • 第一道关(LVS - 四层负载均衡)

    • 相当于"门口保安"。只看 IP 和端口,抗负载能力极强,直接把流量甩给后端的 Nginx 集群。
  • 第二道关(Nginx - 七层负载均衡)

    • 相当于"前台接待"。拆开包看 HTTP URL,根据业务逻辑(如 /user/order)将请求分发给具体的应用服务器(如 Tomcat)。

3. 最终处理

  • 服务器响应:应用服务器处理业务(查库、计算),生成 HTTP 响应,原路返回给客户端。

  • 客户端渲染:浏览器拿到 HTML/CSS/JS,解析并绘制出页面展示给用户。


第二部分:GET 和 POST 的本质区别

别背长长的对比表格,面试中只需要抓住这 三个核心差异

1. 语义不同(最本质)

  • GET :目的是获取 (Read) 资源。就像去餐厅看菜单,对服务器数据没有副作用。

  • POST :目的是提交 (Write) 数据。就像填单子下单,会改变服务器状态(如下订单、改库存)。

2. 参数位置不同

  • GET :参数拼接在 URL 后(如 ?id=1)。

    • 比喻:像明信片,内容写在面上,谁都能看见。
  • POST :参数放在 Request Body 中。

    • 比喻:像信封,内容装在里面,相对隐蔽。

3. 幂等性与缓存

  • GET :是幂等 的(请求 1 次和 10 次结果一样),所以浏览器敢缓存它。

  • POST :是非幂等 的(请求 10 次可能创建 10 个订单),所以浏览器不敢随便缓存,刷新时会弹窗警告。


第三部分:SYN Flood 攻击(TCP 安全)

这是一种利用 TCP 协议漏洞进行的 DoS(拒绝服务)攻击。

1. 攻击原理(占着茅坑不拉屎)

  • 正常握手 :客户端发 SYN -> 服务端回 SYN+ACK(并分配资源,放入半连接队列) -> 客户端回 ACK(连接建立)。

  • SYN 攻击

    • 攻击者伪造大量不存在的 IP,疯狂向服务器发送 SYN 包。

    • 服务器回复 SYN+ACK 后,傻傻地等待对方回 ACK。

    • 因为 IP 是假的,永远不会有 ACK 回来。

    • 后果 :服务器的半连接队列 (SYN Queue) 被这些假请求占满了,导致正常用户的 SYN 请求被丢弃,无法连接。

2. 解决方案

  1. 调大队列 :增加 tcp_max_syn_backlog 参数,让候车室大一点。

  2. 减少重试 :减少 tcp_synack_retries,联系不到人就赶紧释放资源,别傻等。

  3. TCP SYN Cookie(大招)

    • 收到 SYN 时不分配内存(不进队列),而是根据 IP 计算一个加密的 Cookie 发回去。

    • 只有客户端真带回了这个 Cookie,服务器才承认这是个有效连接。


第四部分:CDN(内容分发网络)

1. 核心理念

"空间换时间"。通过将内容缓存在离用户最近的地方,解决网络拥堵和延迟。

  • 比喻 :京东物流模式。以前买东西都从北京发货(慢);现在京东在全国各省建了前置仓(边缘节点),你一下单,直接从本省仓库发货(快)。

2. 静态 vs 动态

  • 静态资源(图片、CSS、JS):非常适合 CDN。长期缓存在边缘节点。

  • 动态资源(API 接口、个人数据):通常不走 CDN 缓存,因为每个人、每一刻的数据都不一样,必须回源站查询。

3. 关键流程:回源 (Origin Pull)

  1. 用户请求资源,DNS 调度到最近的边缘节点

  2. 命中:边缘节点有这个资源,直接返回(极速)。

  3. 未命中(回源) :边缘节点发现自己没有,它会向源站(主服务器)发起请求,拿到资源后转发给用户,并顺手缓存一份,下次别人要就有了。

相关推荐
九成宫17 小时前
计算机网络期末复习——第4章:网络层 Part Three
网络·笔记·计算机网络·软件工程
今儿敲了吗21 小时前
计算机网络第四章笔记(一)
笔记·计算机网络
zjun10011 天前
字节-2.位运算
计算机网络
YYYing.1 天前
【计算机网络 | 第四篇】路由与NAT技术
运维·服务器·网络·网络协议·计算机网络
CS创新实验室1 天前
《计算机网络》深入学:流量控制与可靠传输
计算机网络·考研·计算机·408
Tandy12356_1 天前
手写TCP/IP协议栈——TCP数据接收
c语言·网络·网络协议·tcp/ip·计算机网络
九成宫1 天前
计算机网络期末复习——第4章:网络层 Part Two
网络·笔记·计算机网络·软件工程
小李独爱秋1 天前
计算机网络经典问题透视:媒体播放器与媒体服务器的AB面
运维·服务器·网络协议·计算机网络·媒体
小李独爱秋2 天前
计算机网络经典问题透视:TLS协议工作过程全景解析
运维·服务器·开发语言·网络协议·计算机网络·php