A. A轮目标
- 复习网络编程基础知识,重点学习下TCP三次握手四次挥手,以及可能引发的异常情况。
- 回顾 Socket 编程,好多年没写(chao)过相关代码了。
- 重学 NIO,以前学的基本忘光了,毕竟从来没在项目中用过。
- 学习 Netty,了解基本用法,写一个简单项目练手。
- 扫读 Netty 核心源码,了解其线程模型,重点学习 Netty 如何使用 NIO。
- 搜罗面试题,查漏补缺。
B. 基础知识
参考资料:《Java网络编程 第四版》
网际层(internet layer): 定义了数据位和字节如何组织为更大的分组,称为包,还定义了寻址机制(IP Address),不同计算机要按这个寻址机制查找对方。
网际协议(IP)是Java唯一理解的网络层协议。IPv4 与 IPv6 无法互操作。
在 IPv4 中,数据按包在网际层上传输,这些包称为数据报(datagram)。
传输层(transport layer): 负责确保各包以发送的顺序接收,并保证没有数据丢失或破坏。TCP 与 UDP。
URI:统一资源标识符(Uniform Resource Identifier)是采用一种特定语法标识一个资源的字符串。其语法为 模式:模式特定部分。模式特定部分的语法很多采用 //authority/path?query,例如 https://www.bucunzai.com/huanjue?zhishang=250。
典型的 URI 是由 ASCII 字母、数字及部分符号(- _ . ! ~)组成,其它字符要用 % 转义,其后是该字符按 UTF-8 编码的十六进制码。