01基本网络概念
网络
网络是几乎可议实时发送和接收数据的计算机和其他设备的集合。
网络中的每台机器称为一个节点,每个节点都有地址,用于唯一标识一个节点的字节序列。
不同的网络会以不同的方式分配地址。以太网地址与物理以太网硬件地址关联。以太网硬件厂家使用预分配的厂商编码确保他们的硬件地址与其他厂商的硬件地址不冲突。Internet地址由分配地址的组织分配给计算机,一个组织允许选择的地址一般由该组织的Internet服务供应商(ISP)分配。ISP从四个区域Internet注册机构之一获得ip地址,这四个机构的ip地址由互联网名称和数字地址分配机构分配。
每个节点还可以有帮助人们标识的名称(域名),但该名称并不一定与一个地址绑定。
所有节点的网络都是包交换的网络,将流经网络的数据拆分成小块称之为包,每个包包含源和目的地址,优点是多个即将交换的包可以在一条线缆上传输,降低网络建立成本。
协议是定义计算机如何传输通信的规则,包括地址格式、数据如何拆包等。
网络分层
TCP/IP四层模型
主机网络层(链路层host-to-work:以太网、wifi、lte):定义了如何通过物理链接向网络发送IP数据报的接口。
网际层(网络层network:IPv4、IPv6):定义了数据位和字节如何组织为更大的分组(包),定义了寻址机制,通知支持不同的主机网络层相互对话,使用同构协议将异构网络相互链接。
传输层(TCP/UDP):确保各包以发送的顺序接收,并保证没有数据丢失或破坏,若丢失,传输层会要求发送方重传这个包。
TCP(传输控制协议Transmission Control Protocol):可靠协议,支持对丢失和破坏的数据重传,并按照发送的顺序传输数据。
UDP(用户数据包协议User Datagram Protocol):不可靠协议,允许接收方检测被破坏的包,但不保证按正确但顺序传送(或者根本没有传送)。
应用层:向用户传送数据的层,如http、smtp、ftp等
IP:可以在IP只上建立其他协议,如TCP、UDP、ICMP(如ping程序实现)等,java仅支持tcp、udp及在其上建立的应用协议,其他协议只能通过链接到原生代码实现
IP地址和域名
ipv4是一个四个字节的数字表示,一般为点分四段,每段为一个无符号数字,范围为0-255。
ipv6使用16字节地址,由冒号:分割为8个区块,每个区块由四个16进制数字组成,前导的0不需要写,连续的两个::表示多个0区块,但每个地址至多出现一次,后四个字节可写为ipv4的点分四段地址。
域名系统(Domain Name System,DNS),将人类易用记住的主机名映射为Internet地址,但主机名和地址并不一定固定,因此编写java程序不能将其永久缓存。
有一些特殊地址区块,如:10.、172.16.、172.31.、192.168.等未分配,这些地址可以在内部网使用,但不允许加入Internet中。127开头但一般表示本地回送地址(ipv6一般为::1)。4字节都相同数字但ipv4(如255.255.255.255)是一个广播地址,发送到该地址的数据报将被该网络的所有节点接收。
端口
一个传输层协议大概有65535个端口。
每个端口分配给一个特定的服务。
1-1023的端口保留给已知的服务,在linux或mac上只有以root运行的程序才可以使用这些端口。
Internet地址分块
区域Internet注册机构会为ISP分配地址块。每个地址块有固定的前缀,固定n为就称为/n,余下的位数表示本地网络可用该块的地址,其中最低地址用于标识网络本身,最高位为一个广播地址。
网络地址转换(Network Address Translation,NAT)
用于解决ipv4的稀缺性。基于NAT的网络中,大多数节点为不可路由(被Internet)的本地地址,通常为10.x.x.x、172.16.、172.31.、192.168.。将本地网络链接到ISP的路由器会将这些地址转换为更小的一组可路由的地址。
路由器会监视出站和入站的链接,调整IP报中的地址。对于出站,将源地址改为路由器的外部地址。对于入站的包,将目的地址改为一个本地地址。
ipv6的发展可能使得NAT无意义。
防火墙
位于Internet和本地网络之间会有一些硬件或软件,检查所有进出的数据,以保证其合法性,称之为防火墙。
代理服务器
代理服务器可实现请求转发、缓存等。
防火墙一般工作于网络层或传输层。代理服务器一般工作于应用层。
Internet标准
IETF(Internet Engineering Task Force,Internet工程任务组):向所有感兴趣的人开放,标准根据多数人的意见和正在运行的代码制定。
W3C(Word Wide Web Consortium,国际互联协会):缴纳会费的组织组成。注解、工作草案、候选推荐、提议推荐、推荐。