1、网络通信的核心 -- 以分组的形式将数据从一个系统传输到另一个系统。
2、IP协议。TCP/IP将数据位封装成分组,再增加一些头字段说明应把数据发送到哪里去。
3、分组(Packet),数据报(Datagram)。
如果需要发送的数据超过单个分组的容量,可以将数据分成多个组,然后以若干连续的分组形式发送数据。
4、UDP(User Datagram Protocol,用户数据报协议)
可以采用UDP协议在Internet上发送数据报。UDP协议依赖IP协议执行寻址和路由。UDP协议的常见应用有SNMP和TFTP。采用UDP协议发送的数据可能无法按顺序到达,有些数据可能被延迟,甚至偶尔会全部丢失。
5、TCP(Transmission Control Protocol,传输控制协议)
TCP协议保证能够按照发送分组的顺序将数据可靠地送达目的地。TCP协议常见的应用有FTP、SMTP、HTTP和Telnet。TCP协议也依赖IP协议。不同于UDP的是,TCP在整个传输会话期间都支持端到端的连接。TCP不但要建立连接,还要确保可靠有序的数据传输。
6、套接字
在TCP会话的两端,每个端点的访问对象是套接字,其目的是发送和接收数据。
7、ISO七层网络协议模型,网络协议栈
按照七层协议模型,网络连接应分为七个层次,每个层次只能与其紧邻的上下两层进行对话,但每个层次的通信对象位于远程系统的同一层次。
8、TCP/IP四层网络架构模型
(1)应用层(如HTTP、POP3、IMAP等网络协议);(2)传输层(TCP和UDP协议);(3)网络层(分组和IP地址);(4)数据链路层(帧和MAC地址)。
9、ICMP(Internet Control Message Protocol,Internet控制消息协议)
消息控制和错误报告。Java不支持ICMP。采用ICMP协议传输原始数据,只是请求远程系统执行某种处理,或以某种方式给予适当响应,并不传输应用数据。
10、数据流套接字
采用TCP协议,以可靠的方式传输数据,但速度相对较慢。
11、数据报套接字
采用UDP协议,以不可靠的方式传输数据,但速度相对较快。
12、客户端套接字
用于请求服务器提供信息。
13、服务器套接字
用于监听请求并提供服务。
14、IPV4和IPV6
IPV4使用32位地址,IPV6使用128位地址,IPV6完全兼容IPV4。
15、NAT(Network Address Translation,网络地址转换)
应用NAT技术,位于防火墙后面的计算机可以使用任何IP地址,这些地址可以与其他网站防火墙后面的计算机使用的IP地址完全相同。
16、路由器
至少配有两个接口,用于连接两个不同的网段。根据IP地址,路由器将会在必要时将分组数据从一个网络转发到另一个网络上。
17、交换机
使用MAC地址进行交换。每个计算机都采用一根专线与交换机直连。交换机将数据帧转发到目的地,或与目的地最近的路由器。数据帧进入交换机时,交换机检查MAC地址,将数据帧发送到与该MAC地址相连的端口。
18、集线器
并不关心IP地址,只是将接收到的数据帧传输到与其相连的每一台机器。只有与数据帧目的地址相同的计算机才会接收数据。连接到集线器的所有计算机将共享同一网络连接,即共享同一网络传输带宽。
19、DNS(Domain Name Server,域名服务器)
实现计算机名字和IP地址的相互转换。
20、防火墙
检测来自Internet或外部网络的数据流,防止未经授权的非法访问进入内部专网。防火墙采用不同检测技术,过滤来自外部网络的分组数据。
21、代理服务器
拦截客户机提交实际服务器的所有请求,利用缓存数据回复客户机请求,代理服务器可用于拒绝客户端访问一组网站或网络服务。
22、网络通信库
(1)Socket,客户端套接字,使用户能够打开与Internet上任意一台计算机之间的连接。
(2)ServerSocket,服务端套接字,允许应用程序接受其他系统的TCP连接请求,并与之进行交互通信。
(3)URL(Uniform Resource Locator,通用资源定位器)用于引用WEB资源。
(4)URLConnection,可以使用这个类打开一个URL连接,读取其中的内容或发送数据。
(5)HttpURLConnection,扩展了URLConnection,支持HTTP特定的功能。
(6)URIEncoder/URLDecoder,提供静态方法,能够在字符串和MIME x-www-form-urlencoded格式之间进行转换。
23、现实中大多数局域网采用交换机直连,证实在局域网采用UDP协议将会同时取得高性能和可靠性。
24、Socket API
无参构造函数可用于创建一个尚未建立连接的套接字,之后通过调用bind()方法把套接字绑定到指定的主机和端口号,绑定之后调用connect()方法建立连接。如果开始就知道主机和端口号参数,可以直接调用适当的构造函数。
setSoTimeout(int ms),So即Socket,用于设置套接字的超时值(单位为毫秒),当超时值ms为非零值时,如果读套接字的方法调用处于封锁状态,当等待时间达到参数中指定的超时时间量时,即可退出封锁状态,同时会引发一个SocketTimeoutException异常。
setSocketImplFactory()方法可用于那些想按自己的想法实现套接字,处理防火墙或代理问题的网站。