作者:到底是谁额额额 | 来源:互联网 | 2024-12-07 15:00
本文深入探讨了网络编程中的基本概念,如指针、引用和可重入函数,并详细介绍了OSI七层模型和TCP/IP四层模型的功能与协议。同时,文章还对比了HTTP与HTTPS的区别,分析了HTTP请求报文的结构,讨论了TCP与UDP的主要差异,以及滑动窗口协议的工作原理。
1. 网络编程基础概念
- 指针: 指向内存区域的一个变量,其值为该内存区域的地址。
- 引用: 是现有变量的别名,提供了一种访问变量的替代方式。
- 可重入函数: 在多线程环境中可以被多次调用而不影响程序执行的函数。
2. 网络模型概述
网络通信遵循一定的协议栈,主要分为OSI七层模型和TCP/IP四层模型。
层次名称 |
功能 |
协议 |
网络接口层 (Host-to-Net Layer) |
负责实际的数据传输,对应OSI模型的物理层和数据链路层。 |
HDLC, PPP, SLIP |
网际层 (Internet Layer) |
负责网络间的寻址和数据传输,对应OSI模型的网络层。 |
IP, ICMP, ARP, RARP |
传输层 (Transport Layer) |
提供可靠的数据传输服务,对应OSI模型的传输层。 |
TCP, UDP |
应用层 (Application Layer) |
实现与应用程序相关的功能,对应OSI模型的应用层、表示层和会话层。 |
FTP, HTTP, DNS, SMTP, NFS |
3. HTTP与HTTPS的区别
- HTTP: 超文本传输协议,数据以明文形式传输。
- HTTPS: 安全的超文本传输协议,使用SSL/TLS加密传输数据,提供更高的安全性。
4. HTTP请求报文结构
- 请求行 (Request Line): 包含请求方法、请求URI和协议版本。
- 请求头部 (Header): 包含关于请求的元信息。
- 空行: 分隔请求头部和请求数据。
- 请求数据: 实际的请求内容,如表单数据。
5. GET与POST请求方法的区别
- GET: 数据在URL中可见,适合传输少量数据,不安全。
- POST: 数据在请求体中,适合传输大量数据,更安全。
6. TCP的三次握手与四次挥手
- 三次握手: 用于建立TCP连接,确保双方都能正常收发数据。
- 四次挥手: 用于断开TCP连接,确保所有数据都已传输完毕。
7. Session与COOKIE的区别
- COOKIE: 存储在客户端,用于记录用户的偏好设置。
- Session: 存储在服务器端,用于跟踪用户的会话状态。
8. Redirect与Forward的区别
Redirect |
URL重新定向,可以是任意URL |
不能共享request数据 |
适用于用户注销后返回主页等场景 |
Forward |
页面转发,仅限同一Web应用内的组件 |
可以共享request数据 |
适用于用户登录后的角色跳转等场景 |
9. TCP与UDP的区别
- TCP: 面向连接,提供可靠的数据传输,适合需要高可靠性的应用场景。
- UDP: 无连接,轻量级,适合实时传输和对延迟敏感的应用场景。
10. 滑动窗口协议
- 概念: 允许发送方在未收到确认前发送多个数据包,提高传输效率。
- 工作原理: 发送方和接收方各有一个滑动窗口,窗口大小动态调整,用于控制数据传输速率和流量。
- 慢启动算法: 初始时缓慢增加发送窗口大小,逐步提高传输速率,避免网络拥塞。
11. 名词解释
- 停止等待协议: 每发送一个数据包后等待确认,信道利用率低。
- 回退N步协议 (GBN): 允许发送多个数据包,但一旦出错需重传所有未确认的数据包。
- 选择重传 (SR): 只重传出错的数据包,提高传输效率。