网络编程

2023-05-04 19:34:55 浏览数 (2)

网络编程

什么是ip地址

互联网协议特有的一种地址

由4段8位的二进制组成的,因为读写不方便所一转换成了10进制,取值范围是1-255

输入域名---域名解析服务器(dns)解析域名成ip地址---访问ip地址---根据绑定域名找到目录---达到访问目的地

什么是网络地址

标识计算机或者网络设备所在的网段

什么是主机地址

标识特定主机或者网络的设备

ip分类

分类

网络地址数量

主机地址数量

前8位的取值范围

作用

子网掩码

A

1

3

1-126

大量主机而局域网络数量较少的大型网络

255.0.0.0

B

2

2

128-191

国际性大公司和政府机构

255.255.0.0

C

3

1

192-223

内网

255.255.255.0

D

244-239

广播地址

E

240-255

保留

cmd命令查看ip地址

代码语言:javascript复制
ipconfig

测试网络是否通畅

代码语言:javascript复制
ping www.baidu.com

域名

.biz .com .edu .gov .info .int .mil .name .net .org .pro .xyz

.cn是中国大陆

IP地址和域名是一一对应的,加入因特网的各级网络依照域名服务器的命名规则对本网内的计算机命名,并在通信时负责完成域名到各IP地址的转换。由属于美国国防部的国防数据网络通信中心( DINNIO)负责因特网最高层域名的注册和管理,同时它还负责IP地址的分配工作。域名由两种基本类型组成:以机构性质命名的域和以国家地区代码命名的域。常见的以机构性质命名的域一般由三个字符组成

DNS域名解析

DNS服务器是完成ip地址到域名转换的服务器

IPV4与IPV6的区别

描述

ipv4

ipv6

地址

长度为 32 位(4 个字节)。地址由网络和主机部分组成,这取决于地址类。根据地址的前几位,可定义各种地址类:A、B、C、D 或 E。IPv4 地址的总数为 4 294 967 296。IPv4 地址的文本格式为 nnn.nnn.nnn.nnn,其中 0<=nnn<=255,而每个 n 都是十进制数。可省略前导零。最大打印字符数为 15 个,不计掩码。

长度为 128 位(16 个字节)。基本体系结构的网络数字为 64 位,主机数字为 64 位。通常,IPv6 地址(或其部分)的主机部分将派生自 MAC 地址或其他接口标识。根据子网前缀,IPv6 的体系结构比 IPv4 的体系结构更复杂IPv6 地址的数目比 IPv4 地址的数目大 1028(79 228 162 514 264 337 593 543 950 336)倍。IPv6 地址的文本格式为 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx,其中每个 x 都是十六进制数,表示 4 位。可省略前导零。可在地址的文本格式中使用一次双冒号(::),用于指定任意数目的 0 位。例如,::ffff:10.120.78.40 表示 IPv4 映射的 IPv6 地址

子网掩码

作用,就是将某个IP地址划分成网络地址和主机地址两部分

网络通信协议

描述

依赖

常见协议

物理层

物理设备,比如网线

底层网络协议

数据链路层

物理网络上接受到的帧

底层网络协议

网络层

路由选择

ip

传输层

端口对端口

tcp可靠无差错的连接、数据安全 udp传输的快

应用层

应用服务元素(SASE)和一个或多个公用应用服务元素(CASE)

HTTP FTP

Socket

简介

传输层进行端到端的通信 连接的端点就叫做socket(套接字)ip地址 端口号

基于TCP协议的Socket编程

用到的类

java.net包

Socket ServerSocket DatagramPacket

常用方法

代码语言:javascript复制
Scoket类
Socket(InetAddress address, int port)
创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
Socket(String host, int port)
创建一个流套接字并将其连接到指定主机上的指定端口号。
Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
创建一个套接字并将其连接到指定远程地址上的指定远程端口。
Socket(String host, int port, InetAddress localAddr, int localPort)
创建一个套接字并将其连接到指定远程主机上的指定远程端口。
close()
关闭此套接字。
connect(SocketAddress endpoint)
将此套接字连接到服务器。
connect(SocketAddress endpoint, int timeout)
将此套接字连接到服务器,并指定一个超时值。
getInetAddress()
返回套接字连接的地址。
getInputStream()
返回此套接字的输入流。
getLocalPort()
返回此套接字绑定到的本地端口。
getOutputStream()
返回此套接字的输出流。
getPort()
返回此套接字连接到的远程端口
shutdownOutput()
关闭输出
代码语言:javascript复制
ServerSocket类
ServerSocket(int port)
创建绑定到特定端口的服务器套接字。
accept()
侦听并接受到此套接字的连接。
getInetAddress()
返回此服务器套接字的本地地址
步骤
  1. 建立连接
  2. 打开关联的输入输出流
  3. 数据流中读写信息
  4. 关闭所有的数据流和Scoket
代码语言:javascript复制
//服务端
try {
        //建立一个服务器Socket(ServerSocket)指定端口并开始监听
        ServerSocket serverSocket=new ServerSocket(8800);
        //使用accept()方法等待客户端触发通信
        Socket socket=serverSocket.accept();
        //打开输入输出流
        InputStream is=socket.getInputStream();
        //获取客户端信息,即从输入流读取信息
        BufferedReader br=new BufferedReader(new InputStreamReader(is,"utf-8"));
        String info=null;
        while(!((info=br.readLine())==null)){
            System.out.println("我是服务器,客户登录信息为:" info);
        }           
        //关闭资源
        br.close(); 
        is.close();
        socket.close();
        serverSocket.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
代码语言:javascript复制
//客户端
 try {
            //建立客户端Socket连接,指定服务器的位置以及端口
            Socket socket=new Socket("localhost",8800);
            //打开输入输出流
            OutputStream os=socket.getOutputStream();
            //发送客户端登录信息,即向输出流写入信息
            String info="用户名:Tom;用户密码:123456";
            os.write(info.getBytes());
            //关闭资源
            os.close();
            socket.close();
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

0 人点赞