图片
核心总结

一、TCP 和 UDP 的区别及应用场景

特性
TCP(面向连接)
UDP(无连接)
连接方式
三次握手建立连接
无需建立连接
可靠性
可靠,数据按序到达,不丢不重复
不可靠,可能出现丢包或乱序
传输方式
字节流
报文(数据报)
首部开销
20字节
8字节
通信模式
点对点
一对一、一对多、多对一、多对多
应用场景
网页、邮件、文件传输
视频直播、语音通话、DNS、游戏

二、TCP 的三次握手和四次挥手

三次握手(建立连接)

  1. 客户端发送SYN:客户端向服务器发送SYN包,请求建立连接。

  2. 服务器返回SYN+ACK:服务器收到SYN后,回复SYN+ACK包,确认连接请求。

  3. 客户端发送ACK:客户端收到SYN+ACK后,发送ACK包,连接建立。

意义:确保双方的发送与接收功能正常,避免失效请求报文段引发错误。

四次挥手(断开连接)

  1. 客户端发送FIN:客户端发送FIN包,请求断开连接。

  2. 服务器返回ACK:服务器收到FIN后,回复ACK包,确认收到断开请求。

  3. 服务器发送FIN:服务器处理完请求后,发送FIN包,请求断开连接。

  4. 客户端返回ACK:客户端收到FIN后,发送ACK包,连接断开。

TIME_WAIT状态:防止丢失的ACK报文引发错误,客户端需等待2MSL时间。


三、Socket 编程

  • 定义:Socket 是网络通信的端点,由IP地址和端口号唯一确定。

  • 分类

    • TCP Socket:基于连接,适用于可靠数据传输。

    • UDP Socket:无连接,适用于快速数据传输,可容忍一定错误。

  • 常用类

    • Socket 和 ServerSocket:用于TCP通信。

    • DatagramSocket 和 DatagramPacket:用于UDP通信。


四、HTTP 协议

  • 定义:超文本传输协议,用于客户端与服务器之间的数据传输。

  • 请求结构:由请求行、请求头、请求体组成。

  • 响应结构:由状态行、响应头、响应体组成。

  • 常见状态码

    • 200:请求成功。

    • 404:资源未找到。

    • 500:服务器内部错误。

  • HTTP 版本对比

    • HTTP/1.0:无状态、无连接。

    • HTTP/1.1:默认持久连接、支持管线化。

    • HTTP/2.0:二进制分帧、首部压缩、多路复用。


五、HTTP 与 HTTPS 的区别

特性
HTTP
HTTPS
安全性
明文传输
SSL/TLS加密
端口
80
443
连接方式
无状态
加密连接,身份认证

六、Cookie 和 Session

  • Cookie:存储在客户端的键值对数据,用于跟踪用户信息,大小限制为4KB。

  • Session:存储在服务器端的会话数据,通过SessionID标识,安全性更高。

  • 区别

    • Cookie 数据存放在客户端,Session 数据存放在服务器。

    • Cookie 大小受限,Session 无硬性限制。


七、网络编程模型

  1. C/S 模型:客户端发起请求,服务器响应请求。

  2. Socket 编程:基于TCP/IP协议,实现客户端与服务器的双向通信。


八、面试实战经验

  • 面试官关注点

    • TCP/UDP 的区别及应用场景。

    • TCP 的三次握手和四次挥手过程。

    • HTTP 和 HTTPS 的区别,状态码的理解。

    • Cookie 和 Session 的区别。

  • 回答技巧

    • 用生活中的例子解释技术概念(如打电话类比TCP,广播类比UDP)。

    • 结合实际项目经验,展示对网络编程的理解和应用能力。


九、总结

这份文档提供了网络编程的全面知识点,涵盖TCP/UDP协议、Socket编程、HTTP协议及其安全性、Cookie与Session等内容,并结合面试经验分享了回答技巧。通过理解这些核心概念和应用场景,可以更好地应对网络编程相关的面试和技术挑战。

本书免费下载地址


    关注微信公众号“人工智能产业链union”回复关键字“AI面试21”获取下载地址。

往期推荐:
【AI加油站】AI面试专题一:BIO,NIO,AIO,Netty面试题(附下载)
【AI加油站】AI面试专题二:Git常用命令面试题(附下载)
【AI加油站】AI面试专题三:Java常用面试题(附下载)
【AI加油站】AI面试专题四:Linux系统的面试题集(附下载)
【AI加油站】AI面试专题五:Memcached面试题集(附下载)
【AI加油站】AI面试专题六:MyBatis框架的面试题(附下载)
【AI加油站】AI面试专题七:MySQL相关的面试题资料(附下载)
【AI加油站】AI面试专题八:Netty面试题资料(附下载)
【AI加油站】AI面试专题九:Nginx的面试题资料(附下载)
【AI加油站】AI面试专题十:RabbitMQ的面试题资料(附下载)
【AI加油站】AI面试专题十一:Redis的面试题资料(附PDF下载)
【AI加油站】AI面试专题十二:Spring的面试题资料(附PDF下载)
【AI加油站】AI面试专题十三:Apache Tomcat的面试题资料(附PDF下载)
【AI加油站】AI面试专题十四:Zookeeper的面试题资料(附PDF下载)
【AI加油站】AI面试专题十五:《阿里巴巴Java开发手册》终极版的面试题资料(附PDF下载)
【AI加油站】AI面试专题十六:大数据技术面试题资料(附PDF下载)
【AI加油站】AI面试专题十七:Java并发多线程面试题资料(附PDF下载)
【AI加油站】AI面试专题十八:设计模式的面试题资料(附PDF下载)