网络编程(之二:IP地址、端口、通信协议)

网络编程(之二:IP地址、端口、通信协议)

一、IP地址

Java里面的IP类为:java.net. InetAddress;

此类表示Internet协议(IP)地址。

IP地址是由IP使用的32位或128位无符号数字,构建UDP和TCP协议的低级协议。 IP地址结构由定义RFC 790: Assigned NumbersRFC 1918: Address Allocation for Private InternetsRFC 2365: Administratively Scoped IP MulticastRFC 2373: IP Version 6 Addressing Architecture 。 InetAddress的一个实例由一个IP地址和可能的相应主机名组成(取决于它是用主机名构造还是已经完成了反向主机名解析)。

IP是用来干什么的?

唯一定位一台网络上的计算机

特殊的IP地址:127.0.0.1;本机 localhost

IP地址分类

  • IPV4/IPV6

    • IPV4:192.0.2.235 IPv4使用32位2进制位的地址,因此大约只有43亿个地址。最初每一个连接入互联网的用户都要分配使用一个IPv4 地址,因此未分配的IPv4地址越来越少,由此产生了IPv4地址耗尽的问题。为了根本解决IPv4地址耗尽的问题,IPv6应运而生
    • IPV6:2001:0DB8:0000:0023:0008:0800:200C:417A IPv6的地址长度为128位,是IPv4地址长度的4倍。于是IPv4点分十进制格式不再适用,采用十六进制表示。
  • 公网(互联网)/私网(局域网)

  • 域名:由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。

代码实现

package cn.chao.Network.Lesson;

import java.net.InetAddress;
import java.net.UnknownHostException;

//测试ip
public class TestInetAddress {
    public static void main(String[] args) {
        try{
            //查询本机地址
            InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1");
            System.out.println(inetAddress1);
            InetAddress inetAddress2 = InetAddress.getByName("localhost");
            System.out.println(inetAddress2);
            InetAddress inetAddress3 = InetAddress.getLocalHost();
            System.out.println(inetAddress3);
            //查询网络ip地址
            InetAddress inetAddress4 = InetAddress.getByName("www.csdn.net");
            System.out.println(inetAddress4);
        }catch (UnknownHostException e){
            e.printStackTrace();
        }
    }
}

二、端口

端口表示计算机上的一个程序的进程;

  • 不同的进程有不同的端口号!用来区分软件!

  • 端口是通过端口号]来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。

  • TCP端口和UDP)端口。由于TCP和UDP 两个协议是独立的,因此各自的端口号也相互独立,比如TCP有235端口,UDP也 可以有235端口,两者并不冲突。

端口分类

  • 公有端口 0-1023

    • HTTP :80
    • HTTPS : 443
    • FTP : 21
    • Telent : 23
  • 程序注册端口 1024-49151 分配给用户或者程序

    • Tomcat : 8080
    • MySQL : 3306
    • Oracle :1521
  • 动态、私有:49152-65535

代码实现

package cn.chao.Network.Lesson;

import java.net.InetSocketAddress;

public class TextInetSocketAddress {
    public static void main(String[] args) {
        InetSocketAddress socketAddress1 = new InetSocketAddress("127.0.0.1",8080);
        InetSocketAddress socketAddress2 = new InetSocketAddress("localhost",8080);
        System.out.println(socketAddress1);
        System.out.println(socketAddress2);

        System.out.println(socketAddress1.getAddress());
        System.out.println(socketAddress1.getHostName());//地址
        System.out.println(socketAddress1.getPort());//端口

    }
}

三、通信协议

网络通信协议是一种网络通用语言,为连接不同操作系统和不同硬件体系结构的互联网络提供通信支持,是一种网络通用语言。

TCP/IP协议簇:
  • TCP : 用户传输协议
  • UDP :用户数据包协议
  • IP :网络互连协议
TCP UDP 对比

TCP:打电话

  • 连接稳定

  • 三次握手,四次挥手

    最少需要三次,保证稳定连接!
    A:你愁啥?
    B:瞅你咋地?
    A:干一架吧!
    
    需要四次,断开连接
    A:我们分手吧!
    B:我们真的分手了吗?
    B:我们真的不能谈一谈吗?
    A:我要走了!
    
  • 客户端,服务端

UDP:发短信

  • 不连接,不稳定
  • 客户端,服务端没有明显界限
  • DDOS攻击
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是选择了面包

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值