网络
- 节点(node)**:网络中每台机器成为一个节点,不仅包括计算机,也包括打印机,路由器,网桥,网关等.
- 地址(address)**:每个网络节点都有地址,这是唯一标识节点的一个字节序列[1],因此如果每个地址中的字节越多,可用的地址就越多.
- 包(packet)**:流经网络的数据分割成小块,称为包或者分组 .每个包都单独加以处理,包含了由谁发送和将发往何处的信息.所有现代计算机网络都是包交换(分组交换)网络.
将数据分成单独的带有地址的包,最重要的优点是:多个将交换的包可以在一条线缆上传输,这使得建立网络的成本更低.
分包还有另一个好处就是可以进行校验,用来检测包在传输中是否遭到破坏.
- 协议(protocol)**:协议是定义计算机如何通信的一组明确的规则,包括地址格式,数据如何分包等
网络的分层
网络通信不同方面被分解为多个层,在理论上每一层只与紧挨其上和其下的层对话,这样就可以修改甚至替换某一层软件,只要层与层之间的接口保持不变,就不会影响到其它层.
最常见的分层模型将网络分为四层[2] :
name | examples |
---|---|
应用层 (ApplicationLayer) |
BGP DHCP DNS FTP HTTP IMAP LDAP MGCP NNTP NTP POP ONC/RPC RTP RTSP RIP SIP SMTP SNMP SSH Telnet TLS/SSL ... |
传输层 (TransportLayer) |
TCP UDP DCCP SCTP RSVP ... |
网际层 (InternetLayer) |
IP IPv4 IPv6 ICMP ICMPv6 ECN IGMP IPsec ... |
链路层 (LinkLayer) |
ARP NDP OSPF Tunnels L2TP PPP MAC Ethernet DSL ISDN FDDI ... |
链路层
Java程序工作的TCP/IP网络就符合上面的这一模型,其中链路层是最复杂的,但是对Java程序员而言,90%情况下java代码都将在应用层工作,只需要与传输层对话,其他10%的事件会在传输层处理,与应用层或网际层对话,所以这一层我们可以忽略.
网际层
网际层协议定义了数据位和字节如何组织为更大的分组,称为包,还定义了寻址机制[3],不同计算机按照这个寻址机制查找对方.
-
网际协议(Intenet Protocol,IP):世界上使用最广泛的网络层协议,也是Java唯一理解的网络层(Network layer)协议.
IPv4和IPv6: 前者使用32位地址,后者使用128位地址,他们是完全不同的两个网络协议,如果没有特殊的网关和/或隧道协议,即使在相同的网络上它们也无法做到相互操作,不过Java几乎对我们隐藏了这些区别. - 数据报: 数据按包在网际层上传输,这些包称为数据报(datagram).每个数据报由首部(header)和有效载荷(payload)组成.
传输层
该层的协议为应用进程提供端到端的通信服务.它提供面向连接的数据流支持、可靠性、流量控制、多路复用等服务.这一层Java支持的协议只有TCP和UDP:
- 传输控制协议(Transmission Control Protocol,TCP)
因为IP允许任意两点之间有多个路由,并且两点间的最短路径可能由于网络业务流量或其他因素随时间而改变,所以构成某个特定数据流的包可能不会采用相同的路由.另外,即使这些包全部到达,也可能不会以发送的顺序到达.
将TCP置于IP之上,就是为了改进这种基本机制.它可以使连接的两端能够确认接收到IP包,以及请求重传丢失或被破坏的的数据,并在接收端按照发送时的顺序把包重新组合在一起. - 用户数据报协议(User Datagram Protocol,UDP)
TCP会有很大开销,因此如果数据的顺序不是特别重要,而且单个包的丢失不会完全破坏数据流,那么可以可虑采用UDP发送数据包.它允许接收方检测被破坏的包,但不保证这些包以正确的顺序传送也不保证包一定到达目的地.
Java不允许发送原始IP数据报,只允许发送TCP片或UDP数据报.
UDP通常比TCP快,但是TCP是可靠的协议,UDP是不可靠的协议.
应用层
向用户传输数据的层称为应用层.从链路层到传输层共同定义了数据如何从一台计算机传输到另一台计算机,而应用层确定了数据传输后的操作.常见的应用层协议有:用于Web的HTTP;用于电子邮件的SMTP,POP和IMAP;用于传输文件的FTP,FSP和TFTP;用于文件共享的BitTorrent;等等.
-
节点除了地址,还可以用诸如www.jianshu.com等名字来标识.某一时刻一个特定的名字通常就指示一个地址,但是名字并不与地址锁定!一个地址可以有多个名字,一个名字也可以指示多个不同的地址. ↩
-
还有一个称为开放系统互联参考模型(OSI:Open System Interconnection Reference Model)的七层模型,它将链路层分为数据链路层(Data Link Layer)和物理层(Physical),网际层称为网络层(Network Layer),应用层细化为会话层(Session Layer),表示层(Presentation Layer)和应用层. ↩
-
寻址机制详见: 1.2 IP地址,域名,端口 ↩
网友评论