练习题与扩展阅读
练习题
基础题
- OSI七层模型和TCP/IP四层模型分别有哪些层?每层的核心作用是什么?
- TCP和UDP协议各有什么特点?分别适合什么场景?
- TCP建立连接为什么需要三次握手?断开连接为什么需要四次挥手?
- HTTP请求中GET和POST方法有什么区别?分别适合什么场景?
- 常见的网络攻击方式有哪些?分别怎么防范?
- TCP的三次握手中,为什么最后一次握手需要客户端发送ACK报文?
实操题
- 用Wireshark抓包工具,抓取一个HTTP请求的完整过程,查看以太网帧、IP包、TCP段、HTTP请求的结构,理解各层的头部字段。
- 编写一个简单的TCP服务器和客户端,实现简单的聊天功能,体会Socket编程的流程。
- 用
dig或者nslookup命令解析一个域名,查看DNS解析过程和返回的记录。 - 用
telnet或者nc命令测试目标服务器的端口是否开放,建立TCP连接发送数据。 - 模拟一个简单的XSS攻击场景,理解XSS的原理和防范方法。
思考题
- 输入一个URL到浏览器显示出页面,整个过程都发生了什么?请从网络层面详细描述。
- TCP是可靠传输协议,为什么我们在应用层还需要做超时重传和幂等设计?
- 为什么HTTPS能够防止中间人攻击?如果用户信任了伪造的根证书会有什么问题?
- 很多应用层协议都基于TCP,有没有可能基于UDP实现可靠传输?如果可以,怎么实现?
- HTTP是无状态的,那电商网站的购物车是怎么实现保存用户状态的?原理是什么?
扩展阅读
书籍推荐
-
《TCP/IP详解 卷1:协议》
- 网络领域的经典圣经,详细讲解了TCP/IP协议族的所有细节,每个网络从业者都应该读。
-
《HTTP权威指南》
- HTTP协议的权威指南,深入讲解HTTP协议的方方面面,包括请求响应结构、缓存、认证、代理等内容。
-
《Web安全深度剖析》
- 全面讲解Web安全的各种攻击方式和防护方法,适合开发者了解Web安全知识。
-
《UNIX网络编程》
- 网络编程的经典著作,详细讲解了Socket编程的原理和实现,适合系统学习网络编程。
在线资源
-
- MDN的HTTP文档,全面详细,是学习HTTP的最佳资料之一。
-
- 免费的TCP/IP指南,内容通俗易懂,覆盖了TCP/IP协议的所有核心内容。
-
- 开源的Web安全学习资料,涵盖了各种常见Web攻击和防护方法。
-
- Cloudflare的学习中心,有很多关于网络、安全、CDN的通俗易懂的科普文章。
-
- Cloudflare的技术博客,详细讲解HTTP/3和QUIC协议的原理和优势。
工具推荐
- Wireshark:最流行的网络抓包分析工具,可以抓取和分析各种网络数据包,排查网络问题的神器。
- tcpdump:Linux下的命令行抓包工具,适合在服务器上抓包分析。
- curl / Postman:HTTP请求测试工具,用来测试接口和调试HTTP请求。
- dig / nslookup / host:DNS查询工具,排查DNS问题。
- telnet / nc(netcat):网络调试工具,可以测试端口连通性、发送TCP/UDP数据。
- nmap:端口扫描和网络探测工具,用来扫描服务器开放的端口和服务。
- Charles / Fiddler:HTTP代理工具,可以拦截、查看、修改HTTP/HTTPS请求,调试接口非常方便。
- OpenSSL:SSL/TLS工具,可以生成证书、测试HTTPS连接、加密解密等。
参考答案
练习题的参考答案可以在附录/练习题参考答案.md中找到。建议先独立思考完成,再查看答案。