网络基础
计算机网络
主要功能:
1. 资源共享
2. 信息传输与集中处理
3. 均衡负荷与分布处理
4. 综合信息服务
网络分类:
1. 局域网,LAN,local area network
2. 城域网,MAN,metropolitan arem network
3. 广域网,WAN,wide area network
拓扑(Topology):
1. 环形网
2. 星形网
3. 总线型网
传输介质:
1. 双绞线网
2. 同轴电缆网
3. 光纤网
4. 卫星网
信号频带带宽:
1. 基带网(10k)
2. 宽带网
网络工作模式
1. 专用服务器结构(Server-Based),工作站/文件服务器
2. 客户机/服务器模式(Client/Server,C/S)
3. 对等式网络(Peer-to-Peer,P2P)
网络通讯协议
- 分层:由于节点之间联系复杂,在制定协议时,把复杂的成分分解成一些简单的成分,然后复合起来。最常用的复合方式是分层,即:同层间可以通信;上一层可调用下一层,但与再下一层不发生关系
- 物理层
- 数据链路层
- 网络层
- 传输层
- 会话层
- 表示层
- 应用层
- 最高层:用户应用程序
最底层:物理通信线路
常用网络通信协议:
- TCP/IP协议:TCP(Transmission Control Protocol,传输控制协议),IP(Internet Protocol,网际协议)
- HTTP协议:HTTP(Hypertext Transfer Protocol,超文本传输协议)
- FTP协议:FTP (File Transfer Protocol,文件传输协议)
- SMTP协议:SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)
- POP3/IMAP协议:POP3(Post Office Protocol - Version 3,邮局协议版本3),IMAP(Internet Message Access Protocol,Iternet消息访问协议)
IP地址/域名/端口
- IP地址
- 域名(Domain Address):由域名服务器(DNS, Domain Name Server)解析为对应IP地址
端口(Port):取值0~65535
相关API:
- java.net.InetAddress
32位或128位无符号数字表示的IP地址 - java.net.Inet4Address
InetAddress的子类,IPv4地址。 - java.net.Inet6Address
InetAddress的子类,IPv6地址。
- java.net.InetAddress
URL
Uniform Resource Locator,统一资源定位器。
默认通讯端口:80
java.net包定义了URL类:
public URL(String spec); public final InputStream openStream() throws IOException;
openStream()
:打开到此URL的连接,并返回一个用于从该连接读入的InputStream代理服务器:
设置系统参数:http.proxyHost``http.proxyPort
java -Dhttp.proxyHost=192.168.1.1 -Dhttp.proxyPort=11080 URLReader
Socket编程
Socket:套件字,两个进程实现数据交换的一个双向网络通信连接链路的端点。
- Socket通常用来实现Client-Server连接。
- 寻址:机器名/IP地址 + 端口号
- java.net包定义的两个类Socket和ServerSocket,分别用来实现双向连接的client和server端。(沿用流式IO模型)
- ServerSocket:
调用accept()方法等待连接;若没有连接,服务端阻塞。连接后返回socket对象,可以打开连接到Socket的IO流,进行数据读写操作;通信结束后关闭打开的IO流和socket(调用close()方法); - Socket:连接server端进行IO读写操作,通信结束后关闭打开的IO流和socket。
- ServerSocket:
NIO非阻塞式Socket通信
- 非阻塞式I/O
- 避免read()/readLine()等IO操作的阻塞方法
- 主要涉及选择器Selector和通道Channel的使用
- 举例:多用户聊天室