JavaSE-网络编程

1. 概述

  • Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。
  • Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在 Java 的本机安装系统里,由 JVM 进行控制。并且 Java 实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境。
  • 网络编程的目的:
    直接或间接地通过网络协议与其它计算机实现数据交换,进行通讯。
  • 网络编程中有两个主要的问题:
    如何准确地定位网络上一台或多台主机;定位主机上的特定的应用
    找到主机后如何可靠高效地进行数据传输

1.1 网络通信要素概述

  • IP和端口号
  • 网络通信协议

1.2 如何实现网络中的主机互相通信

  • 通信双方地址
    IP
    端口号
  • 一定的规则(即:网络通信协议。有两套参考模型)
    OSI参考模型:模型过于理想化,未能在因特网上进行广泛推广
    TCP/IP参考模型(或TCP/IP协议):事实上的国际标准。
  • 网络通信协议
    在这里插入图片描述
    数据传输过程:
    在这里插入图片描述

2. IP和端口号

2.1 InetAddress类

  • Internet上的主机有两种方式表示地址:
    域名(hostName):www.atguigu.com
    IP 地址(hostAddress):202.108.35.210
  • InetAddress类主要表示IP地址,两个子类:Inet4Address、Inet6Address。
  • InetAddress 类 对 象 含 有 一 个 Internet 主 机 地 址 的 域 名 和 IP 地 址 :
    www.atguigu.com 和 202.108.35.210。
  • 域名容易记忆,当在连接网络时输入一个主机的域名后,域名服务器(DNS)负责将域名转化成IP地址,这样才能和主机建立连接。 -------域名解析
  • InetAddress类没有提供公共的构造器,而是提供了如下几个静态方法来获取InetAddress实例
public static InetAddress getLocalHost()
public static InetAddress getByName(String host)
  • InetAddress提供了如下几个常用的方法
public String getHostAddress():返回 IP 地址字符串(以文本表现形式)。 
public String getHostName():获取此 IP 地址的主机名
public boolean isReachable(int timeout):测试是否可以达到该地址

3. 网络协议

  • 网络通信协议
    计算机网络中实现通信必须有一些约定,即通信协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。
  • 问题:网络协议太复杂
    计算机网络通信涉及内容很多,比如指定源地址和目标地址,加密解密,压缩解压缩,差错控制,流量控制,路由控制,如何实现如此复杂的网络协议呢?
  • 通信协议分层的思想
    在制定协议时,把复杂成份分解成一些简单的成份,再将它们复合起来。最常用的复合方式是层次方式,即同层间可以通信、上一层可以调用下一层,而与再下一层不发生关系。各层互不影响,利于系统的开发和扩展。
发布了337 篇原创文章 · 获赞 77 · 访问量 57万+

猜你喜欢

转载自blog.csdn.net/feicongcong/article/details/104905867