脑图有描绘java.net的结构。
java.net是java最早的网络编程工具包。主要是C/S结构的BIO模型,效率比较低。
常用的包有nio,以及netty包。
一、Addresses
- 处理IP协议ipv4/ipv6
- 处理socket地址(ip+port)
名词解释
名称 | 翻译 | 描述 |
---|---|---|
unicast | 单播 | 指数据包发送一个目的地址,TCP和UDP都可以 |
multicast | 和多播 | 多播数据包同时发送到多个目的地址,只有UDP可以 |
1.1 InetAddressImpl
inetAddressImpl一系列的类需要调用本地方法。这里类是私有的,用户不可见。会被注入到InetAddress类中。
- anyLocalAddress是
0.0.0.0
1.2 InetAddress类
- originalHostName 原始的hostname的保留,对一些domain格式命名的host特别有用,比如 a.dome.s
- hostname 主机标识
- int address 地址
- family 地址簇,ipv4 标识是1,ipv6标识是2
功能
- 存储ip的元数据信息比如上面的hoder
- 调用本地方法,获取hostname,ipv4,ipv6地址,回环地址
- ip的地址是有不同性质的,比如是否是回环地址,网站地址,该地址是否有效。提供一系列is方法来判断。
- 私有方法提供缓存机制
- 工具方法提供域名解析,比如输入域名地址和域名返回Ip等
1.3 SocketAddress
ip+port的载体,被用于socket的binding和connecting或者返回值。
二、SOCKET 套接字
tcp是一个c/s结构,sockets分为