应用层 : HTTP/SMTP/POP3/FTP - 和具体应用相关。
传输层: : TCP / UDP
网络层 : IP
物理层+数据链路层
TCP/IP - Bill Joy。
IP地址与端口:
就是为网络上的每个【物理节点】分配一个“门牌号”。
0~255 . 0~255 . 0~255. 0~255
IPv4 32位的地址。 4G个网络地址 - 中国能分到网络地址很少。
IPv6 128位的地址。 网络地址。
每个物理节点有一个“门牌号”,这个门牌号就用于唯一标识这个物理节点。
端口 - 相当于“房间号”。
要确定一个应用程序的服务地址,不仅需要提供IP地址(门牌号)+ 端口号(房间号)。
端口的约定(0~65535个端口):
0~1023 : 公用的端口。80:HTTP上网。 21:FTP, 110: POP3.
1023~49151: 应用程序端口。 MySQL:3306; Oracle:1521。
49152~65535 动态分配端口。
InetAddress:代表一个IP地址,它有两个子类,一个子类代表IPv4地址,
一个子类代表IPv6的地址。
InetAddress
↗ ↖
Inet4Address Inet6Address
两个工具类:URLDecoder与 URLEncoder
URLEncoder :可以把“非西欧文字”编码成%B7%E8%BF%F1的形式。
—— 在有些场景,无法传输和存储“非西欧文字”,此时就需要用到URLEncoder。
典型的像Cookie,Cookie的值就不能是中文。
URLDecoder :可以把成%B7%E8%BF%F1的形式的字符串解码成“非西欧文字”。
URL :代表一个网络地址。
URLConnection : 代表与网络地址的连接
↑
HttpURLConnnection : 基于HTTP协议的网络连接。
TCP通信:
Socket - 相当于“虚拟链路”两端的插座。
Socket负责完成通信。
ServerSocket - 它只负责“接受”连接。
它用于产生Socket。
服务器端编程:
(1) 创建ServerSocket对象,该对象负责“接收”连接。
(2) 如果客户端有连接,accept方法将会返回一个Socket。
(3) 通过IO流读取对方的信息,也可向对象发送数据。
客户端编程:
(1) new Socket()来建立与远程服务器的连接。
(2) 通过IO流读取对方的信息,也可向对象发送数据。