网络编程(1)——ip地址、网络端口、通信协议

一、网络编程

  • 网络编程的主要问题:1、如何准确定位到网络上的一台或多台主机(ip+端口),2、找到主机之后如何进行通信
  • 网络编程的要素:1、IP和端口号,2、网络通信协议(udp、tcp等)

二、IP地址

1、ip(InetAddress)地址基础:

  • 唯一定位一台网络上的计算机
  • 127.0.0.1:本机localhost
  • ip地址的分类:ipv4/ipv6、公网-私网
    • ipv4:127.0.0.1 ,4个字节组成,每个字节(如127)范围0~255
    • ipv6: 2001:0bb2:aaaa:0015:0000:0000:1aaa:1312,由8个无符号整数组成,每个整数用16进制表示,每个16进制数是4位,因此一个整数有16位,共8个整数,共计128位
    • 公网(互联网)、私网(局域网):ABCD类地址、192.168.xx.xx
  • 域名:记忆IP问题

2、 java的InetAddress类:

public class TestInetAddress {
     
    public static void main(String[] args) {
     
        try {
     
            //1、本机地址
            InetAddress inetAddress1=InetAddress.getByName("127.0.0.1");
            System.out.println(inetAddress1);
            InetAddress inetAddress3=InetAddress.getByName("localhost");
            System.out.println(inetAddress3);
            InetAddress inetAddress4=InetAddress.getLocalHost();
            System.out.println(inetAddress4);
            System.out.println("===============");
            //2、域名ip
            InetAddress inetAddress2=InetAddress.getByName("www.baidu.com");
            System.out.println(inetAddress2);
            System.out.println("===============");
            //3、常用方法
            System.out.println(inetAddress2.getHostAddress());//获取ip
            System.out.println(inetAddress2.getHostName());//获取域名
        } catch (UnknownHostException e) {
     
            e.printStackTrace();
        }
    }
}

网络编程(1)——ip地址、网络端口、通信协议_第1张图片

三、端口

1、端口的基础知识

  • 端口表示计算机上一个程序的进程,不同的进程有不同的端口号,用来区分软件
  • 规定范围0~65535
  • TCP、UDP协议,不同协议之间可以使用同一个端口号,但是同一个协议下不能使用同一个端口
  • 端口分类
    • 共有端口0~1023
      • HTTP:80
      • HTTPS:443
      • FTP:21
      • Telent:23
    • 程序注册端口1024~49151,分配用户或程序
      • Tomcat:8080
      • MySQL:3306
      • Oracle:1521
    • 动态、私有:49152~65535

2、java的InetSocketAddress类:

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

        System.out.println("=================");

        System.out.println(socketAddress1.getHostName());
        System.out.println(socketAddress1.getAddress());
        System.out.println(socketAddress1.getPort());
    }
}

网络编程(1)——ip地址、网络端口、通信协议_第2张图片

四、通信协议

1、基础

  • 网络通信协议:速率、传输码率、代码结构、传输控制
  • 协议的分层:TCP/IP的四层协议:应用层(用户应用软件:qq)、传输层(通信)、网络层(网络封包)、数据链路层(光纤等)
  • TCP/IP协议(传输层):
    • TCP:用户传输协议
    • UDP:用户数据报协议
  • TCP、UDP对比
    • TCP:打电话
      • 连接、稳定
      • 三次握手、四次挥手
      • 客户端、服务端
      • 传输完成,释放连接,效率低
    • UDP:发短信
      • 不连接、不稳定
      • 客户端服务端没有明确界限
      • 不管有没有准备好,都可以发送
  • 三次握手(连接)
    • 第一次:客户端发送SYN(同步序列编号)包到服务器,等待服务器确认
    • 第二次:服务器收到SYN包,先确认SYN包,然后向客户端发送一个SYN+ACK包
    • 第三次:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,发送完毕后客户端和服务器TCP连接成功,完成三次握手
  • 四次挥手(断开)
    • 第一次:客户端发送一个FIN(请求释放连接),关闭客户到服务器的数据传送
    • 第二次:服务器收到FIN,发回一个ACK
    • 第三次:服务器关闭客户端的连接,发送一个FIN给客户端(表示已经准备好释放连接)
    • 第四次:客户端发回ACK确认

你可能感兴趣的:(网络协议)