网络编程

本文介绍了网络的基本概念,包括互联网、万维网和物联网,并详细阐述了OSI七层模型和TCP/IP四层模型。重点讲解了TCP与UDP协议的区别,以及在Java中如何获取和使用IP地址。此外,还概述了网络通信的基本步骤,包括服务器的建立连接和客户端的请求响应。
摘要由CSDN通过智能技术生成

网络概念:由点和线构成,表示诸多对象间的相互联系。
为实现资源共享和信息传递,通过通信线路连接起来的若干主机(Host)。

常见计算机网络:

  • 互联网:(Internet)点与点相连。
  • 万维网:(WWW – World Wide Web)端与端相连。
  • 物联网:( IoT - Internet of things) 物与物相连。
  • 网络编程:让计算机与计算机之间建立连接、进行通信。

OSI(Open System Interconnect),即开放式系统互联。
该体系结构标准定义了网络互联的七层框架(物理层数据链路层网络层传输层会话层表示层应用层)。

  • 第七层:应用层负责文件访问和管理、可靠运输服务、远程操作服务。(HTTP、FTP、SMTP)。
  • 第六层:表示层负责定义转换数据格式及加密,允许选择以二进制或ASCII格式传输。
  • 第五层:会话层负责使应用建立和维持会话,使通信在失效时继续恢复通信。(断点续传)。
  • 第四层:传输层负责是否选择差错恢复协议、数据流重用、错误顺序重排。(TCP、UDP)。
  • 第三层:网络层负责定义了能够标识所有网络节点的逻辑地址。(IP地址)。
  • 第二层:链路层在物理层上,通过规程或协议(差错控制)来控制传输数据的正确性。(MAC)。
  • 第一层:物理层为设备之间的数据通信提供传输信号和物理介质。(双绞线、光导纤维)。
  • TCP/IP模型是因特网使用的参考模型,基于TCP/IP的参考模型将协议分成四个层次。

  • 该模型中最重要的两个协议是TCP和IP协议。
    每层功能:

  • 第四层:应用层负责传送各种最终形态的数据,是直接与用户打交道的层,典型协议是HTTP、FTP等。

  • 第三层:传输层负责传送文本数据,主要协议是TCP、UDP协议。

  • 第二层:网络层负责分配地址和传送二进制数据,主要协议是IP协议。

  • 第一层:接口层负责建立电路连接,是整个网络的物理基础,典型的协议包括以太网、ADSL等等。

TCP协议:Transmission Control Protocol 传输控制协议:

  • 是一种面向连接的、可靠的、基于字节流的传输层通信协议。数据大小无限制。建立连接的过程需要三次握手,断开连接的过程需要四次挥手。

UDP协议:User Datagram Protocol 用户数据报协议:

  • 是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,每个包的大小64KB。
public class Demo1 {
	public static void main(String[] args) throws Exception{
		//1创建本机IP地址对象
		//1.1getLocalhost()方法
		InetAddress ia1=InetAddress.getLocalHost();
		System.out.println("ip地址:"+ia1.getHostAddress()+" 主机名:"+ia1.getHostName());
		//1.2getByName("ip地址");
		InetAddress ia2=InetAddress.getByName("192.168.0.103");
		System.out.println("ip地址:"+ia2.getHostAddress()+" 主机名:"+ia2.getHostName());
		//1.3getByName("127.0.0.1");
		InetAddress ia3=InetAddress.getByName("127.0.0.1");
		System.out.println("ip地址:"+ia3.getHostAddress()+" 主机名:"+ia3.getHostName());
		//1.4getByName("localhost");
		InetAddress ia4=InetAddress.getByName("localhost");
		System.out.println("ip地址:"+ia4.getHostAddress()+" 主机名:"+ia4.getHostName());
		
		//2创建局域网IP地址对象
		
		InetAddress ia5=InetAddress.getByName("192.168.0.104");
		System.out.println("ip地址:"+ia5.getHostAddress()+" 主机名:"+ia5.getHostName());
		System.out.println("2秒钟是否可达:"+ia5.isReachable(2000));
		
		//3创建外网IP地址对象
		InetAddress ia6=InetAddress.getByName("www.baidu.com");
		System.out.println("ip地址:"+ia6.getHostAddress()+" 主机名:"+ia6.getHostName());
		System.out.println("2秒钟是否可达:"+ia6.isReachable(2000));
		System.out.println("--------------");
		InetAddress[] ias=InetAddress.getAllByName("www.baidu.com");
		for (InetAddress inetAddress : ias) {
			System.out.println(inetAddress.getHostAddress());
		}
	}
}

开发步骤:

  • 建立通信连接(会话):
    • 创建ServerSocket,指定端口号。
    • 调用accept等待客户端接入。
  • 客户端请求服务器:
    • 创建Socket,指定服务器IP + 端口号。
    • 使用输出流,发送请求数据给服务器。
  • 使用输入流,接收响应数据到客户端(等待)
    • 服务器响应客户端。
    • 使用输入流,接收请求数据到服务器(等待)。
    • 使用输出流,发送响应数据给客户端。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值