计算机网络知识点——寻址(物理地址、逻辑地址、端口地址与专用地址)

1、物理地址

物理地址,也称为链路地址、MAC地址、LAN地址,它是局域网或广域网定义的节点地址。它包含在数据链路层所用的帧中,是最低级的地址。物理地址在网络(LAN或者WAN)中使用,这类地址的长度和格式是可变的。以太网使用6个字节(48位)物理地址,在网络接口卡(NIC)上标明。

2、逻辑地址(IP地址)

逻辑地址,与下面的物理网络无关,它唯一定义了连接到因特网的一台主机,32位。

3、端口地址

在TCP/IP分层体系结构中,赋于进程的标识符称为端口地址,它的长度是16位。

4、专用地址

有些面向用户的应用被设计为专用地址。例如,电子邮件的地址和统一资源定位符(URL)(如www.baidu.com)。这些地址由发送计算机转换成对应的端口地址和逻辑地址。

问:端口地址、逻辑地址、物理地址有什么不同?
:物理地址是节点的本地地址,数据链路层使用它将数据从一个节点传递到同一网络中的另一个节点。逻辑地址在网络层定义发送方和接收方,用于跨多个网络传递消息。端口地址(服务点)标识了站点上的应用程序。

参考书籍:《数据通信与计算机网络》——佛罗赞

### Java开发中的计算机网络基础知识 #### 计算机网络基础概述 Java作为一种广泛应用于企业级应用开发的语言,其设计初衷之一便是支持分布式计算环境下的程序运行。因此,在学习Java开发过程中,掌握一定的计算机网络基础知识尤为重要。以下是Java开发密切相关的几个核心知识点。 --- #### 1. **TCP/IP协议栈** Java在网络通信方面主要依赖于TCP/IP协议栈。该协议栈分为四层结构:应用层、传输层、网络层以及链路层[^1]。其中,`java.net.Socket` 和 `java.net.ServerSocket` 类正是基于TCP协议实现的客户端和服务端之间的可靠数据流传输机制[^2]。 - 应用层:负责处理高层应用程序间的交互,常见的有HTTP、FTP等。 - 传输层:提供可靠的端到端通信服务,主要包括TCP和UDP两种协议。 - TCP(Transmission Control Protocol)是一种面向连接的协议,适用于需要高可靠性场景的数据传输。 - UDP(User Datagram Protocol)则是一种无连接的协议,适合实时性要求较高的应用场景。 - 网络层:IP协议工作在此层,用于寻址和路由选择。 - 链路层:负责在同一物理网络上的节点间传递帧。 --- #### 2. **Socket编程模型** 在Java中,通过`java.net`包可以方便地创建基于Socket的网络通信程序。具体来说: - 客户端可以通过`Socket`类建立服务器的连接并发送/接收数据; - 服务器端则利用`ServerSocket`监听指定端口等待客户请求,并为每一个新连接分配一个新的`Socket`实例来处理后续操作。 下面是一个简单的例子展示如何使用这两个类构建基本的服务端和客户端逻辑: ```java // Server side code snippet import java.io.*; import java.net.*; public class EchoServer { public static void main(String[] args) throws IOException { int port = 8080; try (ServerSocket serverSocket = new ServerSocket(port)) { System.out.println("Waiting for client..."); Socket socket = serverSocket.accept(); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter output = new PrintWriter(socket.getOutputStream(), true); String message; while ((message = input.readLine()) != null && !message.equals("bye")) { output.println(message.toUpperCase()); } } catch (IOException e) { e.printStackTrace(); } } } // Client side code snippet import java.io.*; import java.net.*; public class EchoClient { public static void main(String[] args) throws UnknownHostException, IOException { String hostName = "localhost"; int portNumber = 8080; try ( Socket echoSocket = new Socket(hostName, portNumber); PrintWriter out = new PrintWriter(echoSocket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream())) ) { BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); String userInput; while (!(userInput = stdIn.readLine()).equals("bye")) { out.println(userInput); System.out.println("Echo from server: " + in.readLine()); } } catch (UnknownHostException e) { System.err.println("Don't know about host " + hostName); } catch (IOException e) { System.err.println("Couldn't get I/O for the connection to " + hostName); } } } ``` 上述代码展示了最基础的一问一答模式,实际项目可能还需要考虑多线程并发处理等多个因素。 --- #### 3. **URLURI的概念及其解析** 除了低层次的套接字接口外,Java还提供了更高抽象级别的API——即针对Web资源访问的支持功能。这涉及到统一资源定位符(URL)以及更通用形式的统一资源标识符(URI)[^1]。 开发者能够借助`java.net.URL`对象轻松发起GET或POST类型的HTTP请求;同时也可以运用`HttpURLConnection`进一步定制化这些行为,比如设置超时时间、添加自定义头部字段等等。 --- #### 4. **异常处理的重要性** 由于网络状况复杂多变,任何一次远程调用都存在失败的可能性。所以在编写涉及联网部分的应用时,务必要充分考虑到各种潜在错误情况的发生概率,并采取适当措施加以应对。例如捕获特定种类的Checked Exception(`MalformedURLException`, `UnknownHostException`)或者Unchecked Exception(`SocketTimeoutException`),从而提高系统的健壮性和用户体验满意度水平。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值