网络编程——基本概念

一、概念
Ip:区分每一台计算机
端口:区分每一个软件
URL:区分软件上的不同资源
协议:就是交流的方式
TCP协议:面向连接,更安全,较低效(常应用于电话聊天等)
UDP协议:非面向连接,不安全,较高效(常应用于QQ聊天,邮箱等)
二、网络分层

OSI        TCP/IP协议集
应用层
表示层         ——应用层
会话层

传输层         —— 传输层

网络层         ——网络层

数据链路层     ——网络接口
物理层

注意:OSI网络通信协议模型知识一个参考模型,而TCP/IP协议是事实上的标准

三、IP
IP:定位一个节点:计算机、路由、通讯设备等
* InetAddress:多个静态方法
* 1、getLocalHost:本机
* 2、getByName:根据域名DNS 或IP地址-->IP
*
* 两个成员方法:
* 1、getHostAddress:返回地址
* 2、getHostName:返回计算机名

public class IPTest {
       public static void main(String[] args) throws UnknownHostException {
        //使用getLocalHost方法创建InetAddress对象 本机
        InetAddress addr=InetAddress.getLocalHost();
        System.out.println(addr.getHostAddress());//返回IP
        System.out.println(addr.getHostName());//输出计算机名
    }
}

四、端口

端口
* 1、区分软件
* 2、2个字节0-65535 UDP TCP
* 3、同一个协议端口不能冲突
* 4、定义端口越大越好
* InetSocketAddress
* 1、构造器
* new InetSocketAddress(地址|域名, 端口);
* 2、方法
* getAddress()
* getHostName()
* getPort()

public class PortTest {
    public static void main(String[] args) {
        //包含端口
        InetSocketAddress socketAddress =new InetSocketAddress("127.0.0.23", 8080);
        InetSocketAddress socketAddress2 =new InetSocketAddress("localhost", 9000);
        System.out.println(socketAddress.getHostName());
        System.out.println(socketAddress.getAddress());
        System.out.println(socketAddress.getPort());
        System.out.println(socketAddress2.getHostName());
        System.out.println(socketAddress2.getAddress());
        System.out.println(socketAddress2.getPort());
    }
}    

五:URL

URL:统一资源定位器,互联网三大基石之一(html,http),区分资源
* 1、协议
* 2、域名、计算机
* 3、端口:默认80
* 4、请求资源
* http://www.baidu.com:80/index.html?uname=shsxt&age=18#a

public class URLTest01 {
    public static void main(String[] args) throws MalformedURLException {
        URL url=new URL("http://www.baidu.com:80/index.html?uname=shsxt&age=18#a");
        System.out.println("协议:"+url.getProtocol());
        System.out.println("域名或ip:"+url.getHost());
        System.out.println("端口:"+url.getPort());
        System.out.println("请求资源:"+url.getFile());
        System.out.println("请求资源:"+url.getPath());
        
        //参数
        System.out.println("参数:"+url.getQuery());
        //锚点
        System.out.println("锚点:"+url.getRef());
    }
}
原文地址:https://www.cnblogs.com/Leia2/p/12962032.html